您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!
一直想給嵌入式儀表加個開機LOGO,但是沒有找到更換的方法。最近在網(wǎng)上收集了一些文章,整理一下一共自己參考。目前也還沒有試過這種方法究竟是否可以。但察看Kernel源代碼可以知道,Linux-2.6的內核和以前的內核版本在LOGO處理上是不一樣的。Linux2.6的版本與之相關的是/drivers/video/logo/目錄下的文件,/include/linux/linux_logo.h中僅僅定義了一些基本參數(shù),而在2.6之前的內核版本中,linux_logo.h文件還包含了圖片數(shù)據(jù)。 在此將我的logo方案更新一下
優(yōu)龍ST2410開發(fā)板-啟動圖標制做
1.方案分析
ARM-Linux啟動時會先在LCD左上角顯示一個ARMLINUX的小企鵝圖案,也就是我們所說的bootlogo。
首先分析一下Logo的顯示代碼:
不難發(fā)現(xiàn)Logo顯示是在加載顯示驅動fb后由kernel/drivers/video/fbcon.c中的fbcon_show_logo函數(shù)來完成的。
fbcon_show_logo函數(shù)中有很多兼容性代碼,不是都會用到的!我們用的是SHARP(夏普)的TFT真彩屏.
再仔細看一下,這里用到的顯示數(shù)據(jù)均來自kernel/include/linux/linux_logo.h。這里同樣也有一些兼容性的數(shù)據(jù),其中對我們有用的是:
linux_logo_red[] —— 調色板中的紅色分量
linux_logo_green[] —— 調色板中的綠色分量
linux_logo_blue[] —— 調色板中的藍色分量
linux_logo[] —— Logo圖案的點陣
以上數(shù)據(jù)都是不需要你修改的 在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行數(shù)據(jù)對應Logo圖案中一行。可以先自己試試放一些簡單圖形進去顯示看看。(同樣注意顏色要從0x20開始,0-0x1f的32種顏色是不確定的)。
以上分析是針對系統(tǒng)原版內核256色80x80的啟動圖標的說明。而我們要通過修改或替代原內核文件,來實現(xiàn)我們制做公司的的啟動圖標,要求如下:
1.開發(fā)板起動以后以全屏顯示即240x320模式顯示
2.圖像以224色彩顯示
2.方案設計
當然你不會只想顯示一些簡單圖形,而是希望能把自已做的圖片放上去。建議使用PhotoShop8.0這里提供三個方法加工圖片:
1)先搞一個256色調色板,前面32個顏色空著,把后面224種顏色設一下吧。注意要盡量把顏色選全一些,要能覆蓋到整個顏色區(qū)域上。這樣就有一個通用的調色板,可適用所有圖片,但顏色的真實性稍差。然后把自己的圖片打開,先將顏色設置到RGB空間里,然后裁剪/縮放到240x320象數(shù)的尺寸,再將顏色優(yōu)化到先前定義好的調色板里,圖片就加工好了。
2)不用通用調色板,打開自己的圖片,先將顏色設置到RGB空間,裁剪/縮放到240x320象素的尺寸,然后指定優(yōu)化為224色圖象。這樣圖片就加工好了,但其調色板就是專用的,不適合用到其他圖片里。
3)GIMP+FBLOGO GIMP為LINUX下一個繪圖程序,我們使用它打開圖片后在菜單欄先擇: 圖片->模式->索引顏色,然后通過工具選項將圖片大小調整到240x320象數(shù)大小,保存為.png格式。在使FBLOGO工具將其轉換成linux_logo.h文件。
使用前兩種方法加工圖片,還需要把數(shù)據(jù)放到我們的linux_logo.h里。調色板可以直接保存為文件,然后可以通過自制的小程序讀出來就可以了。圖片的點陣比較難取,當然也可以自己做個程序去取屏幕上的點,不過比較困難。而后一種方法使用fblogo工具將用GIMP轉換的圖片文件自動生成linux_logo.h文件。
3.最終實施方案
通過以上內容分析,我們確定使用第三種方法GIMP加fblogo工具的方案進行實施,以下我們制做的流程及其方法:
軟件環(huán)境:linux虛擬機、fblogo工具、linux下的圖像編輯工具GIMP
硬件環(huán)境:X86PC機一臺、優(yōu)龍ST2410開發(fā)板一個、交叉網(wǎng)線一條。
1.調試并編譯開發(fā)板所相對應的內核包,調試通過后保留.config配制文件,準備編譯bootlogo時使用。
2.在linux上解壓fblogo_0.52.tgz包,并進行軟件安裝,生成fblogo二進制可執(zhí)行文件。
3.進入linux的kde圖形界面,在終端下使用gimp命令運行gimp工具。
4.打開公司的logo.jpg圖像文件,依次選擇 圖像->模式->索引顏色、并將其圖片大小調至240x320象素,最后將文件保存為logo.png格式。
5.將上述文件保存到fblogo工具所在文件夾,首先在命令行下執(zhí)行convert –colors 223 logo.png logo.png 將文件保存為224色素(目前fblogo工具僅支持到224色),接著再使用fblogo logo.png linux_logo.h 生成linux_logo.h內核啟動代碼中的圖像緩沖區(qū)文件格式。
6.將linux_logo.h文件拷貝到kernel的include/linux目錄即可。
7.重新編譯linux系統(tǒng)內核,將生成的zImage內核鏡像拷貝到windows下,準備對目標板進行燒寫。
8.用串口將目標板與PC主機相連,接通電源,使用bnw工具進入目標板的bios程序并將生成的zImage內核鏡像拷燒寫到板子上,重起目標板,你會發(fā)現(xiàn)目標板上已經(jīng)出現(xiàn)了美麗的logo圖片。如果沒有,請核對以上的步驟,并重新測試直到成功為止。
4 方案總結
4.1 方案實施過程中的關鍵問題
1.確保內核能夠正常運行,編譯時對開發(fā)板各硬件的驅動支持及其相關的配制,啟動后能夠自動加載文件系統(tǒng)。
2.安裝fblogo工具,fblogo工具的編譯需要使用到第三方的庫文件libpng.so庫以及zliba.a庫的支持,編譯成功后,在命令行試運行fblogo 如果安裝成功將出現(xiàn)其使用的幫助信息。
3.fblogo工具對圖片的要求是僅支持PNG格式的224色圖片。
4.最后針對不同的開發(fā)板的LCD顯示屏應使用與其相適應的圖片大小,否則可能使系統(tǒng)無法正常工作。
4.2 方案實施后的遺留問題
由于使用到了logo的制做工具fblogo 所以圖片在色彩上最大僅能支持到224色圖片,在bootlogo啟動文件linux_logo.h中有圖像的色彩域點陣代碼(即圖片的16位進制的代碼),如有需要可以自行修改,但其難度可想而知,建議可以將圖片保存為TIF之類的非壓縮格式,然后自已編寫小程序將其從圖象文件中的固定位置取點陣數(shù)據(jù)。
5 2.6內核啟動Logo
在配置內核的時候選中了啟動Logo的支持。
使用下面的方法可以將企鵝的Logo換成自己喜歡的任意圖片。
首先準備一幅自己喜歡的圖片,然后將背景涂成黑色。然后將該圖片保存成png格式,例如linuxlogo.png。在Linux下使用下面的命令:
# pngtopnm linuxlogo.png > linuxlogo.pnm
# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm
然后用生成的linuxlogo224.ppm替換/usr/src/linux-2.6.8.1/drivers/video/logo/logo_linux_clut224.ppm(最好先做好備份),然后刪除同一目錄下的logo_linux_clut224.c文件,重新編譯內核,啟動之后就可以在屏幕左上方看到自己的Logo了。
轉載自:http://deshunfan.blog.163.com/blog/static/3424410120112242858541/
上一篇:存儲器原理(轉)