Linux+RTAI实时内核编译

来源:互联网 发布:单片机晶振不起振 编辑:程序博客网 时间:2024/05/17 14:14

如今Linux系统正被广泛用于各种嵌入式实时系统中,但由于Linux系统本身不支持硬实时扩展,故限制了其发展。由于Linux + RTAI的双内核方式构成的实时系统方案具有良好性能,本文将简述如何构建这样一个Linux + RTAI的实时系统。

一、准备工作

首先选择一款RTAI的版本,我们这里以RTAI-3.7为例,从官网【www.rtai.org】下载该RTAI压缩包。进入RTAI-3.7的/rtai-3.7/base/arch/i386/patches,查看此版本RTAI支持的内核版本。我们这里选择Linux-2.6.20.21,于是从官网【www.kernel.org】下载该Linux内核压缩包。

登录已安装好的Ubuntu系统,切换到超级用户权限(或直接用超级用户登录)。将前面下载好的Linux内核以及RTAI压缩包复制到/usr/src目录中。

进入/usr/src目录,解压文件。

# tar –jxvf linux-2.6.20.21.tar.bz2

# tar –jxvf rtai-3.7.tar.bz2

解压完成后在/usr/src目录下出现两个文件夹linux-2.6.20.21和rtai-3.7。

注意,如果你想在新安装的Ubuntu系统上进行Linux内核编译与RTAI安装,请连接网络并进行以下操作:

# apt-get update

# apt-get install build-essential

# apt-get install kernel-package

# apt-get install gcc

# apt-get install libncurses5

# apt-get install libncurses5-dev

# apt-get install libqt3-mt-dev

 

二、打上RTAI补丁

进入Linux源码目录,接下来给内核打上相应的RTAI补丁(首先确保你的Ubuntu系统上已安装patch工具)。

# cd linux-2.6.20.21

# patch –p1 –b < /usr/src/rtai-3.7/base/arch/i386/patches/hal-linux-2.6.20.21-i386-1.12-03.patch

 

三、配置Linux内核

先执行以下命令,用以清除目录下所有配置文件和以前生成内核时所产生的中间文件。

# make mrproper

在Ubuntu下有多种配置菜单的方式,推荐使用图形化的配置菜单。

# make menuconfig

(方便起见,可以将/usr/src/linux-headers-`uname -r`/.config拷贝到本目录下。)

下面介绍配置菜单中需要修改的一些选项:

(1)      General setup àLocal version – append to kernel release = -rtai-3.7

(2)      General setup àCreate deprecated sysfs files (NEW) = no

(3)      Enable loadable module support àModule versioning support = no

说明:不同的内核在使用同一模块时区别于它原有的模块,此处不选。

(4)      Enable loadable module support àModule unloading

说明:这个选项可以卸载不再使用的模块,如果不选将不能卸载任何模块。

(5)      Processor type and features àSymmetric multi – processing support(对称多处理器支持)= no

说明:如果有多个CPU或者使用的是多核CPU就选上,此时“EnhancedReal Time Clock Support”选项必须开启,“Advanced Power Management”选项必须关闭。

(6)      Processor type and features àInterrupt pipeline = yes

(7)      Processor type and features àSubarchitecture Type(子类型架构)= PC – compatible(标准的PC或兼容机)

(8)      Processor type and features àProcessor family(处理器系列)= core2 / newer xeon(根据实际CPU选择,例如酷睿双核)

(9)      Processor type and features àGeneric x86 support(通用x86支持)= no(若CPU能在上述“Processor family”中找到,则可不选)

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

(11)  Processor type and features àPreemption Model(内核抢占模式)àPreemptible Kernel (Low – Latency Desktop)(适用运行实时程序的主动内核抢占)= yes

(12)  Power management options (ACPI,APM) àPower Management support(电源管理选项)= no

说明:电源管理有APM和ACPI两种标准且不能同时使用,即使关闭该选项,X86上运行的Linux也会在空闲时发出HLT指令将CPU进入睡眠状态。

(13)  Power management options (ACPI,APM) àCPU Frequency scaling(CPU变频控制)àCPU Frequency scaling Power management options = no

说明:CPU变频控制允许在运行中改变CPU主频,达到省电和降温的目的,但是这个驱动不会自动改变CPU的时钟速度,选择no。

 

四、编译及安装Linux内核

# make-kpkg clean

# make-kpkg –initrd kernel_image kernel_headers

当编译结束后,会在/usr/src目录下生成两个文件,分别是镜像文件和头文件。进入目录,安装镜像文件和头文件。

# dpkg –I linux-headers-2.6.20.21-rtai-3.7_2.6.20.21-rtai-3.7-10.00.Custom_i386.deb

# dpkg –Ilinux-image-2.6.20.21-rtai-3.7_2.6.20.21-rtai-3.7-10.00.Custom_i386.deb

安装后将得到三个非常重要的文件,分别是System.map,config和vmlinuz,可在/boot/目录下找到。接着重启系统,进入新配置的内核环境。

# shutdown –r now

 

五、编译及安装RTAI

进入RTAI源码目录,进行简单的配置后即可编译和安装。

# cd /usr/src/rtai-3.7

# make menuconfig

General àLinux source trr = /usr/src/linux-2.6.20.21(也可直接创建软链接 #ln –s linux-2.6.20.21 linux)

Machine(x86) àNumber of CPUs (SMP - only) = 2(CPU核数)

# make

# make install

 

六、测试

# cd /usr/realtime/testsuite/kern/latency

# ./run

0 0
原创粉丝点击