当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于Linux多任务操作系统扫频仪的研究

1 引言

扫频仪是适用于测量系统频率响应的仪器。系统的频率响应包含幅频响应和相频响应2个方面。目前,在扫频仪的实现中,硬件平台一般基于8位或16位单片机,软件实现大多采用单流程循环控制方式,这种方法存在以下缺点:

(1)除中断服务程序以外,各程序模块没有优先级的区别,被主循环简单地轮转调用,实时性差,响应时间无法预料;

(2)运算能力较差,难以完成较复杂的控制算法;

(3)硬件平台依赖性强,不利于应用软件的开发、升级与移植;

(4)针对较复杂的控制系统,在缺乏有力的多任务调度机制的情况下,应用软件不仅实现难度大,且可靠性难以保证;

(5)分布式多任务处理能力差,网络化、智能化支持难以适应长远发展需要。

嵌入式Linux可以很好地解决上述问题。Linux不仅源代码免费开放和拥有世界范围内广泛的技术支持,而且具备多硬件平台支持;核心代码效率高、代码量小;系统稳定性和可靠性高;系统可根据特定需求进行定制与组态,且易于升级等特点,是真正的多用户、多任务操作系统

本文在系统分析扫频仪硬件结构基础上,根据Linux的多任务并行处理的特点,进行扫频仪的软件设计。

2 系统硬件组成

系统的硬件设计方案,如图1所示。

(1)DDS信号源以高集成度频率合成器AD9854为核心,S3C2410X通过向AD9854发送频率控制字使其产生多种正弦波,然后经过7阶低通滤波、信号放大、幅度控制、输出低杂散高稳定度的正弦波。

(2)由于扫频仪按键较多,不能按照传统的设计方式设计键盘电路,本文以ZLG7290芯片为基础,键盘通过I2C总线连接CPU,这样节省CPU的接口资源。

(3)信号检测调理电路主要用来对参考信号和被测信号进行放大和幅度相位检测,然后通过低通滤波送A/D转换。

3 系统软件设计

Linux具有内核小、效率高、源代码开放、内核直接提供网络支持等优点。但嵌入式系统的硬件资源毕竟有限,因此不能直接把Linux作为操作系统,需要针对具体的应用通过配置内核和嵌入式C库对系统进行定制,使整个系统能够存放在容量较小的FLASH中。Linux的动态模块加载,使Linux的裁减极为方便,高度模块化的部件使得添加和删除变得非常容易。基于Linux的上述优点,本文实现平台使用的操作系统是对Linux进行定制的arm-linux

3.1 软件总体设计

扫频仪的软件设计主要分为2部分:硬件驱动程序;多任务应用程序。扫频仪系统软件结构图如图2所示,其中最内层为操作系统层,中间层为应用层,最外层为硬件驱动层。当操作系统启动后,首先加载硬件驱动层接口程序,然后系统内核按照应用层的各个任务优先级及其就绪状态在任务间切换运行。

3.2 系统多任务设计

在将一个软件系统划分为并行任务时,首先要分析数据流图中数据的变换,确定哪些变化可以并行,哪些变换本质上必须顺序执行。一个变换可以成为一个任务,或者几个变换组成一个任务。决定系统中任务划分的最主要因素是系统中所实现功能间的异步关系,即任务与任务间是如何相互触发和协调的,这可以通过任务间的通信来解决。按照并发性以及任务之间同步等特点和要求,对扫频仪系统进行任务划分,如图3所示。

系统监测与保护任务保证系统安全可靠,出现故障可以被自检出来,同时能诊断出扫频仪发生故障的部位。

数据采集任务由于扫频仪需要不断从A/D芯片读取采集到的幅度和相位信号数据,否则会被后来的数据覆盖,从而造成掉点,因此开辟一个数据采集进程专门处理读取数据。数据采集进程利用互斥锁保护输入缓冲区,避免竞争;利用消息驱动数据处理模块和显示模块进行相应操作。

数据处理任务首先通过数字滤波技术,滤出干扰源;然后进行计算处理,判断扫描频率点数是否到达要求,决定扫频是否结束,将数据转换成图形显示格式;最后送显示模块显示。由于数据处理模块计算量较大,因此也为其开辟一个单独的进程来计算,避免影响其他模块工作。

显示任务图形界面开发采用的开发工具为MiniGUI,使用MiniGUI的图形控件资源,软件的界面开发非常方便。显示模块主要负责将相位和幅度信号以图形的方式显示出来。由于绘图是一件相当耗费资源的工作,故用一单独的进程实现。

USB通讯任务 对被测物体测试完成后,进行测试数据的拷贝或打印。

3.3 多任务通信

在扫频仪程序中引入消息概念,将进程的执行条件转换为消息,由消息对相应的进程进行激活,并由进程调度模块实现调度。消息定义为:当某进程完成时,进程设置相应标志,不同的标志代表不同的消息。消息在多进程中的作用相当于桥梁,使进程间既相互独立又有机关联,进程之间不能直接调用,需借助消息,由进程调度模块实施。例如:数据显示模块中有一部分内容是将分析计算的结果打印到屏幕上,为了节省资源开销,将其放在主进程里,通过消息机制处理。

中断服务程序则是通过发送信号给进程调度模块,说明已经发生中断。例如按下扫频功能键,中断处理程序产生一个信号就退出中断,而调度模块则依据接收的信号,激活数设置模块工作。

4 结 语

应用基于Linux嵌入式多任务操作系统的扫频仪,结合S3C2410X的32位微处理器,不仅简化软硬件设计,能够方便地测量被测网络的幅频曲线和相频曲线,更重要的是减少扫频响应时间,增加数据打印和分析处理功能。利用MiniGUI开发的图形界面友好,人机交互性强。基于Linux多任务操作系统进行程序编写,能减少程序设计的工作量和复杂程度,大大缩短开发周期。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

CPU亲和度通过限制进程或线程可以运行的CPU核心集合,使得它们只能在指定的CPU核心上执行。这可以减少CPU缓存的失效次数,提高缓存命中率,从而提升系统性能。

关键字: Linux 嵌入式

一个线程只能属于一个进程,而一个进程可以有多个线程,线程是进程的一部分,就像工人是工厂的一部分。资源是分配给进程的,同一进程的所有线程共享该进程的全部资源,就像工厂里的工人共享工厂的设备和场地。处理机(CPU)则是分给线...

关键字: 进程 线程

DXC内部新成立的Boomi卓越中心(COE),将成为跨行业客户的创新枢纽 DXC与Boomi携手助力客户整合AI智能体,为规模化应用代理式AI做好准备 弗吉尼亚州阿什伯恩2025年8月19日 /美通社/ --名列财...

关键字: 进程 AI BSP 自动化

在Linux系统性能优化中,内存管理与网络连接处理是两大核心领域。vm.swappiness与net.core.somaxconn作为关键内核参数,直接影响系统在高负载场景下的稳定性与响应速度。本文通过实战案例解析这两个...

关键字: Linux 内存管理

对于LLM,我使用b谷歌Gemini的免费层,所以唯一的成本是n8n托管。在使用了n8n Cloud的免费积分后,我决定将其托管在Railway上(5美元/月)。然而,由于n8n是开源的,您可以在自己的服务器上托管它,而...

关键字: 人工智能 n8n Linux

在Linux系统管理中,权限控制是安全运维的核心。本文通过解析/etc/sudoers文件配置与组策略的深度应用,结合某金融企业生产环境案例(成功拦截98.7%的非法提权尝试),揭示精细化权限管理的关键技术点,包括命令别...

关键字: Linux 用户权限 sudoers文件

Linux内核中的信号量(Semaphore)是一种用于资源管理的同步原语,它允许多个进程或线程对共享资源进行访问控制。信号量的主要作用是限制对共享资源的并发访问数量,从而防止系统过载和数据不一致的问题。

关键字: Linux 嵌入式

在云计算与容器化技术蓬勃发展的今天,Linux网络命名空间(Network Namespace)已成为构建轻量级虚拟网络的核心组件。某头部互联网企业通过命名空间技术将测试环境资源消耗降低75%,故障隔离效率提升90%。本...

关键字: Linux 云计算

在Linux内核4.18+和主流发行版(RHEL 8/Ubuntu 20.04+)全面转向nftables的背景下,某电商平台通过迁移将防火墙规则处理效率提升40%,延迟降低65%。本文基于真实生产环境案例,详解从ipt...

关键字: nftables Linux

在Linux设备驱动开发中,等待队列(Wait Queue)是实现进程睡眠与唤醒的核心机制,它允许进程在资源不可用时主动放弃CPU,进入可中断睡眠状态,待资源就绪后再被唤醒。本文通过C语言模型解析等待队列的实现原理,结合...

关键字: 驱动开发 C语言 Linux
关闭