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