RK3568 Android12 kernel logo跟uboot logo使用同一个logo文件,节省boot.img空间

一、背景概述

在之前的3128平台上是只有一个logo的,但是新的3568 Android12 平台开机logo有两个,一个是uboot显示的logo,文件名是logo.bmp;另一个是kernel显示的logo,文件名是logo_kernel.bmp。两个文件都放在kernel-4.19/目录下:

uboot和kernel的logo分开两个文件,有其好处可以展示两个不同的客户logo,但是实际上通常我们只要展示同一个logo就行了,两个logo放同一个内容的logo有点浪费空间,而且如果logo是1080p且色彩比较丰富的话,会让boot.img太大导致编译失败。

所以就想着在不改变先有代码逻辑的基础上,只打包一个logo文件进去就行了,让调用logo的地方都调用同一个文件

二、解决方案

1. 修改打包脚本,只打包logo.bmp得到image文件,不打包logo_kernel.bmp

 kernel-4.19/arch/arm64/Makefile文件修改

--- a/Android/kernel-4.19/arch/arm64/Makefile
+++ b/Android/kernel-4.19/arch/arm64/Makefile
@@ -197,9 +197,9 @@ ifdef CONFIG_MODULES
 endif
 
 LOGO := $(notdir $(wildcard $(srctree)/logo.bmp))
-LOGO_KERNEL := $(notdir $(wildcard $(srctree)/logo_kernel.bmp))
+#LOGO_KERNEL := $(notdir $(wildcard $(srctree)/logo_kernel.bmp))
 
-%.img: rockchip/%.dtb kernel.img $(LOGO) $(LOGO_KERNEL)
+%.img: rockchip/%.dtb kernel.img $(LOGO) #$(LOGO_KERNEL)
        $(Q)$(srctree)/scripts/mkimg --dtb $*.dtb

kernel-4.19/scripts/mkimg文件修改

--- a/Android/kernel-4.19/scripts/mkimg
+++ b/Android/kernel-4.19/scripts/mkimg
@@ -48,8 +48,8 @@ fi
 LOGO_PATH=${srctree}/logo.bmp
 [ -f ${LOGO_PATH} ] && LOGO=logo.bmp
 
-LOGO_KERNEL_PATH=${srctree}/logo_kernel.bmp
-[ -f ${LOGO_KERNEL_PATH} ] && LOGO_KERNEL=logo_kernel.bmp
+# LOGO_KERNEL_PATH=${srctree}/logo_kernel.bmp
+# [ -f ${LOGO_KERNEL_PATH} ] && LOGO_KERNEL=logo_kernel.bmp
 
 KERNEL_IMAGE_PATH=${objtree}/arch/${ARCH}/boot/Image
 KERNEL_IMAGE_ARG="--kernel ${KERNEL_IMAGE_PATH}"
@@ -230,18 +230,18 @@ if [ -x ${srctree}/scripts/bmpconvert ]; then
        if [ -f ${LOGO_PATH} ]; then
                ${srctree}/scripts/bmpconvert ${LOGO_PATH};
        fi
-       if [ -f ${LOGO_KERNEL_PATH} ]; then
-               ${srctree}/scripts/bmpconvert ${LOGO_KERNEL_PATH};
-       fi
+       # if [ -f ${LOGO_KERNEL_PATH} ]; then
+       #       ${srctree}/scripts/bmpconvert ${LOGO_KERNEL_PATH};
+       # fi
 fi
 
 if [ "${srctree}" != "${objtree}" ]; then
        if [ -f ${LOGO_PATH} ]; then
                cp -a ${LOGO_PATH} ${objtree}/;
        fi
-       if [ -f ${LOGO_KERNEL_PATH} ]; then
-               cp -a ${LOGO_KERNEL_PATH} ${objtree}/;
-       fi
+       # if [ -f ${LOGO_KERNEL_PATH} ]; then
+       #       cp -a ${LOGO_KERNEL_PATH} ${objtree}/;
+       # fi
 fi
 scripts/resource_tool ${DTB_PATH} ${LOGO} ${LOGO_KERNEL} >/dev/null

kernel-4.19/scripts/mkmultidtb.py文件修改

--- a/Android/kernel-4.19/scripts/mkmultidtb.py
+++ b/Android/kernel-4.19/scripts/mkmultidtb.py
@@ -48,7 +48,8 @@ def main():
         target_dtb_list += ' ' + new_file
 
     print target_dtb_list
-    os.system('scripts/resource_tool logo.bmp logo_kernel.bmp ' + target_dtb_list)
+ #   os.system('scripts/resource_tool logo.bmp logo_kernel.bmp ' + target_dtb_list)
+    os.system('scripts/resource_tool logo.bmp ' + target_dtb_list)
     os.system('rm ' + target_dtb_list)
 
 if __name__ == '__main__':

2. 把调用logo_kernel.bmp的地方改成logo.bmp

kernel-4.19/arch/arm64/boot/dts/rockchip/rk3568.dtsi

--- a/Android/kernel-4.19/arch/arm64/boot/dts/rockchip/rk3568.dtsi
+++ b/Android/kernel-4.19/arch/arm64/boot/dts/rockchip/rk3568.dtsi
@@ -242,7 +242,7 @@
                        route_dsi0: route-dsi0 {
                                status = "disabled";
                                logo,uboot = "logo.bmp";
-                               logo,kernel = "logo_kernel.bmp";
+                               logo,kernel = "logo.bmp";
                                logo,mode = "center";
                                charge_logo,mode = "center";
                                connect = <&vp0_out_dsi0>;
@@ -250,7 +250,7 @@
                        route_dsi1: route-dsi1 {
                                status = "disabled";
                                logo,uboot = "logo.bmp";
-                               logo,kernel = "logo_kernel.bmp";
+                               logo,kernel = "logo.bmp";
                                logo,mode = "center";
                                charge_logo,mode = "center";
                                connect = <&vp0_out_dsi1>;
@@ -258,7 +258,7 @@
                        route_edp: route-edp {
                                status = "disabled";
                                logo,uboot = "logo.bmp";
-                               logo,kernel = "logo_kernel.bmp";
+                               logo,kernel = "logo.bmp";
                                logo,mode = "center";
                                charge_logo,mode = "center";
                                connect = <&vp0_out_edp>;
@@ -266,7 +266,7 @@
                        route_hdmi: route-hdmi {
                                status = "disabled";
                                logo,uboot = "logo.bmp";
-                               logo,kernel = "logo_kernel.bmp";
+                               logo,kernel = "logo.bmp";
                                logo,mode = "center";
                                charge_logo,mode = "center";
                                connect = <&vp1_out_hdmi>;
@@ -274,7 +274,7 @@
                        route_lvds: route-lvds {
                                status = "disabled";
                                logo,uboot = "logo.bmp";
-                               logo,kernel = "logo_kernel.bmp";
+                               logo,kernel = "logo.bmp";
                                logo,mode = "center";
                                charge_logo,mode = "center";
                                connect = <&vp1_out_lvds>;
@@ -282,7 +282,7 @@
                        route_rgb: route-rgb {
                                status = "disabled";
                                logo,uboot = "logo.bmp";
-                               logo,kernel = "logo_kernel.bmp";
+                               logo,kernel = "logo.bmp";
                                logo,mode = "center";
                                charge_logo,mode = "center";
                                connect = <&vp2_out_rgb>;

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: rk uboot logo分区是在Rockchip平台下的U-Boot bootloader中的logo区域。这个分区用于存储设备启动时显示的品牌LOGO或者其他的图形界面。在启动期间,当设备进入U-Boot bootloader时,该区域的图像将会被显示。 RK U-Boot logo分区通常包含了厂商的标志或者是其他品牌部署需要的图形,这个分区被称为boot logo分区。这里的rk是指Rockchip,一个集成电路设计公司。 RK U-Boot logo分区一般体积较小,往往只有几十KB或数百KB大小。管理这个分区可以使用命令行或者其他专门的软件,这些软件可以负责将图像文件写入分区。 RK U-Boot logo分区的重要性在于能够为厂商不仅仅提供一个标志,同时确保了良好的用户体验。现在,品牌LOGO已经成为了区分产品的一种方式,而这个分区也强调了不同平台的不同体系架构,并提供了一个共同的工具,用于管理各种设备的启动菜单和图形元素。 ### 回答2: rk uboot logo分区是申威科技公司针对RK处理器平台开发的一种开机logo显示方案。该方案采用uboot引导程序进行控制,通过分区的方式实现logo显示。 在rk uboot logo分区方案中,将显示logo的资源文件打包成一个固定格式的文件,并将其烧录至特定的分区中。uboot在启动时会自动加载该分区的logo资源文件,然后在屏幕上显示logo图案。 与传统的开机logo显示方案相比,rk uboot logo分区的优势在于其灵活性和可重用性。由于logo资源文件与系统分开存放,因此可以方便地更新或修改logo样式。同时,不同型号的产品也可以共用同一套logo资源文件,减少开发成本和时间。 总之,rk uboot logo分区是一种简单易用、灵活可靠的系统开机logo显示方案,已经得到越来越广泛的应用。 ### 回答3: rk uboot logo分区是指在嵌入式设备中,使用Rockchip处理器的uboot引导程序时,将不同的logo图标分区存储在该设备的闪存中,通过uboot程序调用不同的logo图标来显示在启动过程中。 Rockchip处理器是当前市场上使用最广泛的一款嵌入式处理器,其uboot引导程序是启动整个系统的重要组成部分。而通过使用rk uboot logo分区技术,可以为不同的设备制作独特的启动logo,提升品牌形象和用户体验。 rk uboot logo分区技术的实现过程是将多个不同的logo图标按照设备型号、版本等分类,存储在闪存的不同分区中。当设备启动时,uboot程序会根据设备的型号、版本等信息读取相应的logo图标,并将其显示在屏幕上。这样做的好处是可以提升品牌形象和用户体验,增强用户对产品的信任感和归属感。 总之,rk uboot logo分区技术是一种高效的嵌入式设备启动logo管理方式,可以为不同的设备生产独特的logo图标,提升品牌形象和用户体验。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值