初次编译固件按照机器的性能不同,需要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