μC/OS-II的多任务系统实时性分析与优先级分配
试任务都要在LCD的各自区域显示,但是LCD不能实现2个以上位置同时进行显示处理,所以当涉及显示过程时需要禁止任务切换,否则会造成显示混乱。例如,当一个低优先级任务的显示工作还没有完成时,若发生了任务切换,则高优先级任务去进行另一个显示。当重新切换回低优先级任务后就没有办法继续未完的显示,因为显示位置已经被高优先级任务所改变。
③ 对于打印机和串口,也有类似的问题,不允许一个结果尚未打印完成又去打印另一个结果。禁止任务切换的办法不适合这里,因为打印和传送耗时比LCD显示长很多,禁止任务切换会影响到测试的实时性,它们单独建立后台任务的原因也在于此。
数据打印和传送任务循环扫描各个通道的请求服务标志,当标志有效时即为该通道服务,服务完毕清除该标志,因数据打印和传送任务的优先级较低而不会对其他测试任务造成任何影响。被服务的通道测试任务循环检测请求服务标志,检测到标志被清除后才可以继续下次测试,表示此次数据已经输出。其他高优先级测试任务不会影响打印过程,因为先检测到标志的通道独占资源,直至传送和打印完成后,打印任务才去检测下一个标志;高优先级任务的输出请求要等低优先级输出完毕才能得到响应,优先级反转在这里是正确的。
6 结论
本文从嵌入式系统的并行程序出发,结合实时性的要求,讨论了μC/OS-II操作系统环境下的任务划分和优先级确定的相关问题,提出了一些在μC/OS-II中用于减少资源耗用和同时运行的任务数量的改进措施。实践证明,这些措施可以充分发挥μC/OS-II小巧精悍的特点,提高程序代码的重用性,节约宝贵的RAM资源。
本系统与采用双通道测试、没有RTOS、采用前后台方式解决并行问题的方法比较[5],后者占用了54 KB代码,在人机界面和并行度上均不及前者。前者在加入了μC/OS-II和GUI,并能进行四通道测试的情况下,仅有59 KB代码;排除更大的汉字库容量后,实际代码大小几乎与原来相同,性能却有了很大的提高。
- μC/OS-II下通用驱动框架的设计与实现(07-23)
- 基于μC/OS-II嵌入式系统的低功耗开发(07-08)
- 基于S3C44B0X+μcLinux的嵌入式以太网设计(07-08)
- 蓄电池化成控制系统中显示功能的实现(11-05)
- 嵌入式实时操作系统μC/OS-II 在P89V51RD2中的移植(04-09)
- LPC2292的伪中断与伪中断处理(03-25)