经过两天的奋战终于把开机logo给搞定了啊。

首先修改开机logo要从哪里入手呢?先分析一下源码看看. --->

 void display_image_on_screen()
{
struct fbimage default_fbimg, *fbimg;
bool flag = true; fbcon_clear();
fbimg = fetch_image_from_partition(); //从splash镜像分区抓取图片
if(fbimg){
dprintf(CRITICAL, "zbzhuang### ->fetch_image_from_partition\n");
} if(!fbimg) { //如果splash.img分区的内容不存在或者被擦除则从splash.h头文件从获取要显示图像的数组
dprintf(CRITICAL, "zbzhuang### ->not fetch_image_from_partition\n");
flag = false;
fbimg = &default_fbimg;
fbimg->header.width = SPLASH_IMAGE_HEIGHT;
fbimg->header.height = SPLASH_IMAGE_WIDTH;
#if DISPLAY_TYPE_MIPI
fbimg->image = (unsigned char *)imageBuffer_rgb888;
#else
fbimg->image = (unsigned char *)imageBuffer;
#endif
} fbcon_putImage(fbimg, flag);
}

粗略的看了一下源码,大概可以知道要修改开机logo有两种方式一种是通过。经过本人的验证,对于大图片强烈建议使用方法一,当然小图片也可以使用方法一。方法二只适合分辨率不超过320*200的图片,之前本人测试了无数次,验证了很久才总结出来的啊,分辨率超过320*200的一定不要使用方法二。

方法一:利用工具根据图像生成splash.img镜像之后,使用fastboot重新刷splash.img分区。

方法二:利用工具将图片重新生成splash.h头文件的数据,替换相应的头文件就OK。

方法一:利用工具根据图像生成splash.img镜像之后,使用fastboot重新刷splash.img分区。

首先准备一张800*1280的图片(png格式),和生成splash.img镜像的脚本工具--->logo_gen.py。

将图片和工具都扔到服务器上面去,并且执行下面的代码,就会生成splash.img的镜像文件,之后使用fastboot 命令就可以刷开机logo的图片了啊,看到强悍的路飞我们的任务完成了啊。

  python ./logo_gen.py lufi.png 
 adb reboot bootloader         //进入bootloader模式
fastboot flash splash //将镜像刷入
fastboot reboot //重启平板电脑

方法二:利用工具将图片重新生成splash.h头文件的数据,替换相应的头文件就OK。

在ubuntu下敲如下三行命令,要事先安装好conver xxd等工具 。fire_296137.png 图片

 convert fire_296137.png -recolor "0 0 1,0 1 0,1 0 0" fire_296137_re.png    //将图片重新着色BRG转C成rgb
convert -depth fire_296137_re.png rgb:fire_296137_raw.raw //将png格式转成raw图片格式
xxd -i fire_296137_raw.raw > splash.h //生成对于的splash.h头文件的数组

至于生成的数组要替换Splash.h (z:\bootable\bootloader\lk\platform\msm_shared\include)  那个数组呢?我的平板电脑是采用MIPI接口股修改第二个数组:imageBuffer_rgb888[]数组的内容。同时修改分辨率

 #define SPLASH_IMAGE_WIDTH     320
#define SPLASH_IMAGE_HEIGHT 200

从我刚开始贴的代码的第7行和第12号可知,如果splash分区的有图片的镜像,那么在显示logo的时候就优先从splash分区当中加载,否则从splash[]数组中加载图片。

因此我们要从splas[]数组当中加载图片一定要擦除splash分区:之后才可以成功的从splash.h头文件的数组中显示图片,或者注释第7行代码强制跳过从splash分区加载镜像,修改了源码之后只需要重新编译源码,之后重新烧录aboot镜像就可啦。

 rm out/target/product/msm8916_64/emmc_appsboot.mbn    //编译之前一定要先删除,避免没有重新编译改动过的文件
make aboot -j8 //单独编译lk镜像

使用fastboot命令重新烧录aboot 镜像,重新开机,看到鸣人和佐助,我们可以安心的下班了啊。

高通平台msm8916修改开机logo【原创】的更多相关文章

  1. [修改高通平台WIFI MAC 地址] & [adb over wifi]

    [修改高通平台WIFI MAC 地址]fccmd --helpfccmd startfccmd getwifimacfccmd setwifimac 74:AC:5F:F5:D7:40 [adb ov ...

  2. 【转】高通平台android 环境配置编译及开发经验总结

    原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  3. 高通平台 lcd driver 调试小结

    一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2  开发环境 And ...

  4. 高通平台msm8909 LK 实现LCD 兼容

    前段时间小米出现红米note2 换屏门,现在我们公司也要上演了:有两个供应商提供不同IC 的LCD panel. 软件区分的办法是读取LCD IC 的ID 寄存器,下面解析高通平台LK中LCD兼容的过 ...

  5. 高通平台的bootloader过程【转】

    ====================基本知识=======================LK是(L)ittle (K)ernel的缩写.高通平台android普遍采用LK作为其bootloade ...

  6. 高通平台Bootloader启动流程【转】

    本文转载自:http://blog.csdn.net/fang_first/article/details/49615631 ====================基本知识============= ...

  7. android 6.0 高通平台sensor 工作机制及流程(原创)

    最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...

  8. 高通平台MSM8916LCM模块移植(一)-bootloader部分

    此次移植打算分成两个模块来说,bootloader部分和kernel部分.在实际的移植调试过程中也是这么分成了两个部分分别调试. 高通平台中的bootloader叫做LK(Little Kernel, ...

  9. 高通平台MSM8916LCM模块移植(一)-bootloader部分【转】

    本文转载自:http://www.mobile-open.com/2016/970947.html 高通平台中的bootloader叫做LK(Little Kernel,对于LCM来说LK部分相当重要 ...

随机推荐

  1. SQL查询结果列拼接成逗号分隔的字符串:group_concat

    转自:SQL查询结果列拼接成逗号分隔的字符串 背景:做SQL查询时会经常需要,把查询的结果拼接成一个字符串. 解决方法: 通过 group_concat 函数 拼接的结果很长,导致拼接结果显示不全,可 ...

  2. CQRS框架(nodejs的DDD开发落地框架)初识感想

    CQRS是啥?DDD又是啥? 这两个概念其实没什么神秘的,当然此文章中的这两个概念以曾老师的课程为准(关于CQRS和DDD的标准概念,google上已经很多了,不再赘述.) DDD(Domain Dr ...

  3. Ajax请求后台数据

    一.前期准备 安装好XAMPP软件,并运行起来.本文代码是基于XAMPP开发环境,XAMPP是完全免费且易于安装的Apache发行版,其中包含MariaDB.PHP和Perl.XAMPP开放源码包的设 ...

  4. SCUT - 161 - 灯游 - 数学

    https://scut.online/p/161 很显然一个数被开关的概率是他的因子的个数的占比. 然后又很显然其实这个总的概率就是一个二项式求和. 模拟这个过程WA了8发.正常,毕竟浮点误差累积比 ...

  5. 使用GET与POST方式获取html数据

    抓取网站数据解析的工作,其中,使用到GET和POST方法获取html数据. 使用GET方式: /** * 使用get方式获取html数据 * * @param strURL(需要访问的网站) * @r ...

  6. CSS中:first-child伪类

    使用 :first-child 伪类来选择作为某个元素的第一个子元素.这个特定伪类很容易遭到误解,所以有必要举例来说明.考虑以下标记: 如下: html: <div> <p>T ...

  7. FreeMarker三宗罪之优缺点

    FreeMarker是Quake Wang推荐我使用的.刚学FreeMarker的时候,发现freemarker真的很棒!简单易用,功能强大.但是用它做了几个项目以后开始不爽了. 一宗罪:freema ...

  8. <img> 标签的 src 属性

    src属性 加载的时候就会请求 1.servlet生成一个图片 2.你直接输入servlet的连接看一下,就是一个图片,和我们自己发布到服务器的一样. 3.页面加载时,会访问这个servelt连接,自 ...

  9. Spring基础12——使用外部属性文件

    1.使用外部属性文件 在配置文件里配置Bean时,有时需要在Bean的配置文件里引入系统部署的细节信息(例如:文件的路径.数据源配置信息等),而这些部署细节实际上需要和bean配置相分离,因为我们修改 ...

  10. php内置函数分析之strpos()

    PHP_FUNCTION(strpos) { zval *needle; zend_string *haystack; char *found = NULL; ]; zend_long offset ...