zoukankan      html  css  js  c++  java
  • 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


    未完待續

  • 相关阅读:
    关于C++中如何判断文件,目录存在的若干方法
    AStyle2.02在VS2008下的使用
    opencv与wxwidgets冲突(第三方库jpeg,tiff,png,zlib所引起)
    C和C++获取文件大小的方法总结
    跨平台项目组织2
    md5函数C语言实现
    分享本人自编的一个跨平台项目:伙食管理小软件
    win7 vs2008 release mt.exe停止工作
    跨平台项目组织
    SQL注入语句 (很全)
  • 原文地址:https://www.cnblogs.com/youchihwang/p/6215352.html
Copyright © 2011-2022 走看看