booting logo & booting animation

開機第一張圖片:

圖片位置:

linux_repo/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo

因為 project 選用 FHD 屏幕所以

在linux_repo/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/fhd

file name is :

fhd_uboot.bmp

code 位置:

第1圖是在 lk phase 顯示的。

linux_repo/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6755/platform.c

 538 void platform_init(void)
 539 {

...
...
...
 793 #endif 
 794         } else if (g_boot_mode != KERNEL_POWER_OFF_CHARGING_BOOT && g_boot_mode != LOW_POWER_OFF_CHARGING_BOOT) { 
 795                 if (g_boot_mode != ALARM_BOOT && (g_boot_mode != FASTBOOT)) { 
 796 #ifndef MACH_FPGA_NO_DISPLAY 
 797                 // 
 798                 // here display
 799                 // 
 801                         mt_disp_show_boot_logo(); 
 802 #endif 
 803                 } 
 804         } 
 805 #else 
 806         if (g_boot_mode != ALARM_BOOT && (g_boot_mode != FASTBOOT)) { 
 807 #ifndef MACH_FPGA_NO_DISPLAY 
 812                 mt_disp_show_boot_logo(); 
 813 #endif 
 814         } 
 815 #endif 
 816 #ifdef LK_PROFILING 
 817         time_backlight = get_timer(0); 
 818 #endif 
...
...
...
}

 linux_repo/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6755/mt_logo.c

267 void mt_disp_show_boot_logo(void)                                                                                                                                  
268 {
269         int logo_index = 0;
270         int x = 0;
271         char* test = NULL;
272 
273         dprintf(INFO, "[lk logo: %s %d]
",__FUNCTION__,__LINE__);
274         mt_logo_get_custom_if();
275 
276 #if defined(MTK_CARRIEREXPRESS_PACK)
277 #if 0   // test
278         test = (char *)get_env("VAIBHAV");
279         if (test == NULL) {
280                 dprintf(INFO, "[lk logo: SysEnv is not set]
");
281                 if (set_env("VAIBHAV","5") == 0) {
282                         dprintf(INFO, "[lk logo: SysEnv set to 5 Succesfully]
");
283                         x = 1;
284                 } else {
285                         dprintf(INFO, "[lk logo: SysEnv set fails!!!]
");
286                         return;
287                 }
288         } else {
289                 dprintf(INFO, "[lk logo: SysEnv already set to %d]
",atoi(test));
290         }
291 #endif
292         logo_index = get_logo_index();
293         /*if(x == 1){
294             logo_index = 0;
295             dprintf(INFO, "[lk logo: First Boot So show OM logo]
");
296         }*/
297         dprintf(INFO, "[lk logo: Final logo_index: %d]
",logo_index);
298 #endif
299 
300         if (logo_cust_if->show_boot_logo) {
301                 
306                 logo_cust_if->show_boot_logo();
307         } else {
308                 //
309                 // here display logo
310                 //
312 ///show_logo(0); 313 init_fb_screen(); 314 fill_animation_logo(logo_index, mt_get_fb_addr(), mt_get_tempfb_addr(), logo_addr, phical_screen); 315 mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); 316 } 317 318 return; 319 }

第二張開機圖片

圖片位置:

linux_repo/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo

因為 project 選用 FHD 屏幕所以

在linux_repo/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/fhd

file name is :

fhd_kernel.bmp


第2張圖是在 android init 時顯示的。

init process 呼叫,顯示第2張 開機圖片


linux_repo/device/mediatek/mt6755/init.mt6755.rc

819 # Update the second boot logo 820 service bootlogoupdater /vendor/bin/boot_logo_updater 821 class core 822 oneshot

// 若第一張圖片和第二張圖片是一樣的,

// 則可以將 下列部份 display 圖片 的 code mark 掉,

// 可以減少約 0.1 second 的 開機時間。

linux_repo/vendor/mediatek/proprietary/external/boot_logo_updater/boot_logo_updater.c

183
int main(void) 184 { 185 SLOGD("[boot_logo_updater %s %d]boot_logo_updater, ",__FUNCTION__,__LINE__); 186 int ret = update_boot_reason(); 187 if (ret == 1) { 188 SLOGE("[boot_logo_updater]skip the boot logo! "); 189 set_int_value(LCD_BACKLIGHT_PATH, 120); 190 return 0; 191 } else if (ret == 2) { 192 SLOGD("[boot_logo_updater]schedule on "); 193 } 194 // set parameter before init 195 set_draw_mode(DRAW_ANIM_MODE_FB); 196 anim_init(); //
// here display logo
//
198 show_kernel_logo(); 199 anim_deinit(); 200 201 return 0; 202 }
linux_repo/vendor/mediatek/proprietary/external/libshowlogo/charging_animation.cpp


984 /* 985 * Show kernel logo when phone boot up 986 * 987 */ 988 void show_kernel_logo() 989 { 990 if (MTK_LOG_ENABLE == 1) { 991 SLOGD("[libshowlogo: %s %d]show kernel logo, index = 38 ",__FUNCTION__,__LINE__); 992 } 993 if (error_flag == 0) { 994 #if defined(MTK_CARRIEREXPRESS_PACK) 995 anim_show_logo(get_logo_index(false)); 996 #else //
// here display logo
// 997 anim_show_logo(kernel_logo_position); 998 #endif 999 } 1000 }

開機動畫

linux_repo/frameworks/base/core/res/assets/images/

file name : 

android-logo-mask.png

android-logo-shine.png


未完待續

原文地址:https://www.cnblogs.com/youchihwang/p/6215352.html