初次编译固件按照机器的性能不同,需要 4~12 小时不等,二次编译需要 5~30 分钟不等,因此有一台高性能的多核服务器,能够显著提高开发效率。
认识 SDK 的关键目录
我们以代号 alpha
的产品为例,整个 SDK 目录下有以下几个关键目录:
device/rockchip/rk356x/alpha:产品配置文件目录
kernel/arch/arm64/boot/dts/rockchip/alpha.dts:关键文件,存放硬件配置信息
kernel/kernel/configs/alpha.config:额外的内核配置文件
IMAGE:历次编译产生的固件
rockdev:存放编译后最新的固件
RKDocs:所有文档都在此目录下
RKTools:相关工具包,例如烧写工具
新建产品 lunch
1 2 3
cd device/rockchip/rk356x/cp -r rk3568_r/ alpha/
1 2 3 4 5 6 7 8 9 10 11
diff AndroidProducts.mk PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/rk3568_r/rk3568_r.mk + $(LOCAL_DIR)/alpha/alpha.mk $(LOCAL_DIR)/rk3566_eink/rk3568_eink.mk COMMON_LUNCH_CHOICES := \ rk3568_r-user \ + alpha-userdebug \ + alpha-user \ rk3566_eink-userdebug \
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
cd alpha/mv rk3568_r.mk alpha.mkvim BoardConfig.mk PRODUCT_UBOOT_CONFIG := rk3568 PRODUCT_KERNEL_CONFIG := rockchip_defconfig rk356x_evb.config android-11.config alpha.config PRODUCT_KERNEL_DTS := alpha BOARD_GSENSOR_MXC6655XA_SUPPORT := false BOARD_CAMERA_SUPPORT_EXT := true BOARD_HS_ETHERNET := true vim alpha.mk PRODUCT_NAME := ALPHA PRODUCT_DEVICE := ALPHA PRODUCT_BRAND := KURETRU PRODUCT_MODEL := KT-ALPHA PRODUCT_MANUFACTURER := KURETRU
新建产品 DTS
1 2 3 4 5
touch kernel/kernel/configs/alpha.configcd kernel/arch/arm64/boot/dts/rockchip/cp rk3568-evb1-ddr4-v10.dtsi alpha.dtsi
1 2 3 4 5 6 7 8 9 10
vim alpha.dts /dts-v1/ ; #include "alpha.dtsi" #include "rk3568-android.dtsi" / { model = "ALPHA" ; compatible = "KURETRU,ALPHA" , "rockchip,rk3568" ; };
开始编译
编译版本的区别:
eng:工程版本,adb 默认打开,root 权限
userdebug:调试版本,adb 默认打开,可提升至 root 权限
user:发布版本,编译优化,adb 默认关闭,无法 root
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
source build/envsetup.shlunch alpha-userdebug ./build.sh -UCApu ./build.sh -UCApuo ./build.sh -UCApu -d beta ./build.sh -UCApu -J 32 ./build.sh -UCApu -V 1.0.0 cd u-boot/./make.sh rk3568 cd kernel/make ARCH=arm64 rockchip_defconfig rk356x_evb.conf android-11.config alpha.config make ARCH=arm64 alpha.img make installclean make
烧写固件
烧写固件时,开发版需要进入 MASKROM 模式或 Loader 模式
板子从工厂出厂时 flash 中没有任何内容,因此会直接进入 MASKROM 模式
二次烧写时,需要再上电的过程中按住 RECOVER 按钮进入 Loader 模式
二次烧写时,也可以在 adb 中执行 reboot loader
进入 Loader 模式,使用此方法不需要按住 RECOVER 按钮
如果一键编译时加上了 -p
参数,则会直接生成 update.img
统一固件,此时使用 RKDevTool
的升级固件
页即可一键完成烧写。
如果没有生成 update.img
,则需要使用 RKDevTool
的下载镜像
页,根据 RKDevTool_manual_v1.2_cn.pdf
的教程,先载入分区表,再分别设置各个分区的内容,然后进行烧写,好处是可以仅烧写部分分区。
参考文档
RKDocs/android/Rockchip_Developer_Guide_Android11_SDK_V1.1.6_CN.pdf
预览: