您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术利用linux开发的面向实时和嵌入式应用的操作系统 正文
利用linux开发的面向实时和嵌入式应用的操作系统

利用linux开发的面向实时和嵌入式应用的操作系统

点击数:7244 次   录入时间:03-04 11:57:28   整理:http://www.55dianzi.com   嵌入式系统-技术

    1.RTLinux

    RTLinux是由美国新墨西哥州的fsmlabs(finite STate machine labs, 有限状态机实验室)公司开发的、利用linux开发的面向实时和嵌入式应用的操作系统。在rtlinux宣言中,这样描述rtlinux : rtlinux is the hard realTIme variant of linux that makes it possible to control robots, data acquisitiON systEMS, manufacturing plants, and other time-seNSitive instruments and machines。

    到目前为止,RT-Linux已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等广泛领域,在电信、工业自动化和航空航天等实时领域也有成熟应用。随着信息技术的飞速发展,实时系统已经渗透到日常生活的各个层面,包括传统的数控领域、军事、制造业和通信业,甚至连潜力巨大的信息家电、媒体广播系统和数字影像设备都对实时性提出了愈来愈高的要求。

    RT-Linux开发者并没有针对实时操作系统的特性而重写Linux的内核,因为这样做的工作量非常大,而且要保证兼容性也非常困难。将linux的内核代码做一些修改,将linux本身的任务以及linux内核本身作为一个优先级很低的任务,而实时任务作为优先级最高的任务。即在实时任务存在的情况下运行实时任务,否则才运行linux本身的任务。TRLinux能够创建精确运行的符合POSIX.1b标准的实时进程;并且作为一种遵循GPL v2协议的开放软件,可以达GPL v2协议许可范围内自由地、免费地使用、修改和再发生。

    它是Linux在实时性方面的扩展,采用已获得专利的双核技术:一个微型的RTLinux内核把原始的Linux内核作为它在空闲时的一个线程来运行。这开启了在两个不同的内核层面上――实时的RTLinux内核和常用的,非实时的Linux内核――运行不同程序的新方式。原始的Linux内核通过RTLinux内核访问硬件。这样,所有硬件实际上都是由RTLinux来进行管理的。目前,有两种不同的RTLinux版本:RTLinux/Free(或者RTLinux/Open)和RTLinux/Pro. RTLinux/Pro是一个由FSMLabs开发的完全商业版本的实时linux。RTLinux/Free是一个由社区开发的开源版本。

    2.标准Linux影响实时性的机制

    现有的Linux是一个通用的操作系统,虽然它采用了许多技术来提高系统的运行和反应速度,但它本质上不是一个实时操作系统,应用于嵌入式环境中还存在诸多的不足。具体表现如下:

    1.关中断问题

    在系统调用中,为了保护临界区资源,Linux处于内核临界区时,中断会被系统屏蔽,这就意味着如果当前进程正处于临界区,即使它的优先级较低,也会延迟高优先级的中断请求。在实时应用中,这是一个十分严重的问题。

    2.进程调度问题

    Linux采用标准的UNIX技术使得内核是不可抢占的。采用基于固定时间片的可变优先级调度,不论进程的优先级多么低,Linux总会在某个时候分给该进程一个时间片运行,即使同时有可以运行的高优先级进程,它也必须等待低优先级进程的时间片用完,这对一些要求高优先级进程立即抢占CPU的实时应用是不能满足要求的。

    3.时钟问题

    Linux为了提高系统的平均吞吐率,将时钟中断的最小间隔设置为10ms,这对于一个周期性的实时任务,间隔要求小于10ms时,就不能满足实时任务的需要。如果要把时钟 的间隔改小以满足周期性的实时任务的需要,由于Linux的进程切换比较费时,时钟中断越频繁,而花在中断处理上的时间就越多,系统的大部分时间是调用进程调度程序进行进程调度而不能进行正常的处理。

    3.RTLinux的特点

    在Linux 操作系统中,调度算法(其于最大吞吐量准则)、设备驱动、不可中断的系统调用、中断屏蔽以及虚拟内存的使用等因素,都会导致系统在时间上的不可预测性,决定了Linux操作系统不能处理硬实时任务。RTLinux为避免这些问题,在Linux内核与硬件之间增加了一个虚拟层(通常称作虚拟机),构筑了一个小的、时间上可预测的、与Linux内核分开的实时内核,使得在其中运行的实时进程满足硬实时性。并且RTLinux和Linux构成一个完备的整体,能够完成既包括实时部分又包括非实时部分的复杂任务。

    4.RTLinux的实现机理

    RT-Linux对Linux内核进行改造,将Linux内核工作环境做了一些变化,如图1所示:

     

456

    图1 RTLinux对Linux内核改变

    RTLinux有两种中断:硬中断和软中断。软中断是常规Linux内核中断。它的优点在于可无限制地使用Linux内核调用。硬中断是安装实时Linux的前提。依赖于不同的系统,实时Linux下硬中断的延迟是15μs。

    它在Linux内核的下层实现了一个简单的实时内核,而Linux本身作为这个实时内核的优先级最低的任务,所有的实时任务的优先级都高于Linux系统本身的以及Linux系统下的一般任务。RTLinux的体系结构如图2所示。

676

    图2 RTLinux的体系结构

    RTLinux的设计思想是:应用硬件的实时约束将实时程序分割成短小简单的部分,较大部分承担较复杂的任务。根据这一原则,将应用程序分为硬实时和软实时(即程序)2个部分。

    硬实时的实现:

    硬件实时部分被作为实时任务来执行,并从外部设备拷贝数据到一个叫做实时有名管道(RTFIFO)的特殊I/O端口;程序主要部分作为标准Linux进程来执行。它将从RTFIFO中读取数据,然后显示并存储到文件中,实时部分将被写入内核。设计实时有名管道是为了使实时任务在读和写数据时不被阻塞。图3所示的是RTFIFO结构图。

     

678

    图3 RT-FIFO结构图

    RTLinux将标准Linux内核作为简单实时操作系统(RTOS)(或叫子内核)里优先权最低的线程来运行,从而避开了Linux内核性能的问题。 从图3可以看出,RTLinux拥有两个内核。这就意味着有两组单独的API,一个用于Linux环境,另一个用于实时环境。此外,为保证实时进程与非实时Linux进程不顺序进行数据交换,RTLinux引入了RT-FIFO队列。RT-FIFO被Linux视为字符设备,最多可达150个,分别命名为/der/rtf0、/dev/rtf1……/dev/rtf63。最大的RT-FIFO数量在系统内核编译时设定。



www.55dianzi.com

    RTLinux程序运行于用户空间和内核态两个空间。RTLinux提供了应用程序接口。借助这些API函数将实时处理部分编写成内核模块,并装载到RTLinux内核中,运行于RTLinux的内核态。非实时部分的应用程序则在Linux下的用户空间中执行。这样可以发挥Linux对网络和数据库的强大支持功能。

    软实时的实现:

    RTLinux通过一个高效的、可抢先的实时调度核心来全面接管中断,并把Linux作为此实时核心的一个优先级最低的进程运行。当有实时任务需要处理时,RTLinux运行实时任务;无实时任务时,RTLinux运行Linux的非实时进程。其系统结构见图1。

789

    图4 RTLinux系统结构图

    在Linux进程和硬件中断之间,本来由Linux内核完全控制,现在在Linux内核和硬件中断的地方加上了一个RTLinux内核的控制。Linux的控制信号都要先交给RTLinux内核进行处理。在RTLinux内核中实现了一个虚拟中断机制,Linux本身永远不能屏蔽中断,它发出的中断屏蔽信号和打开中断信号都修改成向RTLinux发送一个信号。如在Linux里面使用“SI”和“CLI”宏指令,让RTLinux里面的某些标记做了修改。也就是说将所有的中断分成Linux中断和实时中断两类。如果RTLinux内核接收到的中断信号是普通Linux中断,那就设置一个标志位;如果是实时中断,就继续向硬件发出中断。在RTLinux中执行STI将中断打开之后,那些设置了标志位表示的Linux中断就继续执行,因此,CLI并不能禁止RTLinux内核的运行,却可以用来中断Linux。Linux不能中断自己,而RTLinux可以。

    RTLinux在默认的情况下采用优先级的调度策略,即系统调度器根据各个实时任务的优先级来确定执行的先后次序。优先级高的先执行,优先级低的后执行,这样就保证了实时进程的迅速调度。同时RTLinux也支持其它的调度策略,如最短时限最先调度(EDP)、确定周期调度(RM)(周期段的实时任务具有高的优先级)。RTLinux将任务调度器本身设计成一个可装载的内核模块,用户可以根据自己的实际需要,编写适合自己的调度算法。

[1] [2]  下一页


本文关键字:嵌入式  开发  操作系统  Linux  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术

《利用linux开发的面向实时和嵌入式应用的操作系统》相关文章>>>