1.3、图片的宏定义cust_display.h(索引序列号) 3
以下源码分析基于C300
Android 开机画面由三部分组成,第一部分在bootloader 启动时显示(uboot);第二部分在启动kernel 时显示(kernel);第三部分在系统启动时(bootanimation)显示(动画)。
uboot、kernel的LOGO(项目中一般这两张图片是一样的,即常说的开机LOGO)。
一、图片的定义
1.1、update脚本
Path:./c300/android/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/update
类似于如下图的这种定义,注意图片必须是.bmp格式
1.2、rules.mk脚本
Note:一般logo目录下会有很多格式的图片,例如hdplus、hvga、hd720,具体使用哪种格式的图片,取决于项目中的配置文件ProjectConfig.mk。例如在c300 orange订单中使用的是Boot_LOGO=hdplus格式,如下图所示:
1.3、图片的宏定义cust_display.h(索引序列号)
Path:c300/android/vendor/mediatek/proprietary/bootable/bootloader/lk/target/c300/include/target/cust_display.h
如在c300中
// Common LOGO index
#define BOOT_LOGO_INDEX 0
#define KERNEL_LOGO_INDEX 38
二、LOGO图片显示的逻辑代码实现
2.1、platform.c
当正常开机的过程中
Path:c300/android/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6739/platform.c
.........else if (g_boot_mode != KERNEL_POWER_OFF_CHARGING_BOOT && g_boot_mode != LOW_POWER_OFF_CHARGING_BOOT) {
if (g_boot_mode != ALARM_BOOT && (g_boot_mode != FASTBOOT) && !bearly_backlight_on) { //正常开机的过程中显示的LOGO
#ifndef MACH_FPGA_NO_DISPLAY
PROFILING_START("show log");
mt_disp_show_boot_logo(); //platform.c中会调用这个方法去显示logo
PROFILING_END();
#endif
}
2.2、mtk_logo.h
方法的结构体定义mtk_logo.h(声明mt_disp_show_boot_logo()方法)
Path:c300/android/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6739/include/platform/mt_logo.h
2.3、mt_logo.c
方法的具体实现mt_logo.c
Path:c300/android/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6739
源码如下所示:
/*
* Show first boot logo when phone boot up
*
*/
void mt_disp_show_boot_logo(void)
{
dprintf(INFO, "[lk logo: %s %d]\n",__FUNCTION__,__LINE__);
mt_logo_get_custom_if();
if (logo_cust_if->show_boot_logo) {
logo_cust_if->show_boot_logo();
} else {
///show_logo(0);
init_fb_screen();
fill_animation_logo(BOOT_LOGO_INDEX, mt_get_fb_addr(), (void *)mt_get_tempfb_addr(), logo_addr, phical_screen);
mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT);
}
return;
}
总结:在修改LOGO图片的时候,需要确认清楚分辨率、命名必须与原来的保持一致、图片格式一致等 。上述的文件分析原理过程大致是显示一张LOGO图片原理过程中涉及到的文件、方法、变量。(注:高通平台的开机LOGO是一个splash.img文件)
当修改了LOGO之后,单独编译对应的目录会生成logo.bin,重新烧录可以直接验证效果。如果有修改对应的lk目录下的文件,还需要单独编译lk。