開機第一張圖片:

圖片位置:

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

  void platform_init(void)
{ ...
...
...
#endif
} 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)) {
#ifndef MACH_FPGA_NO_DISPLAY
//
// here display
//
mt_disp_show_boot_logo();
#endif
}
}
#else
if (g_boot_mode != ALARM_BOOT && (g_boot_mode != FASTBOOT)) {
#ifndef MACH_FPGA_NO_DISPLAY
mt_disp_show_boot_logo();
#endif
}
#endif
#ifdef LK_PROFILING
time_backlight = get_timer();
#endif
...
...
...
}

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

 void mt_disp_show_boot_logo(void)
{
int logo_index = ;
int x = ;
char* test = NULL; dprintf(INFO, "[lk logo: %s %d]\n",__FUNCTION__,__LINE__);
mt_logo_get_custom_if(); #if defined(MTK_CARRIEREXPRESS_PACK)
#if 0 // test
test = (char *)get_env("VAIBHAV");
if (test == NULL) {
dprintf(INFO, "[lk logo: SysEnv is not set]\n");
if (set_env("VAIBHAV","") == ) {
dprintf(INFO, "[lk logo: SysEnv set to 5 Succesfully]\n");
x = ;
} else {
dprintf(INFO, "[lk logo: SysEnv set fails!!!]\n");
return;
}
} else {
dprintf(INFO, "[lk logo: SysEnv already set to %d]\n",atoi(test));
}
#endif
logo_index = get_logo_index();
/*if(x == 1){
294 logo_index = 0;
295 dprintf(INFO, "[lk logo: First Boot So show OM logo]\n");
296 }*/
dprintf(INFO, "[lk logo: Final logo_index: %d]\n",logo_index);
#endif if (logo_cust_if->show_boot_logo) { logo_cust_if->show_boot_logo();
} else {
//
// here display logo
//
///show_logo(0);
init_fb_screen();
fill_animation_logo(logo_index, mt_get_fb_addr(), mt_get_tempfb_addr(), logo_addr, phical_screen);
mt_disp_update(, , CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT);
} return;
}

第二張開機圖片

圖片位置:

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)
{
SLOGD("[boot_logo_updater %s %d]boot_logo_updater,\n",__FUNCTION__,__LINE__);
int ret = update_boot_reason();
if (ret == ) {
SLOGE("[boot_logo_updater]skip the boot logo!\n");
set_int_value(LCD_BACKLIGHT_PATH, );
return ;
} else if (ret == ) {
SLOGD("[boot_logo_updater]schedule on\n");
}
// set parameter before init
set_draw_mode(DRAW_ANIM_MODE_FB);
anim_init();
//
// here display logo
//
show_kernel_logo();
anim_deinit(); return ;
}
linux_repo/vendor/mediatek/proprietary/external/libshowlogo/charging_animation.cpp

  /*
985 * Show kernel logo when phone boot up
986 *
987 */
void show_kernel_logo()
{
if (MTK_LOG_ENABLE == ) {
SLOGD("[libshowlogo: %s %d]show kernel logo, index = 38 \n",__FUNCTION__,__LINE__);
}
if (error_flag == ) {
#if defined(MTK_CARRIEREXPRESS_PACK)
anim_show_logo(get_logo_index(false));
#else
//
// here display logo
//
anim_show_logo(kernel_logo_position);
#endif
}
}

開機動畫

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

file name :

android-logo-mask.png

android-logo-shine.png


未完待續

booting logo & booting animation的更多相关文章

  1. Yahoo! Logo ASCII Animation in 462 bytes of C

    Last week I put together another obfuscated C program and have been urged by my coworkers to post it ...

  2. Network Booting

    http://en.wikipedia.org/wiki/Network_booting Network booting Network booting is the process of booti ...

  3. bootstrap 导航栏鼠标悬停显示下拉菜单

    在jsp中加入一下代码: .navbar .nav > li:hover .dropdown-menu { display: block;} 全部代码如下所示: <%@ page lang ...

  4. Android缩放动画[ScaleAnimation]

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s ...

  5. linux中DHCP服务配置文件/etc/dhcpd.conf详细说明

    DHCP服务的配置 dhcpd.conf 是DHCP服务的配置文件,DHCP服务所有参数都是通过修改dhcpd.conf 文件来实现,安装后dhcpd.conf 是没有做任何配置的,将/usr/sha ...

  6. LINUX_RHEl6_DHCP服务器配置

    安装DHCP服务器 DHCP配置文件 可以使用RHEL 6.0自身携带的RPM包安装,安装结束后DHCP端口监督程序dhcpd配置文件是/etc/dhcp目录中的名为dhcpd.conf的文件.下面手 ...

  7. 一步步玩pcDuino3--mmc下的bootloader

    pcDuino3下支持mmc启动.官方的Uboot是採用SPL框架实现的,由于内部的SRAM空间达到32K,我们全然能够在这32K空间内编写一个完整可用小巧的bootloader来完毕引导Linux ...

  8. 盛科(Centec)交换机 SmartConfig 特性

    参考 DHCP manual pages DHCP option-66 & option-150 的区别 一. 原理 目前市场上稍微有些实力的交换机厂商,均支持自动化的批量开局部署,虽然具体实 ...

  9. dhcpd.conf(5) - Linux man page

    http://linux.die.net/man/5/dhcpd.conf Name dhcpd.conf - dhcpd configuration file Description   The d ...

随机推荐

  1. 『.NET Core CLI工具文档』(十一)dotnet-test

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:dotnet-test 翻译:dotnet-test 名称 dotnet-test - 使用配置的测试运行器运行单元测试 ...

  2. apache中怎么配置网站的默认首页

    配置方法如下:1.首先需要打开Apache的配置文件httpd.conf文件,使用一般的编辑器或者记事本打开均可.2.找到或者搜索到如下字段:<IfModule dir_module> D ...

  3. Android Studio项目提交到GitHub

    1. 现在并安装Git for Windows: 2. 点击File->Settings->Version Control->Git,配置git.exe的路径,并点击Test按钮测试 ...

  4. 一段良好的程序永远不应该发生panic异常

    panic来自被调函数的信号,表示发生了某个已知的bug.一段良好的程序永远不应该发生panic异常 对于大部分程序而言,永远无法保证能够成功运行,因为错误原因往往超出程序员的控制范围.任何进行io操 ...

  5. 智能指针unique_ptr的用法

    unique_ptr是独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr,如下面错误用法: std::unique_pt ...

  6. WaitGroup is reused before previous Wait has returned

    当你Add()之前,就Wait()了,就会发生这个错误.

  7. 学习廖雪峰的git教程

    地址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 1.git add:添加文件 ...

  8. H5 WebSocket 如何和C#进行通信

    HTML5作为下一代的 Web 标准, 拥有许多引人注目的新特性,如 Canvas.本地存储.多媒体编程接口.WebSocket 等.WebSocket 在浏览器和服务器之间提供了一个基于 TCP 连 ...

  9. 数据可视化案例 | 如何打造数据中心APP产品

    意识到数据探索带来的无尽信息,越来越多的企业开始建立自有的数据分析平台,打造数据化产品,实现数据可视化. 在零售商超行业,沃尔玛"啤酒与尿布"的故事已不再是传奇.无论是大数据还是小 ...

  10. Fragment的生命周期

    Fragment的生命周期: 1. onAttach():Fragment对象跟Activity关联时 2. onCreate():Fragment对象的初始创建时 3. onCreateView() ...