一、背景概述
在之前的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>;