1. 簡單描述
- 基于訊為電子rk3568教程
2. 準(zhǔn)備資料
- rk_android12.0_sdk_20220720.tar.gz
3. 編譯Android12
- 解壓
tar -vxf rk_android12.0_sdk_20220720.tar.gz
- 設(shè)置屏幕配置
rk_android12.0_sdk/kernel-4.19/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi
- 整體編譯 Android 固件
source javaenv.sh
java -version
- 使能編譯環(huán)境
source build/envsetup.sh
lunch rk3568_s-userdebug
- 開始整體編譯
./build.sh -AUCKu
rockdev/Image-rk3568_s // 編譯成功鏡像存放位置
- 單獨編譯u-boot (方法一)
./build.sh -U
-
編譯完成后在 u-boot 目錄會生成 rk356x_spl_loader_v1.13.112.bin 文件、uboot.img
文件、 resource.img 三個鏡像文件 -
同 時 編 譯 成 功 后 會 將 rk356x_spl_loader_v1.13.112.bin 、 uboot.img 拷 貝
到 rockdev/Image-rk3568_s 目錄下,rk356x_spl_loader_v1.13.112 會改名為
MiniLoaderAll.bin。 MiniLoaderAll.bin 也就是一級 loader,只需要將 MiniLoaderAll.bin 和 uboot.img 燒寫到開發(fā)板即 可更新 uboot。
- 單獨編譯u-boot (方法二)
cd u-boot/
./make.sh rk3568
- 這樣編譯后會在 uboot 目錄下生成 uboot.img 和 rk356x_spl_loader_v1.13.112.bin,但是不會 拷 貝 到 rockdev/Image-rk3568_s 下 面 , 所 以 需 要 燒 寫 uboot 目 錄 下 的 uboot.img 和rk356x_spl_loader_v1.13.112.bin, 燒 寫 時 將 rk356x_spl_loader_v1.13.112.bin 重 命 名 為MiniLoaderAll.bin,再燒寫。
- 編譯 Android 內(nèi)核(很慢)
./build.sh -CKA
編譯后會在 rockdev/Image-rk3568_s 目錄下生成 boot.img,boot.img 為內(nèi)核鏡像。boot.img
鏡像里面包含了設(shè)備樹鏡像。所以燒寫 boot.img
- 編譯 Android 內(nèi)核(快)
cd kernel-4.19 // 訊為提供的sdk默認(rèn)有 makekernel.sh,沒有創(chuàng)建,內(nèi)容如下
make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang
LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld rockchip_defconfig
android-11.config && make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld BOOT_IMG=../rockdev/Image-rk3568_s/boot.img rk3568-evb1-ddr4-v10.img
./makekernel.sh
BOOT_IMG 是指整編 Android 源碼之后在 rockdev 目錄下生成的 boot.img,所以在單獨編 譯 Android內(nèi)核之前,一定要整編 Android 源碼。整編 Android 源碼生成的 rockdev 目錄下的 boot.img 鏡像里面不僅僅只有 kernel 和 resource,還有其他文件。當(dāng)我們修改了內(nèi)核源碼并單 獨編譯 Android 內(nèi)核時,kernel 和resource 發(fā)生了改變,這時候需要指定一個 boot.img,然后 將新編譯的 kernel 和 resource 覆蓋進(jìn)去。打包完成之后,在 kernel 目錄下會有新 boot.img 鏡像 生成,就可以把這個 boot.img鏡像單獨燒寫到開發(fā)板中進(jìn)行調(diào)試了 如果不指定 BOOT_IMG,會在下載鏡像之后,系統(tǒng)跑進(jìn) recovery 模式,而不是進(jìn)入正常 的啟動流程 rk3568-evb1-ddr4-v10.img 的意思是指定所使用的設(shè)備樹 DTS;打包完后,在 kernel 目錄有 boot.img 鏡像生成,就可以把這個 boot.img 鏡像單獨燒入到 機(jī)器中進(jìn)行調(diào)試了。
- 編譯 Android 文件系統(tǒng)
vim build.sh
:set number!
# make installclean
./build.sh -A
編譯完成后鏡像文件會在 rockdev/Image-rk3568_s 目錄下生成 super.img,單獨燒寫super.img 即可
各種鏡像解釋如下:
- boot.img: 包含 kernel.img 和 resource.img 鏡像文件
-
boot-debug.img: 與 boot.img 的差別是 user 固件可以燒寫這個 boot.img 進(jìn)行
root權(quán)限操作 - config.cfg: 燒寫工具的配置文件,可以直接導(dǎo)入燒寫工具顯示需要燒寫的選項。
- MiniLoaderAll.bin: 包含一級 loader。
- misc.img: 包含 recovery-wipe 開機(jī)標(biāo)識信息,燒寫后會進(jìn)行 recovery。
- parameter.txt: 包含分區(qū)信息。
- pcba_small_misc.img : 包含 pcba 開機(jī)標(biāo)識信息,燒寫后會進(jìn)入簡易版 pcba 模式。
- pcba_whole_misc.img: 包含 pcba 開機(jī)標(biāo)識信息,燒寫后會進(jìn)入完整版 pcba 模式
- recovery.img: 包含 recovery-ramdis、 kernel、 dtb
- super.img: 包含 odm、 product、 vendor、 system、 system_ext 分區(qū)內(nèi)容。
- trust.img: 包含 BL31、 BL32 RK3566/RK3568 沒有生成這個固件, 不需要燒寫
- uboot.img: 包含 uboot 固件
- vbmeta.img: 包含 avb 校驗信息, 用于 AVB 校驗
- update.img: 包含以上需要燒寫的 img 文件, 可以用于工具直接燒寫整個固件包。
- 編譯 Android 模塊
再安卓目錄下運行以下指令,把mm添加到環(huán)境中文章來源:http://www.zghlxwxcb.cn/news/detail-753010.html
source javaenv.sh
source build/envsetup.sh
lunch rk3568_s-userdebug
ls ~/Android/rk_android12.0_sdk/out/target/product/rk3568_s/vendor/lib/hw/audio.primary.rk30board.so
- 打包 update.img
./build.sh -u
打包完成會在 rockdev/Image-rk3568_s 目錄下生成 update.img 鏡文章來源地址http://www.zghlxwxcb.cn/news/detail-753010.html
到了這里,關(guān)于【Linux驅(qū)動開發(fā)】編譯Android12源碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!