关于Linux嵌入式实时操作系统的研究

近年来,实时操作系统在多媒体通信、在线事务处理、生产过程控制、交通控制等各个领域得到广泛的应用,因而越来越引起人们的重视。

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的实现机理

在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设备,获取最大值和最小值

在屏幕上打印出来

6.开发嵌入式RT-Linux的几个问题

(1)Linux的移植。如果Linux不支持选用的平台,就需要把Linux内核中与硬件平台相关的部分改写,使之支持所选用的平台。

(2)内核的裁剪。嵌入式产品的可用资源比较少,所以它的内核相对嵌入式系统来说就显得有点大,需要进行剪裁到可利用的大小。

(3)桌面系统。现代的操作系统如果没有一个友好的界面是没有说服力的。现在的台式机Linux系统使用了传统的X-Window系统的模式— Client/Server结构。和硬件有关的部分即是Server端,实现一个标准的显示接口;应用程序通过对Server的服务请求,实现程序的显示。在此之上,实现窗口的管理功能。但X Window对于嵌入式系统来说显得很庞大。现在国内有MiniGUI,国外有MicroWindow,都在致力于嵌入式Linux GUI的开发。适用于嵌入式Linux上的X-Window的工作也在进行。

(4)驱动程序的开发。Linux内核更新的很快,许多最新的硬件驱动很快就被支持。但嵌入式系统应用领域是多种多样的,所选用的硬件设备也不同,并且不可能都有Linux的驱动程序,因此,设备驱动程序的开发也是重要的工作。

7.结束语

嵌入式系统的开发是剪裁与移植相结合的过程,开发者自己编写的代码并不多。笔者在智能交通监控系统的设计中,通过对Linux适当的剪裁,选择了RT- linux作为系统的开发平台,对于提高系统的开发效率和降低开发成本取得较好的实效。当然,嵌入式系统的发展对嵌入式操作系统提出了更高的要求,因此,对嵌入式操作系统的结构、设计、用户界面等诸多方面进行深入研究,将有助于嵌入式系统的应用和发展。

linux基础

http://www.makeru.com.cn/course/details/2058?s=156461

Linux网络经典案例

http://www.makeru.com.cn/live/3485_1630.html?s=156461

Linux网络高并发技术之epoll

http://www.makeru.com.cn/live/5413_1937.html?s=156461

linux之C语言内存管理

http://www.makeru.com.cn/live/1392_382.html?s=156461

Linux网络聊天室设计

http://www.makeru.com.cn/live/1392_1099.html?s=156461

Linux开发调试技巧

http://www.makeru.com.cn/live/1392_1184.html?s=156461

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345