应用程序的开发
编写应用程序时,将实时系统的应用程序分为实时任务和非实时任务。实时任务是实时模块,作为μClinux核心可加载模块运行在核心态。它的设计应尽可能简单,仅包含那些有强实时要求的处理模块,如实时数据采集、外部设备控制等。非实时任务是普通的μClinux进程,在用户态执行,完成大部分的数据处理、图形显示和通讯等任务。所有的实时任务均按照对实时性要求的高低来进行优先级排队,系统根据优先级的高低来顺序启动各个实时任务。而位于用户态的界面,当作一个背景程序来执行。核心态的任务优先级总是高于用户态的界面任务,且不能被其抢占。实时任务和非实时任务之间可通过FIFO队列和共享内存等方法通信。基于RTAI的μClinux应用程序结构图如图2所示。
实时系统的启动和结束可以用一个Shell程序来执行,它的功能是实现各任务模块的加载和卸载,以及用户界面的运行。Shell程序是介于使用者和操作系统的内核程序间的一个界面,使用户更为方便的使用操作系统。由于各个模块之间具有相互依赖性,所以在加载和卸载各个模块时按照一定的顺序。首先要将 RTAI提供的实时模块加载,包括rtai、rtai_sched、rtai_fifos和rtai_shm等模块;然后装入系统的各个实时模块。卸载模块的时候按照相反的顺序依次卸载。实时系统的程序流程图如图3所示。
6.结束语
作者已将改造后的μClinux系统应用在了江苏省普通高校自然科学研究计划资助项目“机房环境设备安全监控软件平台的研制”等项目中,均取得了良好的效果,解决了μClinux在实时性方面的缺陷,满足了设计要求。
本文作者创新点是:实现了RTAI在μClinux上的移植,形成了RTAI和μClinux相结合的双内核嵌入式系统运行方案,既满足了嵌入式应用的需求,又保证了系统的硬实时性。
参考文献
[1]李俊平,梅洪,单家元.基于Linux的实时平台的研究[J].微计算机信息,2005,21(7):21-23.
[2]林浒,蔡光起等.实时化的Linux系统及其实时性能的研究[J].小型微型计算机系统,2004,25(8):1454-1457.
[3] WANG Y C, LIN K J. Implementing a general real-time frame-work in the RED-Linux real-time kernel [C]. IEEE Real-timeSystem Symposium, 1999.
[4] Raj Rajkumar, Kanaka Juvva, Anastasio Molano, et al. Resource kernel: A resource-centric approach to real-time and multimedia systems[C]. Proceedings of the SPIE/ACM Conference on Mul-timedia Computing and Networking, 1998.
[5]马学文,朱名日等.uClinux操作系统实时性能的研究与实现[J].计算机工程与科学,2005,27(3):103-104.
[6]RTAI主页[EB/OL].htp://www.rtai.org/.
|