μCOS-II的多任务系统实时性分析与优先级分配

从产品研发的角度,针对小资源系统中使用μC/OS-II的实时性和优先级关系进行了分析。
      提出了可删除任务的灵活应用和可变大小任务栈的实现方法,对于并行任务使用共享资源的几种情况给出了实用解决方案。这些措施获得了良好的任务并行性和实时响应,节约了代码存储空间。
  引言
  μC/OS-II作为一种轻量级的嵌入式实时操作系统,正随着嵌入式微处理器性能的不断提高和外围资源(主要是存储器资源)的不断增加,得到越来越多的应用。例如,原来的51系列单片机,限于6~12 MHz的主频、12Clock的机器周期以及有限的存储器资源,使用μC/OS-II会大大加重系统负担,使应用程序的运行受到影响,特别在快速A/D吸脂器转换等实时性较强的场合,无法得到及时的响应,于是才有了更轻量级的Small RTOS等操作系统的出现。
  但目前更强劲的51内核版本微处理器的大量出现,从根本上改变了这种情况。40 MHz以上的主频,单周期指令的微处理器,加上64 KB的程序空间和8 KB以上的数据空间,这样的系统已经可以流畅地运行μC/OS-II[1]μC/OS-II的移植版本很多,选择一个适合系统CPU的版本,然后进行正确的配置和优化是非常重要的。
      1 系统实时性分析
  本系统工作原理是在恒定温度条件下,任意启动4个测试通道来进行多个项目的并行分析,每个测试通道的工作流程完全相同,如图1所示。
  C8051F120集成了812位高速A/D转换器(ADC0)和88位高速A/D转换器(ADC2)。系统要求对4个光学传感器输出进行采样,ADC0可以构成4个差分测试通道以满足需求。系统还要求能对2路温度实现实时控制,用于监控2个外部温度传感器的输出电压: 一个保证测试部分的温度恒定在37±0.2 ℃,通过对加热组件的PWM控制来完成;另一个用于监测机箱温度,在32 ℃以上时启动风扇散热,30 ℃以下关闭风扇。
 
        图1 通道工作流程
  从图1中可以看出,完整的流程包括信息输入、样本预温、通道启动、试剂添加、微分测
量、结果处理6个阶段。其中前4个属于操作阶段,操作者通过每个通道的进度条、转动条和状态标志块,在LCD界面上获得明确的操作指示,确保每个通道的正确操作。
  要求在通道启动后,能精确地每隔0.1 s完成一次采样并处理数据,所以每个通道的最长处理时间不能超过25 ms,且软件微分法需要较高的A/D转换精度和稳定性。C8051F120中的A/D最高采样速率可达100 ksps,约10 μs/次,因此可采用过采样后的高平滑,同时提高精度和稳定性。简单地计算,如果每个通道采样1 024次后平均计算,则4个通道的A/D总速率为:ADMAX=1 024×4×10=40 ksps
  理论上来说,即使把采样次数再加倍,仍然略小于100 ksps,但考虑到每次A/D中断后,中断服务程序都要简单地处理采样数据,然后才能启动下一次A/D转换,所以实际转换速度是不能达到100 ksps的。通过调试,合理的选择为每个采样点取1 024次平滑滤波。实际处理中,把A/D转换精度从12位扩展到了16位,以满足0~2 000 mV范围内0.1 mV的精度和稳定性,这可以简单地通过改变求均值时的右移次数和扩大满量程基数来完成[2]
  除了实时性的要求必须得到严格满足外,有很多因素需要一并考虑。例如每个通道测试过程中的图形动态显示,通道测试过程中的键值交叉处理,独立于测试之外的实时温度控制,
耗时较多的测试结果传送和打印等,这些人为操作和功能处理均不能中断,或影响正在测试的通道每0.1 s一次的数据采样。另外,还必须提供一项强制结束功能:在任何测试阶段按Exit键,确认后可退出所有测试。
  总体上看,系统在各个通道共用1个键盘、1个串口、1个打印机、1LCD显示器、1A/D转换器的条件下,能进行独立控制,互不干扰地进行各自的测试、计算、显示、传送和输出,满足实时性和并行性要求。
       2 内存分配
  μ涂料刮棒C/OS-II最多有64个任务优先级,根据版本的不同可供用户使用的优先级有56~62个。每个任务优先级不能相同,最大优先级数即用户的最大任务数扭力弹簧[1]
  每个任务必须有自己的任务栈,任务栈由系统物理栈拷贝区和模拟栈两部分组成,是μC/OS-II移植的核心内容[3-4],因此任务的多少直接影响数据RAM的需求。在本系统中,物理栈拷贝区为64字节,模拟栈可以安排16~64字节,这种可变大小任务栈稍后分析。干衣柜
  C8051F120微处理器带有8 KBRAM,系统没有扩展外部数据存储器。首先分析一下系
统数据内存的需求情况:
  系统显示部分使用了240×128点阵的LCD模块和图形GUI,如果建立完整的显示缓冲区,需要240/8×128=3 840字节,约4 KBRAM空间;
  Flash除了用作程序存储器外,剩下的部分作为非易失性数据存储器。每个Flash块为1 KB,故需要1 KBRAM作为Flash的读写缓冲区;
  GUI自身约占去了1 KB内存;
  传感器响应曲线需打印,其点坐标数据(对应打印机384个点行)约占1 KB
  以上共占用7 KB,最终仅剩下1 KBRAM留给操作系统以及用户函数,这显然不够。可通过优化GUI的驱动,去掉LCD的显示缓冲区,增加4 KBRAM,以满足系统需要。
      3 可变任务栈和任务划分
        3.1 可变大小任务栈便携式吸尘器
  一般来说,一个嵌入式系统中不会建立60个以上的任务。从简单的角度考虑,应用μC/OS-II时,建立的所有任务均驻留不删除,使用足够大并且同样大小的堆栈。这种处理
任务的方法会对内存数量提出较高要求。例如50个任务,每个任务栈均为128字节,则需要6 KBRAM
  本着这样一个原则来改进任务划分:不需要驻留的任务运行完毕即删除,可以自身删除,也可以在别的任务里删除。这种任务处理不仅可以重用任务优先级,还可以重用任务堆栈,并且减少同时运行的任务数量。
>焊接钢板

本文发布于:2024-09-23 05:23:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/262202.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:智能卡
标签:任务   通道   系统
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议