Linux+RTAI实时内核编译
如今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实时内核编译相关推荐
- Linux 2.6内核编译与配置安装升级
Linux系统更新了很多版本更新,我本人认为Linux 2.6内核在Linux系统系列里很好使的文件系统,在此向大家推荐.如今技术不断更新,各种使用文件都已经淘汰.我认为还是有很不错的如Linux 2 ...
- Ethercat解析(四)之搭建RTAI实时内核(Ubuntu12.04)
一.环境 系统:Ubuntu12.04 i386(请注意,amd64暂时不支持该实时内核) 实时补丁:linux-image-3.4-9-rtai-686-pae 二.获取 下载地址: http:// ...
- 【linux系列】内核编译最新教程+常见问题总结
[linux系列]内核编译最新教程+常见问题总结 编译环境 环境准备 编译准备 修改配置 linux 提供的三种配置命令 使用 gconfig 配置 编译内核 安装内核 载入新内核 检查内核 常见问题 ...
- 使用Red Hat Enterprise Linux的实时内核
运行实时内核并评估其对应用程序的潜力和性能优势是值得的. https://www.redhat.com/sysadmin/real-time-kernel 目录 什么是实时内核? 实时安装RHEL W ...
- linux 2.6内核编译_03_配置选项注解
linux 2.6.15.6内核配置(unfinished) http://www.builder.com.cn/2007/1011/545597.shtml 注意: 不同的内核版本配置选项(或组织) ...
- Linux驱动(8)--内核编译与配置
内核编译与配置 1. Menuconfig 2. Kconfig 3. Makefile 4. 内核配置与编译的流程 5. 注意 1. Menuconfig Linux编译器是通过.config文件确 ...
- 【imx6ull-alientek-emmc】linux交叉编译环境 + 内核编译
开发板:imx6ull-alientek-emmc,正点原子的min板子 困惑了好久,第一次搞通,记录一下,希望之后能知其所以然 目录 一.交叉编译环境 1.选择交叉编译器 2.解压 3.配置环境变量 ...
- linux 2.4内核编译,linux 2.4内核编译详解
2.4内核编译详解 内核简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. Linux的一个重要的特点就是其源代码的公开性,所有的内 ...
- Linux学习之内核编译
前言 本次学习Linux系统内核编译,任选4.x系列稳定版或长期版本Linux内核源码,进行源码获取.解压与编译.安装等过程的学习. 注意:一定要保证虚拟硬盘足够大,大概需要30G空闲虚拟硬盘!!!如 ...
最新文章
- OpenCV代码提取:transpose函数的实现
- egg mysql 项目实战,egg.js创建项目,目录介绍,简单使用,sequelize mysql使用
- 中科院召开嫦娥四号任务动员会
- iOS学习之iOS沙盒(sandbox)机制和文件操作复习
- 在gitee上创建自己的仓库步骤
- PDH光端机常见故障问题解决方法
- android 学习链接大集合
- mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
- 【NOIP2014模拟8.25】设备塔
- ios备忘录下载安卓版_IOS版+安卓版,全下载注册教程
- 定时器Quartz和插件pageHelper使用
- kali局域网扫描ip_kali 扫描局域网的QQ
- 自动驾驶仿真:Carsim、NI和VTD联合仿真课题一
- 【DSP入门】DSP2803x算法加速利器之CLA
- delphi mysql
- MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据
- python与环境统计学--两样本均值的差异显著性检验之z检验,t检验和对应例题代码展示(一)
- 论文笔记:AutoAugment
- 松下幸之助何以缔造商业神话 松下幸之助的成长经历与创业传记
- SQL零基础入门学习(十四)
热门文章
- DeFIL赋能应用场景升级,创去中心化金融新时代
- 试简述smtp通信的三个阶段的过程_海格通信有力支撑天通系统正式面向全社会提供服务...
- 客快物流大数据项目(二十八):大数据服务器环境准备
- 计算机毕业设计、实战项目之 [课设文档]基于JSP的在线调查问卷系统[包运行成功]
- 理论讲解:帮助你快速懂得心算十进制转二进制------------一做就会一讲就废系列
- 易福门信号模块AL2341的安装
- android 多屏互动 开发,基于Android的DLNA多屏互动系统的设计与开发
- 短视频如何写爆款文案?爆款短视频文案技巧分享
- [iOS开发]文档导读
- 幼儿课外活动游戏_适合小朋友的活动游戏