经过两天的奋战终于把开机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 镜像,重新开机,看到鸣人和佐助,我们可以安心的下班了啊。

最新文章

  1. 现在创业做App,先做 Android 还是 iOS?
  2. 彻底解决m2eclipse之Unable to update index for central
  3. HTML——meta标签
  4. NEC学习 ---- 模块 - tab[含标题]
  5. gnl总结(#,%,$)
  6. 《C#高级编程》学习笔记------C#中的事件和委托
  7. Codeforces 479E. Riding in a Lift (dp + 前缀和优化)
  8. BZOJ_1612_[Usaco2008_Jan]_Cow_Contest_奶牛的比赛_(dfs)
  9. c++相关知识回顾
  10. scrapy里的selector,不能有正则提取
  11. Leetcode 4
  12. Struts2源码解析-----转载
  13. [SQL]Temporal 异常处理经验
  14. ffmpeg命令: 删除视频中不需要的音频流
  15. oracle数据库创建并导入dmp文件
  16. Linux系统CentOS 7配置Spring Boot运行环境
  17. Redis分布式锁实现秒杀业务(乐观锁、悲观锁)
  18. pandas DataFrame 索引(iloc 与 loc 的区别)
  19. mac平台安装配置TomCat
  20. windows10下git一些问题

热门文章

  1. ls 命令通配符(3)
  2. Tomcat&Servlet笔记
  3. C++中函数参数的扩展
  4. ARM编程模式和7钟工作模式
  5. 实例学习——爬取豆瓣网TOP250数据
  6. 2019 NCTF Re WP
  7. 2014-04-27 南江滨大道 6KM 晴
  8. 无锁版以时间为GUID的方法
  9. 关于prepareStatement(String sql,int autoGeneratedKeys)的记录
  10. Taro -- Swiper的图片由小变大3d轮播效果