您的位置 首页 IOT

怎么进行根据Linux的嵌入式RTOS研讨?

1.引言从上世纪八十年代开始,开始出现各种各样的商用嵌入式操作系统,这些操作系统大部分都是为专用或通用系统而开发,如VxWorks、Windows CE、pSOS

1.导言

从上世纪八十年代开端,开端呈现各式各样的商用嵌入式操作体系,这些操作体系大部分都是为专用或通用体系而开发,如VxWorks、Windows  CE、pSOS、Palm OS、OS-9、LynxOS、QNX、LYNX  等,它们的长处是为用户供给杰出的开发环境,提高了运用体系的开发功率,运转功率高、实时性好,缺陷是价格昂贵且源代码关闭。这就不只影响了开发者的积极性,并且使得整个产品的本钱急剧上升。

结合国内实情,嵌入式体系需求的是一套高度简练、界面友爱、质量牢靠、运用广泛、易开发、多使命、价格低廉的实时操作体系。

嵌入式产品的开发中,有必要寻觅一种廉价的嵌入式实时操作体系,以降低产品的开发本钱和体系复杂度。由于Linux的具有的许多长处,对Linux进行恰当的改造后作为廉价的嵌入式实时操作体系是一个值得讨论的、具有实际意义的问题。

2.Linux的特色

Linux是个与生俱来的网络操作体系,老练并且安稳。Linux是源代码敞开软件,不存在黑箱技能,任何人都能够修正它,或许用它开发自己的产品。  Linux体系是能够定制的,体系内核现在现已能够做得很小。一个带有中文体系及图形化界面的中心程序也能够做到缺乏1MB,并且相同安稳。Linux作为一种可削减的软件渠道体系,是开展嵌入式产品的绝佳资源,遍及全球的很多Linux爱好者又能给予Linux开发者强壮的技能支持。因而,Linux作为廉价的嵌入式实时操作体系的挑选,对错常有开展前途的。

(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编程的通用办法,将一个使命分为实时部分和非实时部分,在实时部分完结的是实时使命;在非实时部分首要是完结显现等不需求实时的功用。程序的体系结构如下所示:    

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/148516.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部