前言
之前写过一篇关于androidO版本的开机logo切换地表最强之Android开机Logo动态替换,
最近正好在研究 NVRAM 相关的东西,那就稍带手加一下这个功能。
开始以为照着之前 O 的修改来就行,没想到 Q 版本相关部分改动还挺大,前前后后折腾了快半个月才搞定。
开机Logo加载原理
1、u-boot logo显示原理
Little Kernel 会在 platform_early_init 阶段首先会获取 lcm params,其工作流程就是透过读id找到现在插入的LCM,
根据 LCM 的分辨率申请相应大小的 frame buffer并确定 frame buffer 起始地址,接着为 logo.bin 预留4M Ram
之后在 platform_init 阶段,直接将 logo.bin 载入到 4M Ram 中
完成载入后,在 platform_init 中 mt_disp_show_boot_logo() 会调用show_logo(0);完成第一张logo显示。
其中的index=0代表在 logo.bin 中压缩的第一张图片,logo.bin 中的图片压缩顺序可以察看文件
vendor\mediatek\proprietary\bootable\bootloader\lk\dev\logo\rules.mk
2、kernel logo 显示原理
Kernel logo 的工作方式与 U-boot logo 不同,是透过init.rc中注册的ÿ