linux logo 的啓動方式

 

1.方案分析
ARM-Linux啓動時會先在LCD左上角顯示一個ARMLINUX的小企鵝圖案,也就是我們所說的bootlogo。
首先分析一下Logo的顯示代碼:
不難發現Logo顯示是在加載顯示驅動fb後由kernel/drivers/video/fbcon.c中的fbcon_show_logo函數來完成的。
fbcon_show_logo函數中有很多兼容性代碼,不是都會用到的!我們用的是SHARP(夏普)的TFT真彩屏.
再仔細看一下,這裏用到的顯示數據均來自kernel/include/linux/linux_logo.h。這裏同樣也有一些兼容性的數據,其中對我們有用的是:
         linux_logo_red[]   —— 調色板中的紅色分量
         linux_logo_green[] —— 調色板中的綠色分量
         linux_logo_blue[] —— 調色板中的藍色分量
         linux_logo[]     —— Logo圖案的點陣
以上數據都是不需要你修改的 在fbcon_show_logo裏只做了256色的顯示,所以要先設置一個RGB調色板。這裏的調色板是從0x20色開始編的,所以實際好象只有最多224色的顯示。linux_logo.h裏默認是做了一個214級的灰度調色板,如果想要更多色彩的話可以自已修改(注意調色板的顏色不能超過224種)
   再看linux_logo[],這是Logo圖案的點陣。因爲是256色的圖,所以每點爲一個Byte。Logo圖案是80*80大小,所以這裏總共有6400 Byte。一共是800行,每行8 Byte即8 Point,每10行數據對應Logo圖案中一行。可以先自己試試放一些簡單圖形進去顯示看看。(同樣注意顏色要從0x20開始,0-0x1f的32種顏色是不確定的)。
  
                           
以上分析是針對系統原版內核256色80x80的啓動圖標的說明。而我們要通過修改或替代原內核文件,來實現我們製做公司的的啓動圖標,要求如下:
1.開發板起動以後以全屏顯示即240x320模式顯示
2.圖像以224色彩顯示
2.方案設計
當然你不會只想顯示一些簡單圖形,而是希望能把自已做的圖片放上去。建議使用PhotoShop8.0這裏提供三個方法加工圖片:
   1)先搞一個256色調色板,前面32個顏色空着,把後面224種顏色設一下吧。注意要儘量把顏色選全一些,要能覆蓋到整個顏色區域上。這樣就有一個通用的調色板,可適用所有圖片,但顏色的真實性稍差。然後把自己的圖片打開,先將顏色設置到RGB空間裏,然後裁剪/縮放到240x320象數的尺寸,再將顏色優化到先前定義好的調色板裏,圖片就加工好了。
   2)不用通用調色板,打開自己的圖片,先將顏色設置到RGB空間,裁剪/縮放到240x320象素的尺寸,然後指定優化爲224色圖象。這樣圖片就加工好了,但其調色板就是專用的,不適合用到其他圖片裏。
3)GIMP+FBLOGO GIMP爲LINUX下一個繪圖程序,我們使用它打開圖片後在菜單欄先擇: 圖片->模式->索引顏色,然後通過工具選項將圖片大小調整到240x320象數大小,保存爲.png格式。在使FBLOGO工具將其轉換成linux_logo.h文件。
使用前兩種方法加工圖片,還需要把數據放到我們的linux_logo.h裏。調色板可以直接保存爲文件,然後可以通過自制的小程序讀出來就可以了。圖片的點陣比較難取,當然也可以自己做個程序去取屏幕上的點,不過比較困難。而後一種方法使用fblogo工具將用GIMP轉換的圖片文件自動生成linux_logo.h文件。
3.最終實施方案
通過以上內容分析,我們確定使用第三種方法GIMP加fblogo工具的方案進行實施,以下我們製做的流程及其方法:
軟件環境:linux虛擬機、fblogo工具、linux下的圖像編輯工具GIMP
硬件環境:X86PC機一臺、優龍ST2410開發板一個、交叉網線一條。
1.調試並編譯開發板所相對應的內核包,調試通過後保留.config配製文件,準備編譯bootlogo時使用。
2.在linux上解壓fblogo_0.52.tgz包,並進行軟件安裝,生成fblogo二進制可執行文件。
3.進入linux的kde圖形界面,在終端下使用gimp命令運行gimp工具。
4.打開公司的logo.jpg圖像文件,依次選擇 圖像->模式->索引顏色、並將其圖片大小調至240x320象素,最後將文件保存爲logo.png格式。
5.將上述文件保存到fblogo工具所在文件夾,首先在命令行下執行convert –colors 223  logo.png logo.png 將文件保存爲224色素(目前fblogo工具僅支持到224色),接着再使用fblogo logo.png linux_logo.h 生成linux_logo.h內核啓動代碼中的圖像緩衝區文件格式。
6.將linux_logo.h文件拷貝到kernel的include/linux目錄即可。
7.重新編譯linux系統內核,將生成的zImage內核鏡像拷貝到windows下,準備對目標板進行燒寫。
8.用串口將目標板與PC主機相連,接通電源,使用bnw工具進入目標板的bios程序並將生成的zImage內核鏡像拷燒寫到板子上,重起目標板,你會發現目標板上已經出現了美麗的logo圖片。如果沒有,請覈對以上的步驟,並重新測試直到成功爲止。
4 方案總結
4.1 方案實施過程中的關鍵問題
1.確保內核能夠正常運行,編譯時對開發板各硬件的驅動支持及其相關的配製,啓動後能夠自動加載文件系統。
2.安裝fblogo工具,fblogo工具的編譯需要使用到第三方的庫文件libpng.so庫以及zliba.a庫的支持,編譯成功後,在命令行試運行fblogo 如果安裝成功將出現其使用的幫助信息。
3.fblogo工具對圖片的要求是僅支持PNG格式的224色圖片。
4.最後針對不同的開發板的LCD顯示屏應使用與其相適應的圖片大小,否則可能使系統無法正常工作。
4.2 方案實施後的遺留問題
由於使用到了logo的製做工具fblogo 所以圖片在色彩上最大僅能支持到224色圖片,在bootlogo啓動文件linux_logo.h中有圖像的色彩域點陣代碼(即圖片的16位進制的代碼),如有需要可以自行修改,但其難度可想而知,建議可以將圖片保存爲TIF之類的非壓縮格式,然後自已編寫小程序將其從圖象文件中的固定位置取點陣數據。
5 2.6內核啓動Logo
在配置內核的時候選中了啓動Logo的支持。 
使用下面的方法可以將企鵝的Logo換成自己喜歡的任意圖片。 
首先準備一幅自己喜歡的圖片,然後將背景塗成黑色。然後將該圖片保存成png格式,例如linuxlogo.png。在Linux下使用下面的命令:

# sudo apt-get install netpbm

# pngtopnm linuxlogo.png > linuxlogo.pnm 
# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm 
# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm

然.ppm替換/usr/src/linux-2.6.8.1/drivers/後用生成的linuxlogo224video/logo/logo_linux_clut224.ppm(最好先做好備份),然後刪除同一目錄下的logo_linux_clut224.c文件,重新編譯內核,啓動之後就可以在屏幕左上方看到自己的Logo了。

發佈了249 篇原創文章 · 獲贊 9 · 訪問量 107萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章