源码所在位置:petalinux-v2018.2-open_components/components/xlnx-4.14
下载linux实时补丁包:实时补丁
显然:必须下载对应于内核版本的实时补丁包,将补丁包放于与xlnx-4.14同级的目录下
===============================================
gz文件解压:gunzip FileName.gz或者gzip -d FileName.gz
===============================================
cd xlnx-4.14进入内核目录
补丁命令:patch -p1 < ../patch-4.14-rt1.patch
补丁撤销: patch -Rp1 < ../patch-4.14-rt1.patch
如果之前编译或者配置过:请先清除一下
$make clean
$make mrproper
记得选择编译工具arm-xilinx-linux-gnueabi-gcc,如果没有这个工具,请参考该第二部分的内容
$export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
然后先用xilinx的默认配置文件配置内核:再用menuconfig来修改内核:kernel config=>preempt……选择full什么的(全部抢占或者叫硬抢占)。记得将preempt model的上一行那个选项按Y打上*星号,然后退出即可
make ARCH=arm xilinx_zynq_defconfig; make ARCH=arm menuconfig
编译:
- 编译内核输出uImage镜像必须有mkimage工具,如果没有,参考该篇第三部分的内容
make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage -j4
- PS:如果不生成uImage,那么可以不需要mkimage工具,直接输入下面命令将会生成zImage镜像
make ARCH=arm -j4
恭喜!成功了,生成的内核镜像在arch/arm/boot下:
PS:一共有3个镜像:
- Image:未压缩的内核镜像
- zImage:压缩的内核镜像,在运行时会自己解压缩自己
- uImage:使用U-boot头部(也就是用mkimage工具)封装zImage的uImage镜像
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-4.14.0-rt1-xilinx
Created: Sat Sep 29 14:46:09 2018
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4213592 Bytes = 4114.84 KiB = 4.02 MiB
Load Address: 00008000
Entry Point: 00008000
Kernel: arch/arm/boot/uImage is ready