这是本文档旧的修订版!


认识一些目录,以cc6ul为例:

bitbake -c compile virtual/kernel\ 编译的结果在\ tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/build下 \

而如果我们用bitbake -c devshell virtual/kernel ,实际上在这个devshell的初始路径是映射在tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/git目录。总的来说tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/是linux相关的目录,任何内核或BSP开发都在这个目录这下。\

和以往的版本不同,如果我们进入devshell,编译完Linux内核后,\ ls -la ../build来查看一下编译结果的目录, 在tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0下,默认并没有.config,\ 因此,make dtbs会报错\

为了能正常编译设备树,需要指定平台架构,这实际上也是有好处的,毕竟我们只要自己要开发的平台,让编译器把所有x86和其它厂家相关的东西都编译一遍也是一种浪费。

正常开发流程:

进入devshell
bitbake -c devshell virtual/kernel     
做一些修改 (下面是android,dey可能不一样或是更简)
make ARCH=arm64 CC=clang-10 LD=ld.lld-10 CROSS_COMPILE=aarch64-linux-gnu- ccimx8_android_defconfig
make ARCH=arm64 CC=clang-10 LD=ld.lld-10 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
make ARCH=arm64 CC=clang-10 LD=ld.lld-10 CROSS_COMPILE=aarch64-linux-gnu- savedefconfig
或是cc6ul用
make ARCH=arm ccimx6ul_defconfig
make ARCH=arm menuconfig

如果要编译整个linux内核zImage,直接make, 对cc6要用的uImage则要make LOADADDR=0x10800000 uImage ,\ 生成的内核在arch/arm/boot/zImage

编译设备树只需 make dtbs

生成的设备树:\ arch/arm/boot/dts/imx6ul-ccimx6ulsbc-id135.dtb \ arch/arm/boot/dts/imx6ul-ccimx6ulsbc-wb.dtb \

要清空git区变化,用git clean -dfx

更多参考:https://onedigi.atlassian.net/wiki/spaces/~descalon/pages/22461909723/Kernel+development