RV1109 添加新Logo流程
1.logo的存放的位置
logo分为uboot显示的logo和kernel显示的logo,存放的位置在sdk的kernel根目录下,如果需要添加新的开机logo需要把对应格式的logo存放在
此目录下
2.logo打包成的镜像文件
当我们用build.sh 编译kernel时会把logo打包boot.img中
CMD=`realpath $0` 取到build.sh的绝对路径,sdk中吧build.sh创建软链接到kernel根目录下,实际上在device/rockchip/common/build.sh
COMMON_DIR=`dirname $CMD` 取得CMD的目录device/rockchip/common
TOP_DIR=$(realpath $COMMON_DIR/../../..) 获取sdk根目录
RK_KERNEL_FIT_ITS= device/rockchip/common/boot.its 合成镜像的子镜像的信息
RK_BOOT_IMG=zboot.img
function build_kernel(){
check_config RK_KERNEL_DTS RK_KERNEL_DEFCONFIG || return 0
echo "============Start building kernel============"
echo "TARGET_ARCH =$RK_ARCH"
echo "TARGET_KERNEL_CONFIG =$RK_KERNEL_DEFCONFIG"
echo "TARGET_KERNEL_DTS =$RK_KERNEL_DTS"
echo "TARGET_KERNEL_CONFIG_FRAGMENT =$RK_KERNEL_DEFCONFIG_FRAGMENT"
echo "=========================================="
cd kernel
//编译内核
make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT
make ARCH=$RK_ARCH $RK_KERNEL_DTS.img -j$RK_JOBS
//判断boot.its是否存在,其中包含resource.img uimage dtb,通过调用mk-fitimage.sh中的$TOP_DIR/rkbin/tools/mkimage -f $target_its_file -E -p 0x800 $OUTPUT_TARGET_IMAGE 合成镜像boot.img
if [ -f "$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_KERNEL_FIT_ITS" ]; then
$COMMON_DIR/mk-fitimage.sh $TOP_DIR/kernel/$RK_BOOT_IMG \
$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_KERNEL_FIT_ITS
fi
finish_build
}
编译系统时会根据kernel/arch/arm/Makefile中规则编译单个镜像
最终调用mkimg脚本编译boot.img dtb resource.img 具体路径在\RV1109\kernel\scripts\mkimg
mkimg脚本中调用scripts/resource_tool 把dtb 和logo和成resource镜像
最后我们得到boot.img镜像中就包含着logo dtb uimage
3.uboot解析logo图片流程
显示logo从display logo开始
display subsystem 分为vop->conn->panel 如果需要桥接需要在conn中添加