rk3568 修改开机显示logo
Android 显示 logo 的作用是为了标识应用程序或设备的品牌和身份。在应用程序中,logo 可以帮助用户快速识别应用程序,并与其他应用程序区分开来。在设备中,logo 可以帮助用户识别设备的品牌和型号,以及与其他设备区分开来。此外,logo 还可以作为品牌宣传和营销的一种方式,帮助品牌建立品牌形象和认知度。
提示: Android10之后增加logo分区,顾名思义存放logo相关图片,解除内核分区对logo资源大小限制。
文章目录
- rk3568 修改开机显示logo
- 1. 开机logo构成
- 1.1 logo 格式说明
- 1.2 生成logo
- 1.2.1 Windows 借助PS(Photoshop) 转换图片
- 1.2.2 Ubuntu 命令转换图片
- 2. 开机logo预置
- 2.1 logo验证
- 2.2 logo打包
- Tips
- 总结
1. 开机logo构成
rk3568开机logo由 uboot和kernel两阶段所用图片构成。uboot启动阶段主动加载 logo.bmp,kernel启动阶段会加载logo.bmp和logo_kernel.bmp。在内核编译时这两张图片会打包到 resource.img镜像,然后再合并到boot.img;logo文件直接关系boot.img大小,boot.img分区超出分区表标定大小会导致无法刷机或升级失败。
ls *.bmp -l
-rw-rw-r-- 1 user user 12936 May 8 12:41 logo.bmp
-rw-rw-r-- 1 user user 22364 May 8 12:41 logo_kernel.bmp
以rk3568 Android11 为例;分区表中分配32MB给 boot.img,替换开机logo后boot.img 文件小于32M。
1.1 logo 格式说明
Rockchip芯片开机logo目前只支持 bmp格式,并且位深度支持8、32bit。其它格式图片请等待官方声明。
名称 | 文件类型 | 位深度 | 使用阶段 | 示例 |
---|---|---|---|---|
logo.bmp | bmp | 8bit | uboot | |
logo_kernel.bmp | bmp | 32bit | uboot,kernel |
1.2 生成logo
Windows和Linux均可转换图片。至于转换效率和上手难易程度,因人而异。用擅长的工具做正确的事,没有优略之分。
1.2.1 Windows 借助PS(Photoshop) 转换图片
- 加载图片
PS --> 打开需要转换图片 - 转为xxx.bmp(32bit)
图像–>模式–>RGB颜色;另存为–>bmp–>32bit;选择合适的存储位置。 - 转为xxx.bmp(8bit)
图像–>模式–>索引颜色;另存为–>bmp–>8bit;选择合适的存储位置。
1.2.2 Ubuntu 命令转换图片
尝试过此方法并没转换到需要的格式。
- 安装 convert
sudo apt-get install imagemagick
- 转换图片格式
convert logo.png -depth 8 logo.bmp
2. 开机logo预置
Rockchip系列芯片开机 Logo 存放在 kernel目录的 logo.bmp、logo_kernel.bmp,内核编译后同 内核设备树打包到 resource.img。Android源码编译完整升级包时会额外将u-boot阶段充电相关显示画面一并打包到 resource.img,以显示logo方式显示充电画面、低电量等画面。Android10 以后支持中加载logo分区,logo.img镜像中包含开机logo、关机充电画面等图片,系统启动过程优先加载此分区中的资源。
2.1 logo验证
- 临时验证
替换kernel目录下 logo.bmp、logo_kernel.bmp
编译内核,刷机验证logo效果 - 永久生效
在内核中提交关于logo修改后的补丁 - 有logo分区,临时验证
编译选择增加开机logo,否则原系统无此分区。
以rk3568_r工程为例,在device/rockchip/rk356x/rk3568_r/rk3568_r.mk
选择增加开机logo。
BOARD_WITH_SPECIAL_PARTITIONS := baseparameter:1M,logo:16M
- 导入到设备
adb push xxx.bmp /sdcard/
adb push logo.bmp /sdcard/
adb push kernel_logo.bmp /sdcard
- 制作 logo.img镜像
两种logo图片中间需要512对齐,truncate -s %512 logo.img就是做512对齐
adb shell
cd /sdcard
cat logo.bmp > logo.img && truncate -s %512 logo.img && cat logo_kernel.bmp >> logo.img
- 写入 logo 分区
# 需要root权限才能写入
su
# dd 命令写入 logo.img
dd if=logo.img of=/dev/block/by-name/logo
2.2 logo打包
- 常规方式
编译内核下的logo图片,同系统打包到升级包。 - 带logo分区
将制作 logo.img 预置到源码 device/rockchip/xxx/xxx[projectName],编译时自动拷贝到镜像目录。以rk3568_r工程为例,在device/rockchip/rk356x/rk3568_r/rk3568_r.mk
选择增加拷贝规则。
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/logo.img:rockdev/Image-$TARGET_PRODUCT/logo.img
Tips
- 开机logo所用图片分辨不大于系统分辨率,否则会出现显示不全屏或内容不全。
- 开机logo显示效果与图片质量直接关联,图片质量越好显示越清晰,当然资源包会越大。
- 开机过程只亮背光无开机logo,很可能logo所用图片格式与系统要求不符。
总结
事无巨细,细节决定成败。