MTK开机LOGO图片的显示原理
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图片的显示原理相关推荐
- MT6765开机LOGO图片的显示原理
概述 Android 开机画面由三部分组成,第一部分在bootloader启动时显示(uboot):第二部分在启动kernel 时显示(kernel):第三部分在系统启动时(bootanimatio ...
- Android系统之Mtk开机logo镜像单独制作(不用全编译代码)
一.问题背景 在我们客制系统版本时,经常有时候会有需求就是单独更新一个客制logo,如果每次仅仅就是更改一个开机logo,我们每次都需要有一个完整编译的out,也就意味着可能要全编,这想必是非常低效率 ...
- 修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位
修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位 文章目录 修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位 修改开机LOGO图片教 ...
- 修ecshop品牌筛选以LOGO图片形式显示
如何实现商品列表页属性筛选区品牌筛选以LOGO形式展示,最模板总结ecshop/'>ecshop教程入下: 1.修改 category.php 文件,将(大概215行) $sql = " ...
- 制作Linux嵌入式系统开机LOGO(图片)
内核:linux-2.6.22.6 ubuntu:Ubuntu 9.10 开发板: JZ2440(方法通用,不局限于JZ2440) 目的: JZ2440开机logo默认是一只可爱的小企鹅.我们把它替换 ...
- Exynos4412开发板更换开机logo图片
我以linux3.5内核为列子. 首先linux内核默认的开机logo在:linux3.5/drivers/video/logo/ 目录下的 logo_linux_clut224.ppm. 所以我 ...
- [RK3568 Android11] 教程之制作和替换android开机logo图片
目录 前言 一.Android logo说明 二.Android logo打包方法 三.测试方法 四.bootanimation.zip添加到SDK源码中
- 关于微信分享logo图片不显示,带有微信敏感文字
做微信分享的时候,发现自己分享的链接带的logo自己能看到,但是好友是看不到的. 问题是因为描述语带有微信敏感关键字,就我所知的微信敏感关键字如下: 1.红包 2.现金 3.神圣 4.使命 5.一路同 ...
- 玩转mini2440开发板之【制作和修改linux启动logo图片】
今天玩一玩linux启动logo图片的修改和制作. 对于我手头的mini2440开发板,其实厂家友善之臂原本是有配一个转换工具的,用起来会比较简单.但是,它那个工具仅针对32位的Fedora 9系统开 ...
最新文章
- Python 获得命令行参数的方法
- 微软转向,鸿蒙拥抱,炒房团都来了,Linux 为何引各方英雄竞折腰?
- Active Directory边界
- 激怒开源社区,微软悄悄删除2500行功能代码后致歉:已恢复!
- 实验5 数组、指针与字符串
- 操作指令详解_爱码小士丨 APP稳定性测试(附视频详解)
- 马斯克发推:8月特斯拉Autopilot实现完全自动驾驶
- python 网络维护_python学习之网络基础
- 数据库建立索引的优缺点及适合建立索引的字段
- 我的注电之旅——基础考试篇
- 【java学习】集合框架
- 00、老徐教你学C语言——C语言学习之道(学习篇)——理论
- Linux常用60个命令用法
- 博途软件中多重背景块的建立_TIA博途软件中创建多重背景函数块
- 传统企业想要实现数字化转型,主要包含以下几大趋势?
- 【软工实践】第0次作业
- FPGA模拟PS2接口的方法
- Codeforces Round 361 div2
- 一个简单的PLC运动控制项目
- Camel加载classpath外的自定义components