新闻中心

EEPW首页>嵌入式系统>设计应用> 嵌入式Linux实时化技术

嵌入式Linux实时化技术

作者:黄武陵 中科院自动化所 何小庆 北京麦克泰软件技术有限公司 艾云峰 中科院研究生院 时间:2010-03-02 来源:电子产品世界 收藏

  ● 双内核方式

本文引用地址://m.amcfsurvey.com/article/106458.htm

内核实时化双内核方式以RT、RTAI和Xenomai等为典型代表。其中RT实现了一个微内核实时操作系统支持底层任务管理、中断服务例程、底层任务通信队列等。普通Linux作为实时操作系统的最低优先级任务,Linux下的任务通过FIFO命名管道和实时任务进行通信,如图1所示。

  当Linux要关闭中断时,实时微内核会截取并记录这个请求,通过软件来模拟中断控制器,而没有真正关闭硬件中断,避免了由于关中断所造成的响应延迟。RT-Linux将系统实时时钟设置为单次触发模式,提供微秒级的时钟精度。RTAI类似RTLinux的实现方式,不同之处在于它修改了体系结构相关代码,形成一个实时硬件抽象层(RTHAL),使其实时任务能在任何时刻中断普通Linux任务,两者之间通过非阻塞队列进行通讯。RTAI将直接修改Linux内核的代码减至最少,具有更好的可移植性。Xenomai以RTAI为基础,也称RTAI /Fusion。采用了Adeos微内核替代RTAI的硬件抽象层。其特色还在于模仿了传统RTOS的API接口,推动传统RTOS应用在GNU/Linux下的移植。类似还有基于Fiasco微内核的L4Linux等开源项目。

  ● 内核补丁方式

  双内核实时方案下,实时任务需要按照微内核实时操作系统提供的另外一套API进行设计。而内核补丁方式则不改变Linux的API,原有应用程序可在实时化后的操作系统上运行,典型的有早期研究性的Kurt-Linux和Red-Linux,商业版本的MontaVista、TimeSys 和Wind River Linux,以及现阶段Ingo Monlnar等人开发的实时抢占补丁内核等[3]。

  Kurt-Linux是第一个基于普通Linux的实时操作系统。通过正常态、实时态和混合态进行实时和非实时任务的划分。RED-Linux通过任务多种属性和调度程序,可以实现多种调度算法。采用软件模拟中断管理,并在内核插入了许多抢占点,提高了系统调度精度。

  MontaVista Linux在低延迟补丁以及可抢占内核补丁基础上[4],通过开发内核O(1)实时调度程序并对可抢占内核进行了改进和测试,Linux 2.4内核时代,MontaVista Linux 作为商业成熟产品在实时性上有较强的优势。TimeSys Linux通过内核模块的方式也提供了高精度时钟、优先级继承mutex等支持。

  2.6版本的主流内核吸收了以上技术,支持CONFIG_PREEMPT_NONE,CONFIG_PREEMPT_VOLUNTARY和CONFIG_PREEMPT等多种配置选项。分别适合于计算型任务系统,桌面用户系统和毫秒级延迟系统。2005年,针对2.6内核MontaVista推出了实时Linux计划,推进了Linux内核实时化进程。随后Ingo Molnar发布了新的实时抢占补丁,并逐渐成为Linux内核实时主流技术,也为包括MontaVista Linux,Wind River Linux采用和补充,本文后续内容要涉及实时抢占补丁。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭