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多任务操作系统进行程序编写,能减少程序设计的工作量和复杂程度,大大缩短开发周期。