蔣若鴻
摘? 要:當(dāng)前嵌入式系統(tǒng)被廣泛應(yīng)用于工業(yè)領(lǐng)域和家用領(lǐng)域,且隨著嵌入式系統(tǒng)的不斷發(fā)展,用戶對(duì)嵌入式系統(tǒng)的要求也越來越高,因此實(shí)現(xiàn)與用戶交流功能的嵌入式GUI成為嵌入式研究領(lǐng)域中的一個(gè)重點(diǎn)。該文詳細(xì)描述了MiniGUI系統(tǒng)基于s3c2410開發(fā)板的移植與實(shí)現(xiàn),內(nèi)容包括交叉編譯環(huán)境的建立、MiniGUI編譯選項(xiàng)的配置和修改、啟動(dòng)項(xiàng)參數(shù)的設(shè)置以及交叉編譯MiniGUI應(yīng)用程序等。
關(guān)鍵詞:s3c2410? MiniGUI? 移植
中圖分類號(hào):TP273? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ? ? ?文章編號(hào):1672-3791(2019)04(a)-0053-02
MiniGUI是目前比較常見的幾種GUI系統(tǒng)之一,與其他的GUI相比,MiniGUI最顯著的特點(diǎn)是:(1)小巧輕型、占用資源少,穩(wěn)定性高,可移植性好。(2)擁有豐富的控件資源,包括靜態(tài)框控件、按鈕控件、編輯框控件、列表框控件、進(jìn)度條控件、滑塊控件、組合框控件、工具欄控件等。(3)支持拼音輸入法和五筆輸入法。(4)支持消息傳遞機(jī)制。(5)支持JPG、PNG和BMP等圖像文件。
1? MiniGUI的移植
Samsung公司的s3c2410開發(fā)板,平臺(tái)硬件系統(tǒng)為64MB Nandflash、2MB Norflash、64MB SDRAM。s3c2410開發(fā)板通過USB口、串口、網(wǎng)口與宿主機(jī)通信,圖形圖像處理通過LCD顯示。
把MiniGUI移植到s3c2410開發(fā)板的步驟:(1)安裝交叉編譯器和設(shè)置交叉編譯器環(huán)境;(2)使用編譯器CC對(duì)MiniGUI進(jìn)行交叉編譯,獲得可在s3c2410上運(yùn)行的庫;(3)在s3c2410開發(fā)板的文件系統(tǒng)中添加交叉編譯的MiniGUI庫;(4)編譯MiniGUI可執(zhí)行程序,并下載到s3c2410開發(fā)板上。
1.1 安裝和設(shè)置交叉編譯環(huán)境
在宿主機(jī)建立MiniGUIde交叉編譯環(huán)境,這里使用的是arm-none-linux-gnueabi系列,將arm-none-linux-gnueabi交叉編譯器文件夾拷貝到宿主機(jī)目錄的/usr/local/arm目錄下,在控制臺(tái)執(zhí)行g(shù)edit /etc/profile,在profile文件最末尾增加export PATH=/usr/local/arm/arm-2009q1/bin:$PATH,就可將交叉編譯器加載到系統(tǒng)環(huán)境變量中。
1.2 交叉編譯MiniGUI庫函數(shù),并進(jìn)行配置
(1)使用tar解壓縮minigui-res-2.0.4.tar.gz文件,之后使用命令make install安裝minigui-res-2.0.4,其安裝文件默認(rèn)保存到到/usr/local/lib/minigui目錄下,文件內(nèi)容包括bmp圖片、cursor光標(biāo)效果圖片、font默認(rèn)字體、imetab輸入法數(shù)據(jù)表等。
(2)使用tar解壓縮libminigui-2.0.4-linux.tar.gz文件,之后使用make menuconfig命令進(jìn)入圖形配置界面,配置內(nèi)容需要注意以下幾點(diǎn)。
①System options指定Unit of timer is 10ms,用來支持10毫秒觸發(fā)一次定時(shí)器;指定Cursor support,用來支持光標(biāo)顯示;不指定Build MiniGUI-Processes模式,自動(dòng)會(huì)改為MiniGUI-Lite模式;指定Use incore (built-in) resource,避免缺少資源導(dǎo)致編譯報(bào)錯(cuò);指定Clipboard support,用來支持內(nèi)容復(fù)制到系統(tǒng)剪貼板的功能。
②GAL引擎指定Include Advanced 2D Graphics APIs,用來支持2D畫圖功能;指定NEWGAL engine of Dummy、NEWGAL engine of Shadow、NEWGAL engine on Linux FrameBuffer console和Have console on Linux FrameBuffer,用來支持framebuffer顯示功能;指定NEWGAL engine for Common LCD interface,用來支持LCD顯示屏功能。
③IAL引擎指定Dummy IAL engine、Automatic IAL engine、Random IAL engine、Linux native (console) input engine,用來支持控制臺(tái)功能;指定PS2 mouse和IntelligentMouse (IMPS/2) mouse,用來支持PS鍵鼠功能。
④Font Option指定Raw bitmap font,用來支持RBF字體;不指定Var bitmap font,避免出現(xiàn)unreferenced vfb_Courier8x8錯(cuò)誤;指定Qt Prerendered Font,用來支持QPF字體;指定TrueType font,用來支持矢量字體,否則無法滿足隨意放大字體號(hào)數(shù)的需求;指定Incore font sansserif、Incore font courier、Incore font symbol 和Incore font vgas,用來支持默認(rèn)系統(tǒng)字體。
⑤Charset options指定GBK charset,用來支持GBK字符集;指定EUC encoding of GB2312 charset,用來支持GB2312字符集;指定BIG5 charset,用來支持大五碼繁體字;指定UNICODE (ISO-10646-1 and UTF-8 encoding) ,用來支持UNICODE字符集。
⑥6Keyboard layout specific options不指定所有的鍵盤格局,表示使用默認(rèn)的英文鍵盤格局。
⑦Input Medthold Option不指定IME (GB2312) Intelligent Pinyin module,避免mginit程序一啟動(dòng)就崩潰了。
⑧Image Options指定GIF file support、JPG file support 和PNG file support,用來支持GIF、JPG和PNG圖片的顯示;指定Includes SaveBitmap-related functions,用來支持BMP保存圖片功能。
⑨Appearance options指定(Classic) The window/control style,其他模式會(huì)造成系統(tǒng)消耗大量資源進(jìn)而導(dǎo)致系統(tǒng)不穩(wěn)定。
⑩Misc options指定mouse calibration,用來支持校準(zhǔn)功能;不指定Include About Dialog Box,取消MiniGUI的關(guān)于提示功能;不指定screenshots,防止誤觸鍵盤PrtSc鍵后自動(dòng)截圖。
Controls options指定所有的選項(xiàng),表示支持所有的基礎(chǔ)控件。
Ext library options指定所有的選項(xiàng),表示支持所有的擴(kuò)展控件。
Development Environment Option指定(Linux) The target operating system,設(shè)置目標(biāo)系統(tǒng)為linux系統(tǒng);指定(arm-none-linux-gnueabi-gcc) Compiler,設(shè)置編譯器為arm-none-linux-gnueabi-gcc;指定(glibc) Libc,設(shè)置libc庫為glibc庫;指定Installation option下的Path prefix為/usr/local/cross-arm-linux,表示設(shè)置交叉編譯MiniGUI庫的安裝路徑為/usr/local/cross-arm-linux。
以上內(nèi)容選完后,使用make命令就可編譯生成MiniGUI的運(yùn)行庫。
1.3 MiniGUI運(yùn)行環(huán)境的配置
將/usr/local/cross-arm-linux/etc目錄下的MiniGUI.cfg文件復(fù)制到s3c2410開發(fā)板文件系統(tǒng)中的/etc目錄下;將/usr/local/cross-arm-linux/lib目錄下的所有文件復(fù)制到s3c2410開發(fā)板文件系統(tǒng)的/usr/lib目錄下;將/usr/local/lib/minigui目錄下的所有資源文件復(fù)制到s3c2410開發(fā)板文件系統(tǒng)的/usr/local/lib/minigui目錄中。以后內(nèi)容完成后,進(jìn)入s3c2410開發(fā)板文件系統(tǒng)的/etc目錄,找到并打開MiniGUI.cfg文件,修改內(nèi)容為:
GAL引擎使用fbcon,與framebuffer對(duì)應(yīng);IAL引擎使用系統(tǒng)控制臺(tái)console;mtype配置為IMPS2,表示支持PS2鍵鼠,mdev配置為/dev/input目錄下的mice設(shè)備,表示兼容USB鍵鼠;顯示模式采用800×600分辨率,16位色的LCD顯示屏。以內(nèi)容操作完成后,代表MiniGUI平臺(tái)完整移植到s3c2410開發(fā)板中。
1.4 編譯MiniGUI的應(yīng)用程序
MiniGUI的應(yīng)用程序函數(shù)入口是int MiniGUIMain (int argc, const char* argv[]),標(biāo)準(zhǔn)的main函數(shù)已經(jīng)在MiniGUIMain中定義了,MiniGUIMain函數(shù)啟動(dòng)時(shí),會(huì)對(duì)MiniGUI系統(tǒng)進(jìn)行初始化工作。使用arm-none-linux-gnueabi-gcc交叉編譯器編譯MiniGUI應(yīng)用程序,需要指定LIBDIR為MiniGUI交叉編譯庫的安裝路徑/usr/local/cross-arm-linux/lib,指定INCDIR為MiniGUI交叉編譯庫的頭文件的安裝路徑/usr/local/cross-arm-linux/include,應(yīng)用程序編譯配置完成后就可以進(jìn)行編譯操作,編譯完成后將應(yīng)用程序下載到s3c2410開發(fā)板中。
2? 結(jié)論
該文以s3c2410開發(fā)板為硬件基礎(chǔ),移植MiniGUI系統(tǒng),重點(diǎn)描述了MiniGUI編譯選項(xiàng)的配置和啟動(dòng)參數(shù)的設(shè)置。實(shí)踐證明,嵌入式Linux下的MiniGUI高效、穩(wěn)定、占用資源少、可移植性強(qiáng)。
3? 結(jié)語
把性能優(yōu)良的GUI系統(tǒng)應(yīng)用于嵌入式系統(tǒng)設(shè)備中,為產(chǎn)品設(shè)計(jì)出友好的人機(jī)交互界面是當(dāng)前嵌入式技術(shù)領(lǐng)域開發(fā)的總體趨勢(shì),擁有廣闊的市場(chǎng)前景。MiniGUI作為國內(nèi)優(yōu)秀的自由軟件,因其控件豐富、源代碼開放等特點(diǎn)深受廣大用戶的喜愛。該文詳細(xì)描述了MiniGUI移植到s3c2410的目標(biāo)平臺(tái)上。熟悉圖形應(yīng)用程序的用戶可很快在MiniGUI上面編寫自己的圖形應(yīng)用程序。
參考文獻(xiàn)
[1] 魏永明.MiniGUI用戶手冊(cè)[M].北京:北京飛漫軟件技術(shù)有限公司,1998.
[2] 肖習(xí)攀.GUI應(yīng)用程序移植[M].北京:電子工業(yè)出版社,2007.
[3] 田澤.ARM7-uClinux開發(fā)實(shí)驗(yàn)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2005.
[4] 張綺文,謝建雄,謝勁心,等.ARM嵌入式常用模塊與綜合系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.