基于ARM9和μC/OSII的多频道数据采集系统设计

发布者:和谐共融最新更新时间:2011-08-01 关键字:ARM9  μCOSII  多频道数据采集 手机看文章 扫描二维码
随时随地手机看文章
  引言

  随着IT技术、电子技术、通信技术、以及自动控制技术的飞速发展,对工业现场数据的高速实时采集就成为电子产品和工业控制技术发展不可避免的一个环节。

  本文针对高速实时多任务数据采集中的多任务实现算法以及实时性、实效性和高速性的要求,提出了基于ARM9和μC/OSII操作系统的智能化设计方案,实现了任务优先级动态调度、系统工作参数动态设定、系统内部软件智能化设计,针对低速外围设备进行了系统优化,并提高了系统可靠性改善了内部任务同步性。

  1  整体电路设计

  整个采集系统的硬件电路如图1所示。首先利用多路调制电路对12路信号进行调制,这部分包含相应的信号转换、抗干扰、以及初步的信号处理等,使得各路采集信号能够达到ARM9内核对信号采集的要求。经多路选择和ADC采样后进入ARM9内核。为了实现对整个系统工作状态的实时监视、实时控制和实时调节,设置了上位机监视器和现场显示触摸屏,将用户所有要求显示的信息在上位机显示输出或者在现场LCD同步显示输出。采样按照采样频段分为高频段(300~200 ksps)、中频段(200~100 ksps)、和低频段(小于100 ksps)3个频段,每个频段由4个外部采样通道组成。ARM9内核与上位机的通信利用UART和RS232转换电路来实现。系统工作电源由统一的电源供给,在实现电压转换后对PC机和ARM9内核以及相应的工作电路提供电源支持。

图1  数据采集系统硬件电路

  2  系统总体软件设计思路

  系统的软件设计原理如图2所示。12路采集信号经调制电路多路选择和ADC采样后进入各个采集任务内部通道。每一路采集通道都设计独立的数据采集、数据存储、数据处理以及数据提交任务。也就是说,每一路外部采集通道都对应一个独立的内部数据通道,而且本通道数据只在本通道内进行存储、处理和传递。各个内部数据通道任务之间只有在系统调度时执行时间上的先后关系、优先级关系,没有数据耦合关系。

图2  系统软件设计原理图

  命令扫描部分由独立的上位机和下位机扫描任务完成对上位机监视器和下位机触摸屏的实时监控,一旦检测到用户命令,立即将其发送给命令解析和处理任务,由该任务对用户命令进行分析处理。命令处理完后将提取的结果发送给用户要操作的采样通道,使之按照用户要求运行。[page]

  各个频段的各个通道采集任务均设置两个数据缓冲区。双数据缓冲区为采样任务顺利存储提供了双重保证,使得采样工作一旦结束就有可用缓冲区,就可立即将数据存储而后进行下一次采集。也使得后续的数据处理任务减少数据等待时间,能迅速得到当前采样通道需要处理的数据,并在最短的时间内处理发送给下一级任务。

  采样、数据显示、命令扫描都涉及外围设备,是整个系统所有任务里面运行速度最慢的,针对采样任务设置双数据缓冲区可以很大幅度地改善由于采样速度慢而造成的系统速率下降问题,显示和命令扫描部分的优化设计将在下文中详细说明。

  3  内部软件调度算法

  系统内部各个频段命令如图3所示。命令扫描函数捕捉到用户命令后,对用户命令进行验证、分析、提取,而后将提取结果以广播的方式发送至各个频段的命令等待队列。该队列如得到新的命令,将用户命令发送给本队列下辖的各个采样任务函数,用户命令将立即得到执行,包括通道切换、变换采样周期、改变当前任务优先级、显示特定通道数据等。如没有得到新的命令,等待超时后采样任务按照原有方式继续工作。这也是一种智能化设计,以很简单的方式实现了按照用户命令随时对任何通道的查看、监督、操作、工作状态切换、通道切换、由单通道到所有通道并行实时采集切换等所有功能的任意切换。

图3  各个频段内部命令

  3.1  任务优先级设置及采样任务优先级动态调度

  μC/OSII操作系统是基于优先级的抢占式操作系统,所有任务必须有各自独立且唯一的优先级[1]。命令扫描和数据显示分别设置为最高优先级和最低优先级。扫描函数的最高优先级可以确保随时对用户命令进行响应,而显示任务由于其运行速速慢,将其设置为最低优先级。只要系统设计合理,适当避免低优先级任务的饥饿现象,即可实现将用户有效信息显示输出。

  内部优先级设置规则是,低频段、中频段、高频段3个频段的任务之间优先级依次递减。低频段的采样周期明显比高频段长,在低频段数据采集的空闲时间里系统可以顺利地将CPU使用权切换给其他任务,使其他任务得到CPU使用权并执行。每个频段内部的各个任务的优先级从采样到数据存储、数据处理、数据提交依次递减。

  为了使得整个系统实现优先级动态调度也可以修改其他采样参数,在软件设计时将所有频段采样任务的优先级、采样周期以全局变量的形式在进入操作系统之前进行设置,并将其定义为volatile格式分配独立的变量存储地址。而后设立独立的扫描任务,来专门完成这些参数的判断、修改、存储和动态更新。这样便使得系统除了可以按照根据采样周期设计的初始化优先级和初始化参数运行外,还可以依据用户自身需要对各个频段、各个通道的采样任务优先级以及采样频率进行设置和修改。修改完并确认后,修改任务会保存、更新当前系统工作参数并退出操作系统,而后重新启动并初始化,整个采集系统将按照全新的状态开始工作。当然,在这里用户优先级和采样周期设置是受限的,必须符合上文提及的优先级规则及各个频段对采样周期的要求。

 3.2  任务时限设置

  为了对整个系统的时间调度进行优化,首先说明几个内部工作时间。i386体系和Linux2.5内核中操作系统节拍率都设置为1000 Hz[2]。在这里将μC/OSII操作系统调度时间OS_TICKS_PER_SEC也设置为1000,也就是说操作系统的任务调度以ms为单位。ARM9内核CPU工作频率设置为400 MHz,即CPU机械周期以ns为单位。外设包括上位机命令扫描和上位机、下位机显示部分工作都以s为单位。μC/OSII系统中任务切换、调度及延时都以系统节拍率为单位,而内部代码的运行是以机械周期为单位。内部任务时限可以以节拍律为单位,也可以以实时时间为基准,获得一个绝对时间差。

  单个采样任务通道内部只有采样任务需要时限设置。为了达到智能化,用消息队列的等待延时替代了采样任务时限,而该延时便是本通道的采样周期。其他的后续任务包括内存开辟、数据处理、数据发送,都依次等待上一级任务消息,受上一级任务钳制不设置任务时限。显示任务时限按ms设置为绝对时间差。[page]

  3.3  针对外设的时间优化

  针对命令扫描和解析任务,将其设置为中断方式,在检测到有用户命令输入时发生中断,在中断里对用户命令进行解析、分析、提取和处理。在中断下半部分对命令进行广播式发布,发布到各个采样任务函数使其立即刷新执行。因为用户工作方式改变,命令刷新频率并不高而且任务量不大,所以完全可以利用中断的快速处理来实现这种功能。

图4  显示任务工作原理图

  在处理完命令扫描和采样任务之后,影响整个系统性能的就剩下上位机和下位机显示部分了。显示任务工作原理如图4所示,利用μC/OSII系统提供的消息队列对显示部分进行改善。分别建立两个长度为16的消息队列和内存块链表,数据提交任务从空闲内存池中得到可用内存块之后将本任务要显示的数据存入该内存块,此时该内存就变成了带有数据的待显示数据块。而后将该内存块的地址以消息的形式注册在显示消息队列上。消息队列的长度设置为16,虽然这里只有12个任务会发送消息给消息队列,但在实时多任务程序中,各个任务的运行是随机的,消息队列在一段时间内得到的消息个数是个不定值,所以留出4个空位作为裕度。而且设置初始值为16的计数信号量来保护消息队列,数据提交任务在提交数据之前先检测该信号量,如该信号量有效就可以发送信号,如信号量无效则需等待,直到有可用信号位时方可将信号发出。在外部硬件操作端,由外部发送任务将消息队列中的消息按照固定速率发送到外部信号线上。

  这样设计,消息队列就相当于一个缓冲区,使得所有提交任务都可以向这个缓冲区发送待显示数据,有效地避免了多个任务争用一个外围设备而引起的死锁、竞争冒险等问题。同时减少了任务数量,减少了任务切换的次数,充分利用了系统时间,提高了系统性能。

  3.4  关键区保护

  多任务设计中每个任务在任何时刻都可能被其他任务打断,必须充分考虑代码的安全性、可重入性、可靠性、饥饿、互锁、死锁等情况。[3]

  为了避免上述情况,任务间消息发送和传递时以及在数据采样时对相应函数体进行关键区保护,在这些函数运行的时候禁止中断和任务调度,以保证数据传递和数据采样的绝对正确性和系统运行的绝对安全性。

  4  极限频率测定及总结

  上位机超级终端接收到的极限频率测试结果如图5所示。

图5  极限频率测量结果

  分别测试了高频段、中频段和低频段的极限频率,结果在CPU使用率80%~90%的情况下测定。该系统成功实现了智能化设计和优先级动态调度、系统参数动态设置等功能,达到了设计指标。

 

 

 

关键字:ARM9  μCOSII  多频道数据采集 引用地址:基于ARM9和μC/OSII的多频道数据采集系统设计

上一篇:AVR单片机实现LED彩灯控制器设计
下一篇:Flash损耗均衡的嵌入式文件系统设计

推荐阅读最新更新时间:2024-03-16 12:39

怎样选择一款合适的核心板
很多工程师在选择嵌入式核心板的时候往往会陷入选择困难症,选择ARM9还是A8平台?选择Linux还是Android、选择创客平台还是主流核心板?选择芯片方案还是核心板方案?本文将为大家提供一些参考意见。 选择硬件平台是一个项目的开始,选择是否正确有时候往往关乎到一个项目的成败。但是当下是一个信息爆炸的年代,放到我们眼前的方案多种多样。作为一名合格的工程师不仅要关注产品性能是否够用,还要把握项目的技术风险、以及后续的采购风险。 1、如何选择硬件平台?     现在比较常见的、性能比较高的有ARM9、A7、A8、A9平台,往往我们在选择平台的时候会陷入很多误区。如果在您的产品当中没有涉及触摸显示或者高分辨率的触摸显示(分辨率大于80
[嵌入式]
基于ARM9的Linux代码移植
简介:介绍了嵌入式Linux移植的方法和过程,给出了嵌入式开发环境下基于硬件平台ARM9的bootloader、Linux内核移植的实现方案,该方案可为嵌入式系统的应用研究提供操作系统层面的支持。 摘要:介绍了嵌入式Linux移植的方法和过程,给出了嵌入式开发环境下基于硬件平台ARM9的bootloader、Linux内核移植的实现方案,该方案可为嵌入式系统的应用研究提供操作系统层面的支持。 O 引言 随着计算机技术、通信技术以及Internet的飞速发展。嵌入式系统已得到越来越广泛的应用。与此同时,嵌入式系统的复杂性也在不断增加,嵌入式操作系统已经成为其中最重要的组成部分。目前,市场上存在着众多的嵌入式操作系统,而在
[单片机]
基于<font color='red'>ARM9</font>的Linux代码移植
基于嵌入式ARM9的墙面平整度检测仪研究与实现
房屋的墙面平整度是衡量房屋建筑质量的一项重要指标。现有的墙面平整度检测方法要么操作不方便且效率低下,如靠尺;要么检测仪器本身比较复杂,不易操作,需要专业的操作技巧,如使用 百分表打点 检测;或者仪器本身比较昂贵,无法广泛推广和使用,如利用无协作目标电子全站仪检测。所以研究一种原理简单,操作方便,价格便宜,体积小,便携式的手持移动墙面平整度检测设备是非常有必要且具一定商业价值的。 1 系统的总体设计 系统的目标是:设计一个嵌入式手持设备,实现对墙面平整度的检测。具体的实现过程为:USB摄像头以小分辨率(320*240)采集动态视频,旋转后直接显示在LCD上,通过观察LCD上的动态显示内容确定所选场景是否满足要求。待出现满足要求的
[单片机]
基于嵌入式<font color='red'>ARM9</font>的墙面平整度检测仪研究与实现
ARM7、ARM9、ARM11、ARM-Cortex系列的关系
ARM公司自2004年推出ARMv7内核架构时,摒弃了以往 ARM+数字 这种处理器命名方法(ARM11之前的处理器统称经典处理器系列),重新启用Cortex来命名,并将Cortex系列细分为三大类: Cortex-A系列:面向性能密集型系统的应用处理器内核 Cortex-R系列:面向实时应用的高性能内核 Cortex-M系列:面向各类嵌入式应用的微控制器内核 Cortex-M系列主要是用来取代经典处理器ARM7系列(比如基于ARMv4架构的ARM7TDMI),Cortex-M比ARM7的架构高了3代,性能也有较大提升,所以新的设计推荐使用Cortex-M,关于从ARM7到Cortex-M的移植详见ARM官网指导 ARM7
[单片机]
ARM7、<font color='red'>ARM9</font>、ARM11、ARM-Cortex系列的关系
德州仪器推出四款全新的的Sitara™ ARM9微处理器
德州仪器 (TI) 宣布推出 4 款提供多种集成型连接选项的全新 Sitara™ ARM9 微处理器 (MPU) 与相应的评估板 (EVM),可为嵌入式工业、医疗以及消费类设计开发人员提供支持各种特定行业外设与接口的高灵活架构,从而可满足这些市场不断发展的需求。 与其它 ARM9 产品不同,TI 的AM1808、AM1806、AM1707 与 AM1705 MPU 高度集成了各种主要接口,如串行 ATA (SATA)、通用并行端口 (uPP) 以及 TI 独特的可编程实时单元 (PRU) 等。PRU 可提供高度灵活的可配置 I/O 控制,使开发人员能够扩展外设功能,并为其设计添加定制接口。AM1x 器件的软硬件可扩展
[嵌入式]
德州仪器推出四款全新的的Sitara™ <font color='red'>ARM9</font>微处理器
ARM9时钟体系
' 这是arm的时钟集成模块,主要想介绍关于arm的时钟体系. S3C2440 有2个PLL(锁相环),一个是mpll,一个是upll pll(锁相环) 是一种产生时钟频率的东西,通常产生时钟频率都是使用晶振(晶体振荡器),不过由于频率固定或者生产成本高等一系列的原因,才产生出pll。pll合成器有外部晶体和对晶体的特定频率加班或者分频的集成pll电路。可以看出,pll可以在本身晶体的限制下自己diy要的频率,而且相对成本也不会很高。 mpll会产生3中种时钟频率:FCLK,HCLK,PCLK FCLK(CPU的频率):主要用于cpu核 HCLK:用于AHB(高速的外设总线) PCLK:用于低速外
[单片机]
<font color='red'>ARM9</font>时钟体系
ARM9代码分析启动MAIN.C
1 #define GLOBAL_CLK 1 2 3 #include stdlib.h 4 #include string.h 5 #include “def.h” 6 #include “option.h” 7 #include “2440addr.h” 8 #include “2440lib.h” 9 #include “2440slib.h” 10 #include “mmu.h” 11 #include “profile.h” 12 #include “memtest.h” 13 14 //extern置于变量或函数之前,以标示变量或函数的定义在别的文件中 15 extern
[单片机]
基于嵌入式ARM9的USB设计与实现
引 言 USB(Universal Serial Bus)是通用串行总线的缩写,因其具有方便易用,动态分配带宽,容错性优越和高性价比等特点,现已成为计算机的主流接口。 随着嵌入式系统的广泛应用,各种小型终端需要开发出与外界联系的USB接口。目前,常用的技术有两种。基于单片机的USB接口,特点是需要外置芯片,电路复杂,留下的CPU资源不多;基于ARM的USB接口,特点是资源丰富,但ARM系列产品较多,如果选型不当,还需要搭接较多的外围电路,且不能很好地发挥CPU性能。 该设计采用三星公司ARM9核的S3C2440A芯片作为CPU,因为该芯片内部集成了控制USB的所有部件,外围电路简单,易于实现。 1 S3C2440A特
[单片机]
基于嵌入式<font color='red'>ARM9</font>的USB设计与实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved