imx6上搭建xenomai

来源:互联网 发布:java replace用法 编辑:程序博客网 时间:2024/06/03 07:57

在i.mx6上搭建xenomai

在i.mx6上主要要构建uboot, 带xenomai的kernel

U-Boot编译

1. 下载交叉编译工具:

这里推荐采用直接安装的方法,也可以通过下载gcc-linaro进行编译安装
在ubuntu 16.04的环境下

sudo apt-get install gcc-arm-linux-gnueabihf

再通过

 arm-linux-gnueabi-gcc -v

来查看安装情况。

2. 解压下载U-boot源代码,并设置环境变量
源码可以通过http://git.toradex.com/cgit/u-boot-toradex.git/进行获得。
注:下载的源码直接用Linux进行git,不要在windows下,否则下载的链接关系会失效

设置环境变量(可写入.bashrc文件),直接运行即可

export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabihf-

3. 配置uboot
这里我使用i.mx6的 uboot预定义配置,

make colibri_imx6_nospl_defconfig

4. 进一步的图形化修改配置选项(如果不修改,不需要这一步)

make menuconfig

5. 编译,生成u-boot.bin

make -j3 2>&1| tee build.log    

这里的-j3 里的3指的是线程数量,就是你要用几个线程去编译这个工程,一般会是 CPU核心数的2倍,tee的作用同时输出到控制台和文件。make > build.log 是将所有标准输出到这个文件中,并没有定义标准错误应该是定义到了标准输出,也就是说如果make执行出现错误,那么就不会写到 build.log中,而是输出到屏幕上,2>&1是错误和结果都重定向到build.log中!
这样生成的u-boot.bin即为所需

内核编译

1. 下载解压内核文件和xenomai文件
内核源码可以通过http://git.toradex.com/cgit/linux-toradex.git/获得,直接解压即可
xenomai源码可以通过http://xenomai.org/downloads/xenomai/stable/获得,直接解压即可
ipipe.patch补丁文件需要根据http://xenomai.org/downloads/ipipe/v4.x/arm/下载合适的版本再制作而成。

保证内核源码和xenomai源码在同一目录下,我的为/home/xun/Downloads目录下,并把制作的ipipe.patch放入xenomai文件夹中

2.往内核打入xenomai补丁
进入linux-toradex文件夹,运行

../xenomai-3.0.5/scripts/prepare-kernel.sh --linux=/home/xun/Downloads/linux-toradex --arch=arm --adeos=/home/xun/Downloads/xenomai-3.0.5/ipipe.patch

这个步骤主要是产生各种checking file,主要是将Linux和xenomai两个内核链接到一起,还需要编译Linux内核。

3. 编译内核
由于之前可以构建好编译工具,可以直接开始进行编译,当然先设置好环境变量

export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabihf-

然后先复制默认配置到系统文件中

cp /home/xun/Downloads/linux-toradex/arch/arm/configs/colibri_imx6_defconfig .config

再继续进行内核功能的选择配置

make menuconfig ARCH=arm

注:在make menuconfig时,如果遇到 fatal error: curses.h: No such file or directory
这时候只要sudo apt-get install libncurses5-dev libncursesw5-dev从而安装ncurses-devel包即可

再进行内核配置,关于具体的内核配置,后面会专门讲到。配置完成后,保存好自己的配置,以后可以直接使用

cp .config xun.config

直接开始编译内核

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j3 2>&1| tee build.log

注:在make最后生成vmlinux时,遇到/bin/sh: 1: lzop: not found错误,通过安装lzoplzop压缩工具包即可 sudo apt-get install lzop

最后产生的vmlinux在源文件目录,产生的zImage在/linux-toradex/arch/arm/boot目录下。

生成uImage

将内核编译完后zImage放在u-boot根目录下的tools文件夹中,保证zImage和mkimage放在同一个目录下,执行:

./mkimage -A arm -O linux -T kernel -C none -a 10008000 -e 10008000 -n linux-4.1.19 -d zImage uImage

则得到生成的uImage,这样就直接可以下载运行了
这里的uImage是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。
用法:
-A arm —- 架构是arm
-O linux —- 操作系统是linux
-T kernel —- 类型是kernel
-C none —- 压缩类型为无压缩
-a 10008000 —- image的载入地址(hex)
-e 10008000 —- 内核的入口地址(hex),(旧的版本,应当偏移0x40为10008040,因为信息头的大小是0x40)
-n linux-4.1.19 —- image的名字
-d zImage —- 无头信息的image文件名
uImage —- 加了头信息之后的image文件名

原创粉丝点击