搭建ARM 交叉编译工具链
这里使用的是petalinux自带的交叉编译工具链
source /opt/pkg/petalinux/settings.sh
source /tools/Xilinx/Vivado/2018.3/settings64.sh
向linux内核打入补丁:
切换到xenomai内核源码路径,然后输入下面指令进入打补丁:
./scripts/prepare-kernel.sh --arch=arm --ipipe=<path_to_ipipe patch> --linux=<path_to_linux>
加载zynq配置文件:
先把是xilinx_zynq_defconfig配置文件放到内核的 /linux-4.14.36/arch/arm/configs里面,切换到linux内核源码路径,然后输入下面指令加载zynq配置文件:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xilinx_zynq_defconfig
内核配置:
换到linux内核源码路径:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
需要关闭的配置有:
CPU Power Management --->
CPU Frequency scaling --->
[] CPU Frequency scaling
CPU Idle --->
[] CPU idle PM support Memory Management options --->
[ ] Allow for memory compaction
记得要保存配置
编译内核:
配置的信息都已经配置完了,接下里需要编译内核,生成可以供u-boot加载的uImage文件
切换到linux内核源码路径,然后输入下面指令编译内核:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage
此指令编译出来的是arch/arm/boot/zImage,还需要通过u-boot-tools来进行转化
// 安装u-boot-tools (sudo apt-get install u-boot-tools)
zImage转化为arch/arm/boot/uImage:
mkimage -A arm -O linux -T kernel -C none -a 0x00200000 -e 0x00200000 -n "Linux-4.14.36" -d arch/arm/boot/zImage arch/arm/boot/uImage
转换完成之后会在/linux-4.14.36/arch/arm/boot 里面生成uImage内核镜像
编译设备树文件:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
编译xenomai:
切换到xenomai目录,开始编译xenomai
./configure CFLAGS="-march=armv7-a -mfpu=vfp3 -mfloat-abi=hard" LDFLAGS="-march=armv7-a" --build=i686-pc-linux-gnu --host=arm-none-linux-gnueabi --with-core=cobalt --enable-smp --enable-tls CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld
创建xenomai
make -j$(nproc) DESTDIR=`pwd`/build-arm install
此时即可在build-arm目录下找到xenomai编译后的相关库及可执行文件。