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