MTK开机LOGO图片的显示原理

一、图片的定义 1

1.1、update脚本 1

1.2、rules.mk脚本 2

1.3、图片的宏定义cust_display.h(索引序列号) 3

二、LOGO图片显示的逻辑代码实现 3

2.1、platform.c 3

2.2、mtk_logo.h 4

2.3、mt_logo.c 4

总结: 5

以下源码分析基于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。

MTK开机LOGO图片的显示原理相关推荐

  1. MT6765开机LOGO图片的显示原理

    概述  Android 开机画面由三部分组成,第一部分在bootloader启动时显示(uboot):第二部分在启动kernel 时显示(kernel):第三部分在系统启动时(bootanimatio ...

  2. Android系统之Mtk开机logo镜像单独制作(不用全编译代码)

    一.问题背景 在我们客制系统版本时,经常有时候会有需求就是单独更新一个客制logo,如果每次仅仅就是更改一个开机logo,我们每次都需要有一个完整编译的out,也就意味着可能要全编,这想必是非常低效率 ...

  3. 修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位

    修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位 文章目录 修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位 修改开机LOGO图片教 ...

  4. 修ecshop品牌筛选以LOGO图片形式显示

    如何实现商品列表页属性筛选区品牌筛选以LOGO形式展示,最模板总结ecshop/'>ecshop教程入下: 1.修改 category.php 文件,将(大概215行) $sql = " ...

  5. 制作Linux嵌入式系统开机LOGO(图片)

    内核:linux-2.6.22.6 ubuntu:Ubuntu 9.10 开发板: JZ2440(方法通用,不局限于JZ2440) 目的: JZ2440开机logo默认是一只可爱的小企鹅.我们把它替换 ...

  6. Exynos4412开发板更换开机logo图片

    我以linux3.5内核为列子. 首先linux内核默认的开机logo在:linux3.5/drivers/video/logo/ 目录下的   logo_linux_clut224.ppm. 所以我 ...

  7. [RK3568 Android11] 教程之制作和替换android开机logo图片

    目录 前言 一.Android logo说明 二.Android logo打包方法 三.测试方法 四.bootanimation.zip添加到SDK源码中

  8. 关于微信分享logo图片不显示,带有微信敏感文字

    做微信分享的时候,发现自己分享的链接带的logo自己能看到,但是好友是看不到的. 问题是因为描述语带有微信敏感关键字,就我所知的微信敏感关键字如下: 1.红包 2.现金 3.神圣 4.使命 5.一路同 ...

  9. 玩转mini2440开发板之【制作和修改linux启动logo图片】

    今天玩一玩linux启动logo图片的修改和制作. 对于我手头的mini2440开发板,其实厂家友善之臂原本是有配一个转换工具的,用起来会比较简单.但是,它那个工具仅针对32位的Fedora 9系统开 ...

最新文章

  1. Python 获得命令行参数的方法
  2. 微软转向,鸿蒙拥抱,炒房团都来了,Linux 为何引各方英雄竞折腰?
  3. Active Directory边界
  4. 激怒开源社区,微软悄悄删除2500行功能代码后致歉:已恢复!
  5. 实验5 数组、指针与字符串
  6. 操作指令详解_爱码小士丨 APP稳定性测试(附视频详解)
  7. 马斯克发推:8月特斯拉Autopilot实现完全自动驾驶
  8. python 网络维护_python学习之网络基础
  9. 数据库建立索引的优缺点及适合建立索引的字段
  10. 我的注电之旅——基础考试篇
  11. 【java学习】集合框架
  12. 00、老徐教你学C语言——C语言学习之道(学习篇)——理论
  13. Linux常用60个命令用法
  14. 博途软件中多重背景块的建立_TIA博途软件中创建多重背景函数块
  15. 传统企业想要实现数字化转型,主要包含以下几大趋势?
  16. 【软工实践】第0次作业
  17. FPGA模拟PS2接口的方法
  18. Codeforces Round 361 div2
  19. 一个简单的PLC运动控制项目
  20. Camel加载classpath外的自定义components

热门文章

  1. Android闪动的文字效果
  2. 动脑学院安卓移动互联网架构
  3. win10系统专用DVD播放器安装的方法--win7w.com
  4. Android版MT4使用方法,手机版MT4软件基本操作方法
  5. 篮球游戏-第12届蓝桥杯Scratch省赛2真题第4题
  6. 2021全球程序员收入报告发布,字节跳动成为中国唯一上榜的公司
  7. Matlab重新激活
  8. 如何使用光盘刻录大师旋转视频文件
  9. Android 中uri.parse()用法
  10. 绩效考核薪酬管理PPT模板