快捷搜索:  test  as

基于Linux的嵌入式RTOS的研究你了不了解

在以谋略机技巧、通讯技巧相结合的信息期间的快速成长和互联网的广泛利用的形势下,3C(Computer、Communication、Consumer)合一的趋势已经形成。

1.小序

从上世纪八十年代开始,开始呈现各类各样的商用嵌入式操作系统,这些操作系统大年夜部分都是为专用或通用系统而开拓,如VxWorks、Windows CE、pSOS、Palm OS、OS-9、LynxOS、QNX、LYNX 等,它们的优点是为用户供给优越的开拓情况,前进了利用系统的开拓效率,运行效率高、实时性好,毛病是价格昂贵且源代码封闭。这就不仅影响了开拓者的积极性,而且使得全部产品的资源急剧上升。

结合海内实情,嵌入式系统必要的是一套高度简练、界面友好、质量靠得住、利用广泛、易开拓、多义务、价格低廉的实时操作系统。

在嵌入式产品的开拓中,有需要探求一种廉价的嵌入式实时操作系统,以低落产品的开拓资源和系统繁杂度。因为Linux的具备的诸多优点,对Linux进行适当的改造后作为廉价的嵌入式实时操作系统是一个值得探究的、具有实际意义的问题。

2.Linux的特征

Linux是个与生俱来的收集操作系统,成熟而且稳定。Linux是源代码开放软件,不存在黑箱技巧,任何人都可以改动它,或者用它开拓自己的产品。 Linux系统是可以定制的,系统内核今朝已经可以做得很小。一个带有中体裁系及图形化界面的核心法度榜样也可以做到不够1MB,而且同样稳定。Linux作为一种可裁减的软件平台系统,是成长嵌入式产品的绝佳资本,遍布举世的浩繁Linux喜欢者又能给予Linux开拓者强大年夜的技巧支持。是以,Linux作为廉价的嵌入式实时操作系统的选择,是异常有成长出路的。[2][3]

(1)与硬件芯片的慎密结合

嵌入式Linux的一大年夜特征是:与硬件芯片(如SOC等)的慎密结合。它不是一个纯软件的Linux系统,而比一样平常操作系统加倍靠近于硬件。嵌入式Linux的进一步成长,慢慢地具备了嵌入式RTOS的统统特性:实时性及与嵌入式处置惩罚器的慎密结合。

(2)开放的源代码

嵌入式Linux的另一大年夜特征是:代码的开放性。代码的开放性是与后PC期间的智能设备的多样性相适应的。代码的开放性主要体现在源代码可得到上,Linux代码开拓就像是“集市式”开拓,随意率性选择并按自己的意愿整合出新的产品。

对付嵌入式Linux,事实上是把BIOS层的功能实现在Linux的driver层。今朝,在Linux领域,已经呈现了专门为Linux操作系统定制的自由软件的BIOS代码,并在多款主板上实现此类的BIOS层功能。

3.RT-Linux的实现机理

RT-Linux对Linux内核进行改造,将Linux内核事情情况做了一些变更,如图1所示:

从上图可以看出,在Linux内核和硬件中断的地方,加上了一个RT-Linux内核的节制。Linux的节制旌旗灯号都要先交给RT-Linux内核先辈行处置惩罚。在RT-Linux内核中实现了一个虚拟中断机制,Linux本身永世不能樊篱中断,它发出的中断樊篱旌旗灯号和打开中断旌旗灯号都改动成向RT- Linux发送一个旌旗灯号。如在Linux里面应用“sTI”和“cli”宏指令来樊篱和使能中断,是经由过程向x86处置惩罚器发送一个指令,而RT-Linux 改动了这些宏指令,使得只是让RT-Linux里面的某些标记做了改动而已。对所有的中断,分成Linux中断和实时中断两类,假如RT-Linux内核收到的中断旌旗灯号是通俗Linux中断,那就设置一个标志位;假如是实时中断,就继承向硬件发出中断。在RT Linux中履行sTI将中断打开之后,那些设置了标志位表示的Linux中断就继承履行。是以,cli并不能禁止RT Linux内核的运行,却可以用来中断Linux。Linux不能中断自己,而RT-Linux可以。

RT-Linux的设计原则:在实时内核模块中的事情只管即便少,假如能在Linux中完成而不影响实时机能的话,就只管即便在Linux中完成。是以,RTLinux内核只管即便做的简单,在 RT-Linux内核中,不应该等待资本,也不必要应用共享扭转(SpinLock),实时义务和Linux进程间的通信也长短壅闭的,从来不用等待进行列步队和出行列步队的数据。

RT-Linux将系统和设备的初始化交给了Linux完成,对动态资本的申请和分配也交给了Linux。RT-Linux应用静态分配的内存来完成硬实时义务,由于在没有内存资本的时刻,被壅闭的线程弗成能具有硬实时能力。

4.改变Linux内核的体系布局

Linux的内核体系采纳的是Monolithic,在这种体系布局中,内核的所有部分都集中在一路,而且所有的部件在一路编译连接。这样虽然能使系统的各部分直接沟通,有效地缩短义务之间的切换光阴,前进了系统的相应速率,实时性好并前进了CPU的使用率,但在系统对照大年夜的时刻体积也对照大年夜,与嵌入式系统容量小、资本有限的特征不相符。而别的一种内核体系布局 MicroKernel, 在内核中只包括了一些基础的内核功能如创建和删除义务、义务调整、内存治理和中断处置惩罚等部分,而文件系统、收集协议栈等部分都是在用户内存空间运行。这种布局虽然履行效率不如Monolithic内核,但大年夜大年夜减小了内核的体积,同时也极大年夜地方便了全部系统的进级、掩护和移植,是以更能满意嵌入式系统的特征必要。为此,为使嵌入式Linux的利用加倍广泛,可以斟酌将Linux今朝的Monolithic内核布局中的部散播局改造成MicroKernel体系布局。经由过程这种折中法子,可以使获得的Linux既具有很好的实时性,又能满意嵌入式系统体积小的要求。

5.RT-Linux的编程接口(API)及编程措施示例

(1)RTLinux的编程和节制接口(API)。

经由过程应用RTLinux的编程和节制接口(API),可以供给对实时义务的创建和删除、义务的调整和节制等功能。API函数主要有如下几类:

1)中断节制API函数;2)时钟节制和获取;3)线程的创建和删除;4)POSIX要领的驱动接口;5)FIFO设备驱动法度榜样;6)串口驱动法度榜样的API函数;7)mbuff驱动API函数;8)浮点运算API函数。

(2) RTLinux的编程措施示例

该法度榜样的道理是测出在RT-Linux中进行实时义务调整历程中调整必要花费光阴的若干。算法如下:

/*实时义务端*/

对付每500个周期

等待上一个周期的义务完成

获适合前光阴和上次周期义务完成光阴的差,便是调整的光阴

轮回

向FIFO输出500个周期中完成的最大年夜值和最小值。

/*利用法度榜样端*/

读取FIFO设备,获取最大年夜值和最小值

在屏幕上打印出来

这种编程措施是进行RT Linux编程的通用措施,将一个义务分为实时部分和非实时部分,在实时部分完成的是实时义务;在非实时部分主如果完成显示等不必要实时的功能。

责任编辑:ct

您可能还会对下面的文章感兴趣: