高通平臺msm8916修改開機logo 高通平臺修改LK(bootloader)開機logo
經過兩天的奮戰終於把開機logo給搞定了啊。
首先修改開機logo要從哪裡入手呢?先分析一下原始碼看看. --->
1 void display_image_on_screen() 2 { 3 struct fbimage default_fbimg, *fbimg; 4 bool flag = true; 5 6 fbcon_clear(); 7 fbimg = fetch_image_from_partition(); //從splash映象分割槽抓取圖片 8 if(fbimg){ 9 dprintf(CRITICAL, "zbzhuang### ->fetch_image_from_partition\n"); 10 } 11 12 if(!fbimg) { //如果splash.img分割槽的內容不存在或者被擦除則從splash.h標頭檔案從獲取要顯示影象的陣列 13 dprintf(CRITICAL, "zbzhuang### ->not fetch_image_from_partition\n"); 14 flag = false; 15 fbimg = &default_fbimg;16 fbimg->header.width = SPLASH_IMAGE_HEIGHT; 17 fbimg->header.height = SPLASH_IMAGE_WIDTH; 18 #if DISPLAY_TYPE_MIPI 19 fbimg->image = (unsigned char *)imageBuffer_rgb888; 20 #else 21 fbimg->image = (unsigned char *)imageBuffer; 22 #endif 23 } 24 25 fbcon_putImage(fbimg, flag);26 }
粗略的看了一下原始碼,大概可以知道要修改開機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的圖片了啊,看到強悍的路飛我們的任務完成了啊。
1 python ./logo_gen.py lufi.png
1 adb reboot bootloader //進入bootloader模式 2 fastboot flash splash //將映象刷入 3 fastboot reboot //重啟平板電腦
方法二:利用工具將圖片重新生成splash.h標頭檔案的資料,替換相應的標頭檔案就OK。
在ubuntu下敲如下三行命令,要事先安裝好conver xxd等工具 。fire_296137.png 圖片
1 convert fire_296137.png -recolor "0 0 1,0 1 0,1 0 0" fire_296137_re.png //將圖片重新著色BRG轉C成rgb 2 convert -depth 8 fire_296137_re.png rgb:fire_296137_raw.raw //將png格式轉成raw圖片格式 3 xxd -i fire_296137_raw.raw > splash.h //生成對於的splash.h標頭檔案的陣列
至於生成的陣列要替換Splash.h (z:\bootable\bootloader\lk\platform\msm_shared\include) 那個陣列呢?我的平板電腦是採用MIPI介面股修改第二個陣列:imageBuffer_rgb888[]陣列的內容。同時修改解析度
1 #define SPLASH_IMAGE_WIDTH 320 2 #define SPLASH_IMAGE_HEIGHT 200
從我剛開始貼的程式碼的第7行和第12號可知,如果splash分割槽的有圖片的映象,那麼在顯示logo的時候就優先從splash分割槽當中載入,否則從splash[]陣列中載入圖片。
因此我們要從splas[]陣列當中載入圖片一定要擦除splash分割槽:之後才可以成功的從splash.h標頭檔案的陣列中顯示圖片,或者註釋第7行程式碼強制跳過從splash分割槽載入映象,修改了原始碼之後只需要重新編譯原始碼,之後重新燒錄aboot映象就可啦。
1 rm out/target/product/msm8916_64/emmc_appsboot.mbn //編譯之前一定要先刪除,避免沒有重新編譯改動過的檔案 2 make aboot -j8 //單獨編譯lk映象
使用fastboot命令重新燒錄aboot 映象,重新開機,看到鳴人和佐助,我們可以安心的下班了啊。
轉載自:http://blog.csdn.net/u011006622/article/details/62227231
一,怎麼更改bootloader裡的logo圖片:
1 首先得拿到圖片,格式要求是png, 色深8bit, 且不帶alpha(透明色)通道的
2 將 png檔案轉換成raw檔案
convert Android.png -depth 8 rgb:Android.raw
3 對於某些屏(只支援RGB565才需要此步驟),將raw檔案轉換成565格式的raw檔案, android 自帶了一個這樣的工具,在out/host/Linux-x86/bin
./rgb2565 android.raw android.raw565
4 將android.raw或android.raw565轉換成原始陣列
xxd -i android.raw565 > android_logo.h
xxd -i android.raw > android_logo.h
注意:splash.h檔案中,有imageBuffer[]和imageBuffer_rgb888[] 兩個陣列。利用一個預編譯進行判斷
- #if (!DISPLAY_TYPE_MIPI)
修改巨集的值:
- #define SPLASH_IMAGE_WIDTH 124
- #define SPLASH_IMAGE_HEIGHT 113
SPLASH_IMAGE_HEIGHT對應logo.png的寬度
編譯lk燒寫驗證。 二,企鵝介面對應splash.img的生成
device\qcom\common\display\logo\logo_gen.py,生成splash.img的步驟:
(1) sudo apt-get install Python-imaging
(2) Python ./logo_gen.py snapdragon.png
這樣就可在當前目錄下生成splash.img,圖片要求png格式,且且色深為8-bit的RGB或者RGBA格式。