2017年4月1日 星期六

[U-boot] logo

在有實現LCD顯示和LCD命令行終端的U-boot中,默認情況下在左上角都有顯示一個logo,如果是atmel的芯片,就會有atmel的logo,三星的則是denx的logo。如果想把它改成自己喜歡的或者公司的logo,則只要作簡單的修改便可以實現。

一,圖片的放置路徑
所有的開機logo都放在了/tools/logos之下,所以,把你需要顯示的logo圖片(bmp格式)也放置到該目錄下。根據你所設置的顯示幀緩存的大小,圖片大小有所限制。使用這種方法還有一個限制是:圖片只能是8bpp的bmp圖(參考uboot源碼)。Tekkman文章中所說的“所替換的logo必須和原來的大小、格式一模一樣,否則會出現u-boot使用過程中宕機重啟的後果”,我自己親測中並未遇到,當然,我也並沒有做足夠的測試,只是這並不需要和原圖的大小一模一樣。

二,修改Makefile文件
修改/tools目錄下的Makefile文件
ifeq ($(LOGO_BMP),) 
LOGO_BMP= logos/denx.bmp 
endif
把denx.bmp 替換為你需要顯示的logo圖片的文件名,保存退出,重新編譯uboot。


三、圖片的轉換腳本
在製作圖片前,請您現確認您的Linux主機上安裝了Netpbm工具包。

sudo apt-get install netpbm
jpegtopnm logo.jpg | ppmquant 31 | ppmtobmp -bpp 8 > logo.bmp

使用方法: (腳本名) ( 待處理的JPG圖片名) (輸出文件名)

U-Boot中的Splash Screen

U-Boot配置

    在U-Boot中使用Splash Screen,可以實現U-Boot啟動後,在LCD上顯示自定義圖片,起到友好的界面顯示作用。使用Splash Screen需要在配置文件中使能BMP圖片功能和SPLASH功能:
#define CONFIG_CMD_BMP
#define CONFIG_SPLASH_SCREEN

實例

    並且要定義splashimage變量以及在splash變量所定義的地址存放bmp圖片。以2MB的SST30VF1601為例,工32個扇區,規劃如下:
 項目    
 地址範圍
扇區 
大小 
 說明
U-Boot 
0x0000 0000 ~ 0x0010 0000 
0~15 
1M 

 參數
0x0010 0000 ~ 0x0018 0000 
16~23 
512K 

splashimage 
0x0018 0000 ~ 0x0020 0000 
24~31 
512K 

操作    

現在要實現splash screen,需要進行操作,先下載一個圖片到內存中,然後擦除FLASH的splashimage區域,接著將圖片寫入splashimage區域,最後設置並保存splashimage環境變量即可。
    U-Boot> tftp a0008000 logo.bmp ;下載文件到內存
    U-Boot> erase 1:23-31 ;擦除Flash的splashimage區域
    U-Boot> cp.b a0008000 00180000 $filesize ;將logo寫到Flash的splashimage區域
    U-Boot> setenv splashimage 00180000 ;設置splashimage環境變量
    U-Boot> saveenv ;保存環境變量

    u-boot啟動後,輸入bmp d $splashimage即可在LCD上顯示logo圖片。為了實現開機就顯示logo,可以修改common/lcd.c文件,在其中加入實現bmp d $splashimage的代碼即可。



自定義u-boot的開機logo的方法

ifeq ($(LOGO_BMP),) 

    LOGO_BMP= logos/denx.bmp 

endif 

ifeq ($(VENDOR), atmel) 

    LOGO_BMP= logos/atmel.bmp 

endif 

ifeq ($(VENDOR),ronetix) 

    LOGO_BMP= logos/ronetix.bmp 

endif 




refer : http://blog.chinaunix.net/uid-9688646-id-1998453.html

沒有留言:

張貼留言