目录
为什么编译驱动程序之前要先编译内核?
1)驱动程序中要用到内核文件。如 #include <asm/io.h> 其中asm是一个链接文件。根据配置编译的不同可能指向不同的文件,如asm-arm 或asm-mips。配置和编译内核后才会生成asm链接文件。
2)编译驱动时的内核要与板子上运行的内核一致。故在编译驱动前要把编译好的内核更新到板子上。
3)更换板子上的内核后,板子上的其他驱动也要换。板子使用新编译的内核时,板子上原来的驱动也要更换为新编译出来的。所以在编译自己写的驱动程序前,要先编译内核、其他驱动。
1.配置编译内核
1.1 配置
1)首先,进入Linux 源码目录:
cd 100ask_stm32mp157_pro-sdk/Linux-5.4/
不同的开发板对应不同的配置文件,配置文件位于:arch/arm/configs/ 目录下。执行100ask_stm32mp157_pro_defconfig配置:
make 100ask_stm32mp157_pro_defconfig
1.2 编译内核
2)配置完成后,编译内核
make uImage LOADADDR=0xC2000040 -j4
内核编译需要等待一段时间,编译完成后,生成的uImage在arch/arm/boot/ 目录下
1.3 编译设备树
3)编译设备树
make dtbs
编译生成的设备树文件在 arch/arm/boot/dts目录下,此处我们使用的是stm32mp157c-100ask-512d-lcd-v1.dtb