一、编译环境的搭建
参考:安装交叉编译器 arm-linux-gnueabihf-gcc-CSDN博客
二、通过menuconfig去配置 .config文件来编译内核的指令
1、首先指定交叉编译链
export CROSS_COMPILE=arm-linux-gnueabihf-
2、进入内核源码根目录,依次执行以下指令:
make ARCH=arm xilinx_zynq_defconfig
make ARCH=arm menuconfig
make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage
在执行完make ARCH=arm menuconfig指令后会进入如下界面,然后就需要根据自己的需要去配置内核信息
配置完的结果会写入根目录下的.config文件里
(因为项目需求需要编译内核,但编译出来的系统和之前厂商提供的系统相比少了很多外设,一直以为是设备树源码的问题、内核源码的问题、设备树和内核不匹配的问题,排除了很久发现是menuconfig配置的问题,后来menuconfig的配置也尝试了很多遍,还是没有解决,根本原因还是在于经验不足,menuconfig的配置信息太过繁杂,所以一直没有配置对)
三、通过源码中的config文件去配置.config文件来编译内核的指令
为了解决上面的问题,去查看了adi官网编译内核的方法,官网连接如下:
从源代码构建 Zynq Linux 内核和设备树 [Analog Devices Wiki]
然后尝试了新的编译指令:
这个指令用来配置内核:
make zynq_xcomm_adv7511_defconfig
我们可以看出这个指令的效果和配置menuconfig的效果是一样的,这个指令是把厂商提供的zynq_xcomm_adv7511_deconfig文件写进了根目录下的.config下,zynq_xcomm_adv7511_deconfig文件所在目录如下图所示:
这个指令用来编译内核:
make -j5 UIMAGE_LOADADDR=0x8000 uImage
至此,涉及ADI驱动的内核配置就完成啦!
(其实在执行完第一个指令之后,是可以通过make ARCH=arm menuconfig查看进行了哪些配置的,直接查看zynq_xcomm_adv7511_deconfig文件也可以)