本發(fā)明涉及計算機系統(tǒng)技術,尤其涉及一種基于uboot的啟動界面實現(xiàn)方法。
背景技術:
uboot全稱為Universal Boot Loader,即通用Bootloader,是一種普遍用于嵌入式系統(tǒng)中的Bootloader,是運行于操作系統(tǒng)之前執(zhí)行的一小段程序,通過它,我們可以初始化硬件設備、建立內存空間的映射表,從而建立適當?shù)能浻布h(huán)境,為最終調用操作系統(tǒng)內核做好準備。所以操縱系統(tǒng)之后才是用戶可見的操作界面,而現(xiàn)在獲取的uboot在系統(tǒng)啟動之前無法通過LCD 顯示啟動界面圖形,給用戶帶來不便。
uboot對其固件大小有限制,友好用戶界面需要復雜的圖像及字符顯示,僅通過圖片二維數(shù)組轉換存儲等基本方式,遠不能滿足需求。對于現(xiàn)有漢字字庫也占據(jù)很大內存,現(xiàn)有常用字庫約兩萬兩千多漢字接近280kb左右,不能滿足固件大小的限制。
技術實現(xiàn)要素:
為了解決以上技術問題,本發(fā)明提出了一種基于uboot的啟動界面實現(xiàn)方法,目的是增加uboot下LCD顯示啟動界面,同時克服uboot大小對復雜啟動界面實現(xiàn)的限制。
本發(fā)明增加LCD驅動實現(xiàn)uboot下的LCD顯示,增加圖片顯示,以及基于frambuffer方式的寫元素畫圖方式,根據(jù)界面內容建立小容量字庫。
本發(fā)明解決上述技術問題所采取的技術方案是:
一種基于uboot的啟動界面實現(xiàn)方法,通過用界面圖片轉換為數(shù)組加載和基于FrameBuffer直接畫元素方法實現(xiàn)用戶界面圖形設計,以及通過設計小字庫克服內存限制的同時方便實現(xiàn)字形輸入。
主要包括:實現(xiàn)uboot下的LCD顯示,增加圖片顯示,以及基于frambuffer方式的寫元素畫圖方式,根據(jù)界面內容建立小容量字庫。
所述實現(xiàn)uboot下的LCD顯示,是通過增加LCD驅動,在uboot源碼中的common和include文件中增加對應于現(xiàn)在使用LCD的驅動源文件及配置頭文件。
所述增加圖片顯示,即圖片以相應位圖模式轉換為二維數(shù)組形式,保存在c文件中。如本設計#define LCDBPP 16 /* Bit Per Pixel */
#define CLOCKS_PPIX 2 /* Clocks per pixel */
#define CPLD_DELAY 3 /* RGB565 pipeline delay */
定義每像素16位,BGR 565顏色模式顯示,通常BGR 565顏色是BGR三基色分別取高5位、6位、5位的方式轉換獲取,但也會因顏色讀取函數(shù)設計不同改變,下邊寫元素畫圖方法會用到。
#define LQ035_DRIVER_OUTPUT_MASK (LQ035_LR | LQ035_TB | LQ035_BGR | LQ035_REV) 定義 從右到左讀取,11位BGR,是否逆轉等。
所以圖片二維數(shù)組存儲如下
INFO logo[]={
{0x94568 , 0xa4},
{0x945da , 0xc5},
…………};
數(shù)組0列表示偏移量,1列表示圖片顏色value。
所述基于FrameBuffer方式的寫元素畫圖方式,先通過open(fbdev,O_RDWR)函數(shù)查看是否支持FrameBuffer機制,如果打開成功既可以使用,則根據(jù)每像素16bit、像素坐標、偏移量以及BGR565顏色模式設計寫像素函數(shù),通過像素寫出想要圖形并填充相應顏色。
所述根據(jù)界面內容建立小容量字庫,主要是指漢字庫,因英文字庫和符號可使用通用英文字符庫。根據(jù)界面所使用文字和全角符號,合并重復字符,通過字符取模工具取出所有字符的點陣字符的數(shù)組,以漢字內碼和字符點陣內容組成相應數(shù)組存儲,建立相應的點陣字庫。直接通過內碼索引讀取相應點陣。
本發(fā)明一種基于uboot的啟動界面實現(xiàn)方法,具有的有益效果有:
通過增加LCD驅動可實現(xiàn)系統(tǒng)啟動之前LCD顯示用戶啟動界面,增加圖片顯示可設計固定logo等,以及基于frambuffer方式的寫元素畫圖方式,根據(jù)界面內容建立小容量字庫,克服uboot固件大小限制的同時,設計復雜的用戶界面。
附圖說明
圖1是本發(fā)明的實現(xiàn)步驟示意圖。
具體實施方式
下面結合附圖和具體實施例對本發(fā)明作進一步說明。
一種基于uboot的啟動界面實現(xiàn)方法:
1)通過在uboot源碼中的common和include文件中增加對應于現(xiàn)在使用LCD的驅動源文件及頭文件,實現(xiàn)系統(tǒng)啟動前LCD顯示。
2)將圖片以相應位圖模式轉換為二維數(shù)組形式,保存在c文件中。
圖片二維數(shù)組存儲如下
INFO logo[]={
{0x94568 , 0xa4},
{0x945da , 0xc5},
…………};
數(shù)組0列表示偏移量,1列表示圖片顏色value。
3)基于FrameBuffer方式的寫元素畫圖方式,先通過open(fbdev,O_RDWR)函數(shù)打開成功說明支持FrameBuffer機制,則根據(jù)每像素16bit、像素坐標、偏移量以及BGR565顏色模式設計寫像素函數(shù),通過像素寫出想要圖形并填充相應顏色。
4)界面所需不重復漢字150,建立小容量漢字字庫,合并重復字符,通過字符取模工具取出所有字符的點陣字符數(shù)組,以漢字內碼和字符點陣內容組成相應數(shù)組存儲,建立相應的點陣字庫。直接通過內碼索引讀取相應點陣。漢字庫如:struct HZ_GB16 hzcode16[]={
//hz41//面
{{"面"},{0x0000, 0xfffe, 0x0200, 0x0200, 0x0400, 0x3ff8, 0x2448, 0x2448,
0x27c8, 0x2448, 0x2448, 0x27c8, 0x2448, 0x2448, 0x3ff8, 0x2008}},
…………};
通過函數(shù) if(((((char)*pch)& 0xff)== (hzcode16[i].HIndex[0]& 0xff))&&((((char)*(pch+1))& 0xff)==(hzcode16[i].HIndex[1]& 0xff)))
做字符內碼索引比較,將字符點陣數(shù)組按位讀入。
5)最后編譯成uboot.bin文件,通過燒錄器燒錄到flash,可上電啟動。