DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1711|回复: 2
打印 上一主题 下一主题

[待整理] 基于Linux多任务操作系统扫频仪的研究

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 13:08:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  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多任务操作系统进行程序编写,能减少程序设计的工作量和复杂程度,大大缩短开发周期。

作者:胡鸿豪,吴勇翀,文琳莉,宁小平
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
沙发
发表于 2020-9-16 14:22:20 | 只看该作者
谢谢楼主分享!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-24 01:58 , 耗时 0.103269 秒, 20 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表