构建基于RTLinux的嵌入式系统研究与开发
引 言
Linux或经过简单改进的Linux都是不能运行实时任务,这是因为Linux的“公平”时间分配的调度算法要保证分配给每一个用户程序占用CPU时间,然而实时任务对执行时间要求很严格,如每隔200ns从传感器取样的实时任务。Linux系统的虚拟内存的内存管理使得任何用户进程的页面在任何时刻都能被交换到硬盘或外存储器中,这样在Linux中将需要的页面返回到RAM中也需要花费一段不确定的时间。另外,对任务执行的时间和任务完成时间都是没有精确的可预知性的。Linux操作系统的“天生”缺陷使得Linux无法满足实时嵌入式系统的实时系统要求。在本文中我们主要讨论实时操作系统RTLinux和Linux有机集成在一起,构成了一个全新的实时系统。
RTLinux的实现机理
RTLinux是美国新墨西哥州大学计算机科学系VictorYodaiken和Micae Brannanov开发的。它在Linux内核的下层实现了一个简单的实时内核,而Linux本身作为这个实时内核的优先级最低的任务,所有的实时任务的优先级都高于Linux系统本身的以及Linux系统下的一般任务。RTLinux的体系结构如图1所示。
RTLinux的设计思想是:应用硬件的实时约束将实时程序分割成短小简单的部分,较大部分承担较复杂的任务。根据这一原则,将应用程序分为硬实时和程序2个部分。硬件实时部分被作为实时任务来执行,并从外部设备拷贝数据到一个叫做实时有名管道(RTFIFO)的特殊I/O端口;程序主要部分作为标准Linux进程来执行。它将从RTFIFO中读取数据,然后显示并存储到文件中,实时部分将被写入内核。设计实时有名管道是为了使实时任务在读和写数据时不被阻塞。图2所示的是实时有名管道结构图。
RTLinux通过对标准Linux内核进行改造,将Linux内核工作环境作了一些变化。如图2所示,在Linux进程和硬件中断之间,本来由Linux内核完全控制,现在在Linux内核和硬件中断的地方加上了一个RTLinux内核的控制。Linux的控制信号都要先交给RTLinux内核进行处理。在RTLinux内核中实现了一个虚拟中断机制,Linux本身永远不能屏蔽中断,它发出的中断屏蔽信号和打开中断信号都修改成向RTLinux发送一个信号。如在Linux里面使用“SI”和“CLI”宏指令,让RTLinux里面的某些标记做了修改。也就是说将所有的中断分成Linux中断和实时中断两类。如果RTLinux内核接收到的中断信号是普通Linux中断,那就设置一个标志位;如果是实时中断,就继续向硬件发出中断。在RTLinux中执行STI将中断打开之后,那些设置了标志位表示的Linux中断就继续执行,因此,CLI并不能禁止RTLinux内核的运行,却可以用来中断Linux。Linux不能中断自己,而RTLinux可以。
相关文章
- 2024-07-03基于VXI总线的水声基阵信号采集与分析
- 2024-02-07连续累计自动衡器(皮带秤)耐久性试验的讨论
- 2023-10-19磁光调制锁相椭偏仪与多层磁光薄膜测试系统
- 2024-10-23海洋渔业科学与技术专业工程力学课程教与学的探讨
- 2024-05-17DAW30-100弯板式称重系统在高速公路计重收费中的应用
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。