文档库

最新最全的文档下载
当前位置:文档库 > 基于Xenomai的实时Linux系统的研究

基于Xenomai的实时Linux系统的研究

收稿日期:2013-01-10 修回日期:2013-04-14 网络出版时间:2013-07-24基金项目:国家重大专项:载人航天应用系统总体设计(Y2140102RN)

作者简介:苏 宇(1985-),男,吉林长春人,硕士研究生,研究方向为高可靠软件;张 涛,研究员,博士生导师,研究方向为高可靠软件三网络出版地址:http://www.wendangku.net/doc/3fe0b9a343323968011c92ad.html /kcms /detail /61.1450.TP.20130724.1012.062.html

基于Xenomai 的实时Linux 系统的研究

苏 宇1,2,3,张 涛2,孙 黎1,2,3

(1.中国科学院光电研究院,北京100094;

2.中国科学院空间应用工程与技术中心,北京100094;

3.中国科学院大学,北京100190)

摘 要:针对标准Linux 操作系统实时性不好的问题,提出一种更加注重用户态的实时性且兼容多种流行实时操作系统的实时化方案,即利用Xenomai 实时补丁改造标准Linux 内核的实时化方案,并基于工控PC 机,搭建了基于Xenomai 实时补丁的实时Linux 系统,并对其实时性进行了测试三测试结果表明,实时化后的操作系统具有良好的用户态二内核态以及定时器中断响应下的实时性,中断处理的最大延迟时间减小到令人满意的几十微秒级数量级,可以用于对实时性要求较高的强实时应用领域三

关键词:实时;Linux;中断延迟;Xenomai

中图分类号:TP316.2 文献标识码:A 文章编号:1673-629X (2013)10-0001-05

doi:10.3969/j.issn.1673-629X.2013.10.001

Research on Real -time Linux System Based on Xenomai

SU Yu 1,2,3,ZHANG Tao 2,SUN Li 1,2,3

(1.Academy of Opto -electronics ,Chinese Academy of Science ,Beijing 100094,China ;

2.Technology and Engineering Center for Space Utilization ,Chinese Academy of Science ,Beijing 100094,China ;

3.University of Chinese Academy of Science ,Beijing 100190,China )

Abstract :Owing to the lack of real -time in the standard Linux system ,a real -time method based on Xenomai that emphasizes on user -mode real -time and can be compatible with a variety of popular real -time operating system was proposed.Build the real -time Linux sys?tem by using the Xenomai real -time patch on industrial PC and do some real -time testing.The result shows that the real -time Linux sys?tem based on Xenomai has a good user -mode real -time ,excellent kernel -mode real -time and response of timer interruption ,the worst time of interruption processing delays reduces to a satisfactory magnitude -tens of microseconds ,and can be used for high real -time appli?cations.

Key words :real -time ;Linux ;interruption delays ;Xenomai

0 引 言

随着数字信息技术和网络技术的快速发展,人类正在步入一个崭新的计算机时代 后PC 时代三实时操作系统将在这个时期扮演非常重要的角色,实时操作系统是实时系统和操作系统的完美结合,由于工作的特殊性,要求操作系统在一个规定的时间(通常是微秒级或几十微秒级)内,对系统的异步输入(通常指外部中断)进行处理并输出,即实时处理系统三

实时操作系统目前的种类很多,而且发展的很快三大体可以分为两大类:一类是商业版实时操作系统,

如:vxworks ,QNX ,WINCE ,pSOS ,montavista Linux 等;另一类是免费的,如:RTAI (Real Time Linux Appli?cation Interface ),基于Xenomai 的实时Linux 以及uC /OS 等三

这些商业版实时操作系统的专用性比较强,实时性好,但开发难度大,而且成本高二互不兼容,源代码作为商业机密严格保密三与之不同的是,uC /OS 是一种公开源代码二结构小巧二具有可剥夺实时内核的实时操作系统,但它过于小巧,有时难以满足复杂的多任务需求三Linux 操作系统的优点是开源免费且支持多平台,通用性好,缺点是实时性比较差三于是出现了很多

第23卷 第10期2013年10月 计算机技术与发展COMPUTER TECHNOLOGY AND DEVELOPMENT

Vol.23 No.10

Oct. 2013

对标准Linux进行改造,藉以提高Linux的实时性的

方法,有代表性的实现方案有:RTLinux(Real-Time Linux,实时Linux)和RTAI三但前者已被商业化,开

源的社区版本已很长时间没有更新;后者虽然实时性

能较好,但由于过分专注于内核态下的实时性,而忽略

了用户态下实时性能的提高,不利于用户开发应用程

序[1]三以软件测试为应用背景,要求测试平台对测试前端返回的中断处理延迟仅有几十微秒的数量级,即

要求Linux操作系统可以暂停正在执行的低优先级进

程,转而去处理刚刚到来的外部中断,这种情况下基于

分时调度策略的标准的Linux是无法胜任的三因此提

出了基于Xenomai实时补丁来改进Linux实时性的方

法,与其他的商业版的RTOS相比,它不仅提供了多套

与主流商业版RTOS兼容的API,而且更加注重用户

态下的实时性能三

1 实时操作系统与标准Linux的实时性分析

1.1 实时操作系统的概念

不论是嵌入式实时领域还是实时工业控制领域,

都离不开实时操作系统三实时操作系统又可分为软实

时和硬实时两种三软实时是指统计意义上的实时,超

时会带来系统性能的下降,不会导致系统的崩溃;硬实

时是刚性的不可改变的时间限制,超时会导致系统的

崩溃三如在嵌入式实时软件测试系统中,要求测试系

统的主控制单元能在接收到测试前端发出的中断信号

后及时将测试前端缓冲区的数据上传到测试服务器,

否则缓冲区的数据会被下一次到来的数据覆盖掉三1.2 标准Linux的实时性分析

标准Linux是一款优秀的分时操作系统,追求的

是高的系统吞吐率和公平性,虽然Linux内核从2.4

到2.6版本采用了很多方案对实时任务进行支持,但

是它本质上不是一个实时操作系统,在实时方面的不

足主要体现在以下四个方面:

(1)内核的不完全可抢占性:Linux中进程运行状态分为用户态和内核态,当进程运行于用户态时,操作系统内核可以被已经就绪的高优先级的进程抢占,但是当进程运行于内核态时,内核就不能被高优先级进程抢占;

(2)关中断问题:Linux内核进程在运行时,为了尽快完成任务,并保护重要的系统程序代码,而经常关闭中断,这对于实时系统来说是无法忍受的; (3)时钟粒度粗糙问题:目前工业控制领域中很多的中断产生周期都在十几~几十微秒数量级,但是Linux2.6版本内核所能提供的时钟中断发生的频率不大于1200Hz 周期不小于0.8毫秒,导致标准Linux内核有时无法准确及时采集到外部中断; (4)虚拟内存技术:Linux采用了虚拟内存技术,即当访问的页面不在内存中时,通过交换空间把需要的页面换到实际内存中,此项技术的采用,大大提高了系统运行的速率,但是内存页面的频繁的换进换出,实时进程无法预料三

在实时调度应用中,总是希望任务的调度延迟越低越好,但以上四项决定了标准Linux操作系统不能应用于实时性要求很高的应用领域三

2 Xenomai简介

Xenomai是一种基于双内核的解决方案,也就是在相同的硬件上并行执行一个小型的co-kernel(辅助内核)与Linux[2]三Xenomai是一个自由软件项目,它可以提供工业级的RTOS的性能,完全遵守GNU/ Linux自由软件协议[3],2003年它和RTAI项目合并推出了RTAI/fusion,2005年,因为开发理念不同,RTAl/ fusion项目又从RTAI中独立出来作为Xenomai项目[4]三Xenomai无缝集成到Linux操作系统,从而无障碍所有的Linux软件栈二源代码和更多的东西[5]三Xeno?mai实时内核为开发强实时应用提供了丰富的功能,主要包括实时线程调度与管理二用户空间实时任务支持二中断服务二线程同步服务二实时对象注册服务和动态内存申请等三

和典型的Linux实时方案(RTLinux和RTAI)相比,Xenomai拥有自己的两个特色:一是支持完全的二性能优异的用户态下的实时性[1];二是它兼容常见的vxworks二pSOS+二VRTX等成熟的实时操作系统的API,这为各类传统实时操作系统的实时程序快速移植到新的平台上提供了便利,同时还提供了原生API和实时驱动模型(RTDM)三Xenomai作为一个自由软件项目,完全遵守GNU/Linux自由软件协议三Xenomai使用了中断管道(I pipe)的概念,Xenomai实时内核运行其上,并能提供多种针对传统的实时操作系统设计的模拟器,该类模拟器可以提供对应的实时程序运行需要的API[6]三实时子内核实际上工作在Linux内核和硬件中间,它最先知道硬件的信息,可以得到最快的响应速度;实时任务直接和实时内核进行交互,缩短了到硬件的时间,也提高了实时性三Xenomai的架构图如图1所示[7]三ADEOS(the Adaptive Domain Environment for Oper?ating System),即操作系统的适应性域环境三ADEOS 的设计初衷是为了满足多个操作系统能共同地分享底层的硬件设备三ADEOS为硬件和标准内核之间提供了接口,这种 硬件-内核”接口被称为纳内核,它的一

四2四 计算机技术与发展 第23卷

个显著特征是实时和非实时操作系统可以运行于纳内核层之上;相比之下,微内核体系结构(RT-Linux项目)仅仅实现了在微内核上运行用户空间的实时和非实时进程的机制[8]三ADEOS也是一个软件层,它以通用性和灵活性的方式用于虚拟化中断

基于Xenomai的实时Linux系统的研究

图1 Xenomai架构图

在双内核复用的基础上,Xenomai的核心技术表现为使用一个实时微内核(real time nucleus)构建实时API,即 skin”三这些skin可以成功地模拟当前主流实时操作系统的API三Native是Xenomai自带的API,各类API都有着同等的地位,都独立地基于同一个实时微内核三这样做可以让内核的优点被外层所有的API很好地继承下来三更重要的是,实时微内核提供的服务被外层各种API以不同的方式表现出来,由此可以增强整个系统的强壮性[9]三Xenomai是通过加入一组新的系统调用(由相应的skin来实现)来扩展目标系统的操作系统三每当有一个skin模块被载入,便导出一套隶属于Xenomai核的服务,将应用程序分配至适当的skin即可三

在基于ADEOS技术的Xenomai系统中,通常有A二B二C和D四种类型的交互,如图2所示三A类交互是各个域和硬件设备直接联系,包括访问内存等;B类交互指当ADEOS接收到硬件中断后,会根据中断来对相应的域进行中断服务;C类交互指当前域内的操作系统主动向ADEOS请求某些服务;D类交互是指ADEOS接收硬件产生的中断和异常,同时也可以直接控制硬件

基于Xenomai的实时Linux系统的研究

图2 ADEOS的系统中4种类型的交互Xenomai在ADEOS系统中的域优先级要高于标准Linux域,每当中断到来之后,ADEOS先调度Xeno?mai对该中断进行处理二执行中断相应的实时任务,只有当Xenomai没有实时任务和中断需要处理的时候, ADEOS才会调度Linux运行,这就保证了Xenomai的中断响应速度和实时任务不受Linux的影响,从而提供了实时系统的可确定性三

Xenomai还提供了用户态下的任务的混合执行模式,即任务运行于主域时,任务是由Xenomai直接调度的,可以随时抢占标准Linux的非实时任务[10];当任务运行于从域时,任务由标准Linux内核调度,任务切换的时间较长且不支持随时抢占,但可以应用Linux所有的系统调用三然而,由于某些具体任务具有优先级继承的特性,在标准Linux进行内核调用时,标准Linux中断可能抢占实时任务的调度权,对实时任务造成不必要的延时三对此,Xenomai引进了中断屏蔽机制,即在实时任务执行过程中,任何来自标准Linux内核的中断都将被延迟处理三它支持的优先级继承的策略,可以防止它检测到一个同步对象时发生优先级的翻转[11]三

实时操作系统的实时性的一个评价指标是任务响应延迟,这其中一个就是中断延迟时间三为了能从根本上解决中断延迟时间过大的问题,ADEOS巧妙地通过一种虚拟中断技术来有效地减少中断服务时间和中断分派时间,以此获得更佳的任务响应时间三当产生一个硬中断时,系统既不去查看中断向量表,也不去执行相应的中断服务程序,而是将事件直接记录到一个事件表中,然后立即将CPU的控制权返回给操作系统三此过程仅需保存中断模拟程序的寄存器,从而省去了在硬件服务中要保存上下文环境的时间三

3 Xenomai+Linux系统的构建

综上分析可知,Xenomai实时子内核的采用可以提高Linux系统中断响应性能三该设计采用标准Linux内核和Xenomai的实时核一起搭建双核实时操作系统三Xenomai负责处理实时任务,而标准Linux 内核负责处理非实时任务,它们共同运行于同一硬件平台上三

综上所述,该设计选择了Xenomai-2.6.0(到该文截稿时Xenomai官网公布的最新的稳定版本的实时补丁)和linux-2.6.38.8的组合创建实时操作系统,方法如下:

(1)下载 洁净”的Linux-2.6.38.8源码包和Xe?nomai-2.6.0源码包;

(2)给标准Linux内核打上Xenomai补丁,

#sudo scripts/prepare-kernel.sh--arch=x86–Xenomai=Xenomai-tree--linux=linux-tree;

四3四

 第10期 苏 宇等:基于Xenomai的实时Linux系统的研究

(3)配置内核三

在配置过程中,一些系统默认的配置信息会对系统的实时性能产生不利影响,提示信息如图3所示三按照提示,重新配置内核后,在Real-Time sub-system 子目录下会有Xenomai 的配置信息,如图4所示三该设计中,系统提示的会产生不利影响的信息是:

四Enabled APM,CPU Frequency scaling;四Enabled ACPI processor’;四Enabled PC speaker support;四X86_LOCAL_APIC enabled or HPET_TIMER dis?

able三

图3 Real-Time sub-system

基于Xenomai的实时Linux系统的研究

目录下冲突信息

图4 Real-Time sub-system 目录下配置信息在Real-Time sub-system 目录下,分别选择Debug

support 和Enable shared interrupt 选项来使能系统的调

试支持模式和中断分享;在Timing 选项中,使能周期时间选项;在Drivers 选项中开启对串口的支持,以及在Testing driver 子目录中要选择上下文切换测试二中断请求基准驱动以及定时器基准驱动以方便后面的实时性测试;最后根据自己机器的CPU 情况,选择合适的CPU 架构和中断管线(Interrupt pipeline)三配置完毕后,保存并退出配置界面三

(4)编译内核三

在/usr /src /linux-2.6.38.8目录下运行#make -kpkg --initrd --append-to-version =-cus?

tom kernel_image kernel_headers

用于编译内核并产生内核映像以及相关的头文

件三接着在/usr /src 目录下安装上一步生成的新内核的头文件和镜像文件三由于ubuntu 11.04不会自动生

成initrd 镜像,需要手动生成initrd 镜像,并更新启动项三重启系统,选择新内核启动三

(5)安装Xenomai三

重启系统后,进入Xenomai-2.6.0所在目录,执行下面的指令来安装Xenomai:#sudo ./configure --ena?ble-x86-sep 和#sudo make &&make install三然后重启系统,就可以进行双内核的实时性测试

了三

4摇实时性测试和结果分析

双核实时系统搭建完成以后,一般要测试它的实时性能,并对测试结果进行分析,以此来判断改造后的双核实时系统能否满足实际工程领域中对强实时的需要三实时系统最为重要的特性在于能够在限定的时间内完成指定功能并对外部事件做出正确响应三其中,任务响应时间更是主要指标,它是指自中断发出处理请求到相应程序即将执行的时间间隔三因此在实时操作系统的选择时,要考虑的主要性能指标是系统的最大调度延迟时间,如果最大调度延迟时间可以满足要求,则这款操作系统是满足当前任务的要求的三

安装好Xenomai 后,会有一些实时性能测试程序存放在/usr /Xenomai /bin /目录下三其中latency 可以用来测试用户态二内核态下的实时任务响应时间以及内核定时器中断模式下的延迟;cyclictest 也是实时性测试的重要工具,它是利用动态定时器-nanosleep()这个系统调用来实现进程的延时的三或者可以选用专业的实时性测试工具来测试实时性,如lmbench 工具或选用专门的cyclictest 测试工具进行内核性能测试三当然,用户也可以根据实际需要自己编写测试代码进

行测试三

测试条件:ubuntu 11.04操作系统(不可以用虚拟机),linux2.6.38.8内核源码,Xenomai -2.6.0补丁;

CPU:core2-T6400,2.00GHz,内存:DDR2-2GB三测试内容:用户模式下任务调度延迟时间二内核模

式下任务调度延迟时间以及定时器中断任务调度的延迟时间三

文中采用Xenomai 补丁中自带的实时性测试程序进行测试,即Latency三Latency 测试程序按照预先设定的周期对自身进行循环调用,并记录下测试程序的实际调度时间和期望的调度时间,二者的差值即为延迟时间,这就是Latency 进行任务响应时间测试的思想三并且Latency 可以模拟Linux 在用户态以及内核态的任务响应延迟,因此用户可以很方便地在用户态编写实时代码三

1)在用户态下,执行:latency -t0-s-Txx-pxxx-h三

其中,-t0表示测试代码工作于用户态下;-s 表示打印

4四 计算机技术与发展 第23卷

统计测试过程中的调度延迟时间的最小值二平均值以及最大值;-Txx是表示测试程序运行的时间,单位:秒,缺省为0;-pxxx表示采样时间,单位:μs,缺省为

100;-h表示打印测试记录中调度延迟时间的最小值二平均值以及最大值三

2)在内核态下,执行:latency-t1-s-Txx-pxxx-h三其中,-t1表示测试代码工作于内核态下;其余参数的意义同用户态下参数三

3)在定时器中断模式下,执行:latency-t2-s-Txx-pxxx-h三其中,-t2表示测试代码工作于定时器中断模式下;其余参数的意义同用户态下参数三

用户态和内核态的测试结果如表1~表3所示三

表1 用户态下各采样时间下的延时 μs 采样时间100150200300500

平均延时-1.550-1.580-1.560-1.564-1.540最大延时11.6577.6448.9698.13810.540表2 内核态下各采样时间下的延时 μs 采样时间100150200300500

平均延时-2.065-2.062-2.060-2.050-2.049最大延时8.4737.2237.2388.1977.008表3 定时器中断模式各采样时间的延时 μs 采样时间100150200300500

平均延时-2.668-2.606-1.476-1.400-1.705最大延时 5.430 5.2317.3477.4597.665 由上面的测试结果可以看出,在用户态下,任务响应延迟的最大时间小于20μs,实时性有了本质的改善三在内核态,任务响应延迟的最大时间小于10μs,响应特性明显好于用户态,并且平均延迟也小于用户态三在定时器中断模式下,任务响应延迟的最大时间为7.665μs,都在10μs以内,和内核态下的任务响应延迟时间相当三

任务响应延迟时间出现负值是由于程序最初执行时并未与定时器中断同步所致三随着采样间隔的减小,延迟的最大值略有增大的趋势三虽然系统的时钟粒度和定时器粒度提高了,但是系统的负载加重了,高负荷下系统的稳定性略有下降[4]三调整采样时间可以得到相对最小延迟时间三

综上分析,经过改造的Linux的任务调度响应最大延迟时间都控制在20μs以内,实时性明显好于标准的Linux,即使移植到嵌入式平台上,也能有很好的实时性,相关人员可以根据自己的实际需要,将其移植到不同的嵌入式平台上,它的强实时性可以满足软件测试过程中测试平台对时钟中断仅有几十微秒的延迟要求三

5摇结束语

文中介绍了一种基于Xenomai的Linux实时化方案,简要分析了Xenomai的基础架构的特点,并着重介绍了基于Xenomai的Linux实时系统的搭建以及实时性能测试与分析过程三

测试结果说明了改造后的系统工作在用户态二内核态以及定时器中断模式下,都有很好的强实时性,可适用于实际工程中对实时性要求相对较高的硬实时领域,并成功应用到嵌入式实时软件测试系统中,取得令人满意的效果三而且Xenomai支持很多处理器平台,如x86二ARM二PPC二MIPS等,满足了不同领域的实时性应用需求,同时也为Linux在嵌入式实时领域的应用提供了一种理论前提三

参考文献:

[1] 晏来成,郑力新.基于Linux和Xenomai的实时测控系统

[J].计算机测量与控制,2009,17(4):657-659. [2] Yaghmour K,Masters J,Ben-Yossef G,et al.构建嵌入式

Linux系统[M].秦云川,译.北京:中国电力出版社,2011.

[3] 曹玉华,游有鹏.基于Xenomai的嵌入式数控系统实时性

研究[J].制造技术与机床,2011(6):51-55. [4] 韩守谦,裴海龙,王清阳.基于Xenomai的实时嵌入式

Linux操作系统的构建[J].计算机工程与设计,2011,32

(1):96-98.

[5] Mati K,Rimes A.Xenomaias a Linux RT framework,skins de?

sign and a practical approach to its architecture[EB/OL].

2009[2009-11-28].http://www.wendangku.net/doc/3fe0b9a343323968011c92ad.html/xenomai.pdf.

[6] 王延伟.基于Xenomai的实时Linux嵌入式机器人控制平

台设计[D].济南:山东大学,2011.

[7] Ugal A S.Hard real time Linux*using Xenomai*on Intel?

multi-core processors[EB/OL].2009[2009-10].http://

http://www.wendangku.net/doc/3fe0b9a343323968011c92ad.html/d_000437755.shtml.

[8] 张 鹏.基于Xenomai和工控机的实时测控系统的研究

[D].重庆:重庆大学,2008.

[9] 王 荣,游有鹏,张少坤.基于Xenomai的实时Linux分析

与研究[J].单片机与嵌入式系统应用,2009(2):9-11. [10]陈曾汉,张 鹏,晏来成.基于Xenomai的实时测控系统的

研究与实现[J].计算机应用与软件,2009,26(5):162-

165.

[11]Gerum P.Xenomai-implementing a RTOSemulation frame?

work on GNU/Linux[EB/OL].2004[2004-04].http://

http://www.wendangku.net/doc/3fe0b9a343323968011c92ad.html/documentation/xenomai-2.0/pdf/xeno?

mai.pdf.

四5四

 第10期 苏 宇等:基于Xenomai的实时Linux系统的研究

基于Xenomai的实时Linux系统的研究

基于Xenomai的实时Linux系统的研究

作者:苏宇, 张涛, 孙黎, SU Yu, ZHANG Tao, SUN Li

作者单位:苏宇,孙黎,SU Yu,SUN Li(中国科学院 光电研究院,北京 100094; 中国科学院 空间应用工程与技术中心,北京 100094; 中国科学院大学,北京 100190), 张涛,ZHANG Tao(中国

科学院 空间应用工程与技术中心,北京,100094)

刊名:

计算机技术与发展

英文刊名:Computer Technology and Development

年,卷(期):2013(10)

参考文献(11条)

1.晏来成;郑力新基于 Linux 和 Xenomai 的实时测控系统 2009(04)

2.Yaghmour K;Masters J;Ben-Yossef G;et al.秦云川构建嵌入式Linux系统 2011

3.曹玉华;游有鹏基于 Xenomai 的嵌入式数控系统实时性研究 2011(06)

4.韩守谦;裴海龙;王清阳基于 Xenomai的实时嵌入式Linux操作系统的构建 2011(01)

5.Mati K;Rimes A Xenomaias a Linux RT framework,skins de-sign and a practical approach to its architecture 2009

6.王延伟基于Xenomai的实时Linux嵌入式机器人控制平台设计 2011

7.Ugal A S Hard real time Linux*using Xenomai*on Intel?multi-core processors 2009

8.张鹏基于Xenomai和工控机的实时测控系统的研究 2008

9.王荣;游有鹏;张少坤基于Xenomai的实时Linux分析与研究 2009(02)

10.陈曾汉;张鹏;晏来成基于Xenomai的实时测控系统的研究与实现 2009(05)

11.Gerum P Xenomai - implementing a RTOSemulation frame-work on GNU/Linux 2004

引用本文格式:苏宇.张涛.孙黎.SU Yu.ZHANG Tao.SUN Li基于Xenomai的实时Linux系统的研究[期刊论文]-计算机技术与发展 2013(10)