APP下载

基于Linux 系统的内核编译及实时RTAI 架构①

2012-07-09静,珂,

关键词:内核中断选项

张 静, 宋 珂, 章 桐

(同济大学中德学院,上海201804)

0 引言

所谓实时系统(real-time system)是指其在计算和动作方面具有性能期限、对于外界的刺激都能由计算机给出及时响应的系统[1].全球许多科技公司和研究机构都对Linux的实时性进行了研究和改进.在众多改进方案中,实时应用接口(Real-TimeApplication Interface,RTAI)和实时 Linux(Real-time-Linux,RT-Linux)以其出色的性能,成为了目前主流Linux实时性改进方案.RTAI与RT-Linux相比,其结构更加灵活,代码修改量更小,研发周期更短[2].

RTAI项目是由意大利米兰理工学院航天工程系发起开发的遵循GPL的开源项目,RTAI在ARM平台上的移植,是从 3.2版本开始的,是基于Adeos实现的,它的硬件抽象层HAL使用Adeos提供的服务.也就是说,RTAI实现了Adeos中的一个域,通过Adeos实现RTAI域的初始化、中断的申请、中断服务程序的注册等[3].

RTAI在Adoes系统中的域优先级高于Linux域(也就是根域),每当中断到来之后,Adeos先调度RTAI对该中断进行处理、执行中断相关的实时任务,只有当RTAI没有实时任务和中断需要处理的时候,Adeos才会调度Linux运行,这就保证了RTAI的中断响应速度和实时任务不受Linux的影响,从而提供了实时系统的可确定性[4].

1 Linux操作系统的编译与实现

1.1 Linux系统的安装、内核及RTAI选型

我采用的是 Ubuntu 8.04.4 的 Wubi安装,8.04.4是Ubuntu系统的稳定版本,这样成功性较高.首先查看一下默认的内核版本,在终端内输入指令zj@zj-desktop:~$uname–r显示默认的内核版本是 2.6.24.26 - generic.那么接下来就要选择一款RTAI的版本,我选择了RTAI-3.7,进入RTAI-3.7 的/rtai-3.7/base/arch/i386/patches,可以查看此版本RTAI支持的内核版本.如图1所示.

图1 支持的内核版本

由此我们选择了 Linux -2.6.20.21.登录已安装完成的Ubuntu系统,在终端输入

进入/usr/src目录,解压文件此时会在/usr/src目录下出现两个文件夹linux-2.6.20.21 和 rtai-3.7

1.2 内核配置

接下来给内核打上相应的RTAI补丁,首先确保安装patch工具

配置Linux内核,内核两种编译模式:编译成内核与编译成模块.可以把相应部分编译到内核中,也可以把该部分编译成模块,动态调用.如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,这部分功能同时启动;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在(这是Windows的做法).

如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块.建议经常使用的部分直接编译到内核中,比如输入设备、网卡等.

在ubuntu下推荐使用图形化的配置菜单,可以先执行命令make mrproper,它将清除目录下所有配置文件和先前生成核心时产生的中间文件[5].

如图2←no

(2).Enable loadable module support→(允许可装载的模块支持)→ Module versioning support(模块支持的版本)=no不同的内核在使用同一模块时区别于塔原有的模块,此处不选.

Enable loadable module support→Module unloading(模块卸载)这个选项可以卸载不再使用的模块,如果不选将不能卸载任何模块.

(3).Processor type and features→(处理器的类型和特性)→Symmetric multi-processing support(对称多处理器支持)=no如果有多个CPU或者使用的是多核CPU就选上.此时"Enhanced Real Time Clock Support"选项必须开启,"Advanced Power Management"选项必须关闭

图2 内核配置界面

Processor type and features→Interrupt pipeline=yes

Processor type and features→Subarchitecture Type(子构架类型)=PC-compatible标准的PC或兼容机.

Processor type and features→Processor family(处理器系列)=core 2/newer xeon根据实际CPU选择,我的电脑是酷睿双核.

Processor type and features→Generic x86 support(通用x86支持)=no CPU能在上述”Processor family”中找到就可不选

Processor type and features→Multi-core scheduler support(针对多核CPU进行调度策略优化)=yes

Processor type and features→Preemption Model(内核抢占模式)→Preemptible Kernel(Low-Latency Desktop)(适合运行实时程序的主动内核抢占)→yes

(4).Power management options(ACPI,APM)→Power Management support(电源管理选项)=no电源管理有APM和ACPI两种标准且不能同时使用,即使关闭该选项,X86上运行的Linux也会在空闲时发出HLT指令将CPU进入睡眠状态.

Power management options(ACPI,APM)→CPU Frequency scaling(CPU变频控制)→CPUF requency scaling Power management options=no CPU变频控制允许在运行中改变CPU主频,达到省电和降温的目的,但是这个驱动不会自动改变CPU的时钟速度,选择no.

注意主菜单最后有两项:

Load an Alternate Configuration File

Save an Alternate Configuration File

先选第一项的意思是,你也可以使用当前系统正在使用的配置文件来配置将要编译的内核,然后选第二项保存,最后退出配置界面.操作方法如下:

假如当前系统正在使用的内核版本号为Linux-<current version>,其正在使用中的内核配置为/usr/src/linux-headers-<current version>-generic/.config将其拷到/usr/src/linux- <new version>目录下.

然后选择Load An Alternate Configuration File读取配置文件,然后再此基础上进行修改最后保存退出.

图3 生成的镜像文件和头文件

1.3 编译及安装内核

当编译结束后,会在/usr/src目录下生成两个文件,分别是镜像文件和头文件,如下图-3所示,然后需要安装这两个文件.进入目录,安装镜像文件和头文件

安装后将得到了三个非常重要的文件,分别是System.map,config 和 vmlinuz,这三个文件应该已经被拷贝到/boot/路径下.重启系统,进入新配置的内核环境

root@zj-desktop:/usr/src#reboot

2 编译RTAI

如图-4编译RTAI

图4 RTAI配置界面

图5 RTAI运行结果

root@zj- desktop:/usr/src/rtai-3.7#make

安装RTAI

root@zj- desktop:/usr/src/rtai-3.7#make install测试Linux-RTAI

运行结果如图5所示

3 结论

(1)RTAI实现了Adeos内的一个域,这个域的优先级高于Linux内核所在的根域,可以保证所有的RTAI中断和实时任务都不会受Linux本身的影响,从而确保快速的中断响应和实时任务的按时完成.

(2)一个基于Linux和RTAI的实时操作系统.经过理论分析和实验结果证明:相关改进是正确、有效的,扩展后的RTAI能够依照所设定的调度算法对实时任务进行正确调度,RTAI的实时性能也得到了提升.

(3)实践证明 Ubuntu8.04.4 比较稳定,而 9.10版本在reboot之后,会提示“you need load the kern first”,结果添加启动项之后仍然不成功,这是因为本身9.10内核的Wubi安装的一个Bug.

[1] 阮鸿芳,钟家骐.Linux与硬实时扩展系统——RTAI的分析与研究[J].嵌入式操作系统应用,2007,23.

[2] 刘鑫,陆文娟,范海涛.基于RTAI嵌入式Linux硬实时性能研究与实现[J].嵌入式操作系统应用,2006.

[3] 范海涛,王树民.基于RTAI的uClinux硬实时性能的实现[J].电力自动化设备,2006,26(3).

[4] 甘玲,刘柄宏.基于ADEOS的RTAI/Linux的研究及其实时性测试[J].微计算机信息,2009,27(2).

[5] 张巍,李俊,潘金贵.基于RTAI的实时Linux系统构筑及其嵌入式程序移植[J].计算机科学,2007,34(11).

猜你喜欢

内核中断选项
万物皆可IP的时代,我们当夯实的IP内核是什么?
强化『高新』内核 打造农业『硅谷』
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
跟踪导练(四)
阅读理解
跟踪导练(二)(5)
跟踪导练(5)
千里移防,卫勤保障不中断
单项填空精选练习100道