此方法常用于 kernel 的开发和调试,以下的方法既编译 kernel 部分时, 同
时打包成 boot.img, 这样加快了我们开发的速度;
进入内核目录下, 输入以下命令:
cd kernel
make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/clang
LD=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/ld.lld rockchip_defconfig
android-11.config && make ARCH=arm64
CC=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/clang
LD=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/ld.lld
BOOT_IMG=../rockdev/Image-rk3568_r/boot.img rk3568-evb1-ddr4-v10.img
为方便使用,可以将上述命令写成脚本,在 kernel 目录下创建 makekernel.sh, 在调试的过程中直接在 kernel 目录下执行该脚本,makekernel.sh 内容为:
#!/bin/sh
make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/clang
LD=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/ld.lld rockchip_defconfig
android-11.config && make ARCH=arm64
CC=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/clang
LD=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/ld.lld
BOOT_IMG=../rockdev/Image-rk3568_r/boot.img rk3568-evb1-ddr4-v10.img
我们来解释以上命令是什么意思!
1. BOOT_IMG是指定前置的boot.img,因为boot.img镜像里面不单独只有kernel
和 resource,还有其他文件,所以要指定个 boot.img 把新的 kernel 和 resource 覆
盖进去,boot.img 的位置在所编译出来的 rockdev/Image-rk3568_r/目录下;
2. rk3568-evb1-ddr4-v10.img 是指定所使用的设备树 DTS;
3 注意:如果不指定 BOOT_IMG,会导致在下载后,系统会跑进了 Recovery
模式(或者引起其他启动错误),而不是进入正常的启动流程;
打包完后,在 kernel 目录有 boot.img 镜像生成,就可以把这个 boot.img 镜像
单独烧入到机器中进行调试了。