如今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

Linux+RTAI实时内核编译相关推荐

  1. Linux 2.6内核编译与配置安装升级

    Linux系统更新了很多版本更新,我本人认为Linux 2.6内核在Linux系统系列里很好使的文件系统,在此向大家推荐.如今技术不断更新,各种使用文件都已经淘汰.我认为还是有很不错的如Linux 2 ...

  2. Ethercat解析(四)之搭建RTAI实时内核(Ubuntu12.04)

    一.环境 系统:Ubuntu12.04 i386(请注意,amd64暂时不支持该实时内核) 实时补丁:linux-image-3.4-9-rtai-686-pae 二.获取 下载地址: http:// ...

  3. 【linux系列】内核编译最新教程+常见问题总结

    [linux系列]内核编译最新教程+常见问题总结 编译环境 环境准备 编译准备 修改配置 linux 提供的三种配置命令 使用 gconfig 配置 编译内核 安装内核 载入新内核 检查内核 常见问题 ...

  4. 使用Red Hat Enterprise Linux的实时内核

    运行实时内核并评估其对应用程序的潜力和性能优势是值得的. https://www.redhat.com/sysadmin/real-time-kernel 目录 什么是实时内核? 实时安装RHEL W ...

  5. linux 2.6内核编译_03_配置选项注解

    linux 2.6.15.6内核配置(unfinished) http://www.builder.com.cn/2007/1011/545597.shtml 注意: 不同的内核版本配置选项(或组织) ...

  6. Linux驱动(8)--内核编译与配置

    内核编译与配置 1. Menuconfig 2. Kconfig 3. Makefile 4. 内核配置与编译的流程 5. 注意 1. Menuconfig Linux编译器是通过.config文件确 ...

  7. 【imx6ull-alientek-emmc】linux交叉编译环境 + 内核编译

    开发板:imx6ull-alientek-emmc,正点原子的min板子 困惑了好久,第一次搞通,记录一下,希望之后能知其所以然 目录 一.交叉编译环境 1.选择交叉编译器 2.解压 3.配置环境变量 ...

  8. linux 2.4内核编译,linux 2.4内核编译详解

    2.4内核编译详解 内核简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. Linux的一个重要的特点就是其源代码的公开性,所有的内 ...

  9. Linux学习之内核编译

    前言 本次学习Linux系统内核编译,任选4.x系列稳定版或长期版本Linux内核源码,进行源码获取.解压与编译.安装等过程的学习. 注意:一定要保证虚拟硬盘足够大,大概需要30G空闲虚拟硬盘!!!如 ...

最新文章

  1. OpenCV代码提取:transpose函数的实现
  2. egg mysql 项目实战,egg.js创建项目,目录介绍,简单使用,sequelize mysql使用
  3. 中科院召开嫦娥四号任务动员会
  4. iOS学习之iOS沙盒(sandbox)机制和文件操作复习
  5. 在gitee上创建自己的仓库步骤
  6. PDH光端机常见故障问题解决方法
  7. android 学习链接大集合
  8. mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
  9. 【NOIP2014模拟8.25】设备塔
  10. ios备忘录下载安卓版_IOS版+安卓版,全下载注册教程
  11. 定时器Quartz和插件pageHelper使用
  12. kali局域网扫描ip_kali 扫描局域网的QQ
  13. 自动驾驶仿真:Carsim、NI和VTD联合仿真课题一
  14. 【DSP入门】DSP2803x算法加速利器之CLA
  15. delphi mysql
  16. MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据
  17. python与环境统计学--两样本均值的差异显著性检验之z检验,t检验和对应例题代码展示(一)
  18. 论文笔记:AutoAugment
  19. 松下幸之助何以缔造商业神话 松下幸之助的成长经历与创业传记
  20. SQL零基础入门学习(十四)

热门文章

  1. DeFIL赋能应用场景升级,创去中心化金融新时代
  2. 试简述smtp通信的三个阶段的过程_海格通信有力支撑天通系统正式面向全社会提供服务...
  3. 客快物流大数据项目(二十八):大数据服务器环境准备
  4. 计算机毕业设计、实战项目之 [课设文档]基于JSP的在线调查问卷系统[包运行成功]
  5. 理论讲解:帮助你快速懂得心算十进制转二进制------------一做就会一讲就废系列
  6. 易福门信号模块AL2341的安装
  7. android 多屏互动 开发,基于Android的DLNA多屏互动系统的设计与开发
  8. 短视频如何写爆款文案?爆款短视频文案技巧分享
  9. [iOS开发]文档导读
  10. 幼儿课外活动游戏_适合小朋友的活动游戏