经过两天的奋战终于把开机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. C#打印条码BarTender SDK打印之路和离开之路(web平凡之路)(转)

    C#打印条码BarTender SDK打印之路和离开之路(web平凡之路) 从来没想过自己会写一篇博客,鉴于这次从未知的探索到一个个难点的攻破再到顺利打印,很想记录这些点滴,让后人少走弯路. 下面走进 ...

  2. yaf框架安装

    第一步:明白yaf框架是以扩展的形式要先配置到php里面,对于windows系统的使用者,首先要去官网:http://code.google.com/p/yafphp/downloads/list如果 ...

  3. 哈希hash

    定义 是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值 生成方法 hash() 哈希特性 不可逆 :在具备编码功能的同时,哈希算法也作为一种加密算 ...

  4. HNUSTOJ-1520 压缩编码

    1520: 压缩编码 时间限制: 1 Sec  内存限制: 2 MB提交: 107  解决: 54[提交][状态][讨论版] 题目描述 某工业监控设备不断发回采样数据.每个数据是一个整数(0到1000 ...

  5. viewset的使用的方法

    viewset的使用方法中是怎么区分的update和crate modelViewSet中设置了这个类之后,设置了类成员变量:queryset 和 seriazlier class,所以POST操作直 ...

  6. 高性能迷你React框架anujs1.1.3发布

    anujs现在只差一个组件(mention)就完全支持阿里的antd UI库了.一共跑通346个测试, 应该是全世界最接近官方React的迷你框架了. 以后的工作就是把React16的一些新特性支持了 ...

  7. 计算机系统结构总结_Cache Optimization

    Textbook: <计算机组成与设计——硬件/软件接口>  HI <计算机体系结构——量化研究方法>       QR Ch4. Cache Optimization 本章要 ...

  8. 分布式锁实现方式介绍和Zookeeper实现原理

    分布式锁实现的几种方式 基于数据库实现分布式锁(表.数据库排他锁) 基于缓存(redis,memcached,tair) 基于Zookeeper实现分布式锁 关注点: 单点问题?(集群) 失效时间?( ...

  9. windows安装nginx部署

    转自:https://www.jb51.net/article/47066.htm 一.下载安装Nginx(本文环境为windows xp 32bit环境) 解压nginx-1.0.11.zip,进入 ...

  10. Apache Allow 命令

    用于设置哪些客户端可以访问 Apache,格式如下: Allow from [All /全域名/部分域名/IP 地址/网络地址/CIDR 地址] All:表示全部客户端 全域名:表示域名对应的客户端, ...