自定義u-boot啟動logo的方法
轉載地址:https://blog.csdn.net/yin_pengpeng/article/details/49178659
如果在uboot中實現了LCD等顯示裝置的驅動,uboot在啟動的時候會在螢幕的左上角顯示一個logo,如下圖:
這個logo預設情況(只定義了CONFIG_VIDEO_LOGO)是如上圖所示的企鵝(如果還定義了CONFIG_VIDEO_BMP_LOGO會是denx的標誌),這個是存在於uboot程式碼中的一個標頭檔案(include/video_logo.h或 bmp_logo.h),如果大家看了這個標頭檔案,發現這個是一個巨大的結構體,其中儲存著圖片每個畫素點的色彩資料。
這樣如果要更換這個預設的logo豈不是自己要生成這樣一個資料結構體才行?答案是肯定的。
但是這樣一個結構體要怎麼生成呢?這個uboot原始碼早就為我們想好了,方法其實很簡單:
一、準備一張jpeg圖片,通過命令列處理為8bit BMP圖片。
處理指令碼如下:
- #!/bin/sh
- #install Netpbm first
- jpegtopnm $1 | ppmquant 31 | ppmtobmp -bpp 8 > $2
使用方法: (指令碼名) ( 待處理的JPG圖片名) (輸出檔名)
之所以用jpeg轉bmp的辦法,是通過實驗證明這種方面可行且簡便。
圖片的大小不一定要和原來一樣,你覺得合適就好。
二、將bmp檔案放入/tools/logos中,並修改/tools/下的Makefile
- # Generated LCD/video logo
- LOGO_H = $(OBJTREE)/include/bmp_logo.h
- LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
- LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
- ifeq ($(LOGO_BMP),)
- LOGO_BMP= logos/denx.bmp
- endif
- ifeq ($(VENDOR),atmel)
- LOGO_BMP= logos/atmel.bmp
- endif
- ifeq ($(VENDOR),esd)
- LOGO_BMP= logos/esd.bmp
- endif
- ifeq ($(VENDOR),freescale)
- LOGO_BMP= logos/freescale.bmp
- endif
- ifeq ($(VENDOR),ronetix)
- LOGO_BMP= logos/ronetix.bmp
- endif
- ifeq ($(VENDOR),syteco)
- LOGO_BMP= logos/syteco.bmp
- endif
紅色字型,替換為你製作的bmp檔名。
三、確認配置檔案
一定要定義
- #define CONFIG_VIDEO_LOGO
- #define CONFIG_VIDEO_BMP_LOGO
編譯的時候,你的bmp檔案會被tools/bmp_logo.c編譯出的工具bmp_logo
製作成include/bmp_logo.h,並編譯進uboot中。
四、重新編譯u-boot即可得到顯示新logo的u-boot。
效果如下圖所示:
由於是8bit色深,顏色就有點怪~
如果你看了drivers/video/cfb_console.c原始碼,你可能會發現還有一個splashimage的東東可以顯示。是的,如果你有張非壓縮的BMP圖片放在了Nor Flash,你可以在ENV中設定splashimage和splashpos告訴uboot讀取和顯示的位置。啟動的時候,uboot就會顯示這個bmp圖片。
但是,原生的uboot是隻支援Nor Flash和核心的讀取的,如果你的圖片放在nand flash、SD卡或者SPI、I2C 介面flash中,你可以自己實現將圖片檔案讀取到記憶體中,然後再顯示splash。實現起來並不複雜,關鍵是使用相關的API函式來讀取資料。
相關文章
- U-boot顯示LOGO之LOGO篇bootGo
- win10怎麼自定義開機啟動項_win10自定義開機啟動項的方法Win10
- win10自定義禁用系統啟動項的方法Win10
- XAF自定義啟動頁
- Oracle RAC的自定義service自啟動Oracle
- 自定義springboot啟動器Spring Boot
- docker Redis 自定義配置檔案啟動DockerRedis
- 修改原始碼,自定義chromium啟動頁原始碼
- allure報告自定義logo圖片和文字Go
- 記windows自定義bat指令碼自啟動WindowsBAT指令碼
- 自定義View( 啟動頁倒數計時)View
- 適合最新版docker自定義啟動配置Docker
- 自定義動畫方法animate()動畫
- 修改yocto系統啟動logoGo
- 去掉ul li 的自定義格式的方法 的方法
- spring boot啟動掃描不到自定義註解Spring Boot
- u-boot不接串列埠不能啟動kernel問題boot串列埠
- 匯入自定義板塊的方法
- 自定義滾動條
- 自定義滾動文字
- win10開機logo怎麼修改_win10自定義開機logo如何操作Win10Go
- Docker 自定義網橋後,無法正常啟動問題Docker
- Android鬼點子 自定義控制元件印上LOGO的解決思路Android控制元件Go
- Flutter100行輕鬆實現自定義P站和油管的Logo及自由切換Logo功能FlutterGo
- Android 自定義 TabActivity 的例項方法Android
- JiaThis自定義新增分享媒體的方法
- win10啟動項在哪裡設定 win10自定義開機啟動項Win10
- 工具類——自定義Collections集合方法
- 何時使用自定義HTTP 方法HTTP
- [開源]C#二維碼生成解析工具,可新增自定義LogoC#Go
- IDEA 啟動時 自定義配置-只是看一下而已--註冊啟用Idea
- 自定義跳轉函式的通用unhook方法函式Hook
- linux初學者自定義IP地址的方法Linux
- xib自定義cell不用註冊的方法
- 使用自定義按鍵啟動軟體 Thor 1.5.2 Mac中文版Mac
- 自定義容器啟動指令碼報錯:exec user process caused "no such file or directory"指令碼
- 自定義View-扭曲動效View
- 自定義View-波浪動效View