基于S3C2440的MiniGUI移植
摘要:隨著嵌入式系統(tǒng)的發(fā)展,嵌入式圖形用戶界面需求越來(lái)越明顯,MiniGUI是目前比較成熟的嵌入式Linux系統(tǒng)的圖形用戶界面。為了滿足嵌入式圖形用戶界面的需求,將MiniGUI移植到基于S3C2440的處理器目標(biāo)板。首先說(shuō)明了如何建立交叉環(huán)境,接著討論MiniGUI 1.6.10庫(kù)和資源的移植,最后閘述運(yùn)行環(huán)境的配置。實(shí)現(xiàn)了對(duì)S3C2440開發(fā)板的MiniGUI移植,完成嵌入式Linux圖形用戶界面的構(gòu)建,并為其他嵌入式設(shè)備的移植提供借鑒。
關(guān)鍵詞:嵌入式系統(tǒng);MiniGUI;S3C2440;移植
隨著嵌入式系統(tǒng)的迅速發(fā)展,圖形用戶界面(Graphic User Interface,GUI)需求越來(lái)越明顯。MiniGUI是面向?qū)崟r(shí)嵌入式系統(tǒng)的輕量級(jí)圖形用戶界面支持系統(tǒng),以輕型、占用資源少、高性能、可配置等特點(diǎn)廣泛應(yīng)用于通信、醫(yī)療、工控、電子、機(jī)頂盒、多媒體等領(lǐng)域。本文正是針對(duì)這種需求,介紹如何在S3C240上移植MiniGUI的全過(guò)程。
1 圖形用戶界面MiniGUI
MiniGUI是由原清華大學(xué)教師魏永明主持開發(fā)的輕量級(jí)圖形系統(tǒng),遵循GPL公約。所支持的操作系統(tǒng)已不僅僅限于Linux,它還可以在μCli nux,μC/OS-Ⅱ,eCos和VxWorks等系統(tǒng)上運(yùn)行。已驗(yàn)證的硬件平臺(tái)包括Intelx86,ARM(ARM7/AMR9/StrongARM/xScale),Power-PC,MIP S,M68K(DragonBall/ColdFire)等。
1.1 MiniGUI與嵌入式系統(tǒng)的關(guān)系
MiniGUI具有良好的軟件架構(gòu),通過(guò)抽象層將MiniGUI上層和底層操作系統(tǒng)隔離開來(lái)。如圖1所示,基于MiniGUI的應(yīng)用程序一般通過(guò)ANSIC庫(kù)以及MiniGUI自身提供的API來(lái)實(shí)現(xiàn)自己的功能;MiniGUI中的“可移植層”可將特定操作系統(tǒng)及底層硬件的細(xì)節(jié)隱藏起來(lái),而上層應(yīng)用程序則無(wú)需關(guān)系底層的硬件平臺(tái)輸出和輸入設(shè)備。
1.2 MiniGUI體系結(jié)構(gòu)
從結(jié)構(gòu)上看,MiniGUI是分層設(shè)計(jì)的,層次結(jié)構(gòu)如圖2所示。在底層,GAL和IAL為MiniGUI提供了底層的Linux控制臺(tái)或者X Window上的圖形接口以及輸入接口。中間層是MiniGUI的核心層,其中包括了窗口系統(tǒng)必不可少的各個(gè)模塊。最頂層的API向應(yīng)用設(shè)計(jì)提供編程接口。
2 S3C2440開發(fā)平臺(tái)簡(jiǎn)介
本文使用的目標(biāo)平臺(tái)是三星公司推出的高度集成的S3C2440(ARM920T core with MMC),最高主頻可達(dá)532 MHz微處理器,提供64MB SDRA M,64 MBNAND FLASH以及2 MB NOR FLASH的存儲(chǔ)設(shè)備,另外包括IDE和PCMICA接口的豐富的外圍電路和多功能的擴(kuò)展接口。S3C2440采用高性能ARM9微處理器以其優(yōu)化的片上性能,在視頻會(huì)議、樓宇的對(duì)講系統(tǒng)、網(wǎng)絡(luò)監(jiān)控、GPS定位/導(dǎo)航儀、醫(yī)療電子設(shè)備、多媒體終端產(chǎn)品等應(yīng)用領(lǐng)域有廣泛應(yīng)用。
3 MiniGUI的移植
宿主主機(jī)系統(tǒng)為redhat Linux 9.0,要求完全安裝,移植步驟如下:
3.1 建立交叉編譯環(huán)境
在移植之前首先建立好交叉編譯環(huán)境,簡(jiǎn)單地說(shuō)是指在一個(gè)平臺(tái)上可以生成能在另一個(gè)平臺(tái)上運(yùn)行的代碼,編譯工具為arm-linux-gcc-3.3.2。
#tar-xvjf rm-linux-gcc-3.3.2
默認(rèn)的安裝路徑是/usr/local,為了避免每次設(shè)置PATH,在.bash_profile文件中增加PATH=/usr/local/arm/3.4.1bin:MYMPA TH,并運(yùn)行以下命令:
#source.bash_profile
3.2 源代碼準(zhǔn)備
從http://www.minigui.org/res.shtml下載源代碼包如下:
(1)libminigui-1.6.10.tar.gz:MiniGUI函數(shù)庫(kù)源代碼。
MiniGUI由3個(gè)函數(shù)庫(kù)的組成,它們分別是libminigui,libmgext和libvcongui。libminigui是提供窗口管理和圖形接口的核心函數(shù)庫(kù),也提供了大量的標(biāo)準(zhǔn)控件;libmgext是libminigui的一個(gè)擴(kuò)展庫(kù),提供了一些高級(jí)控件及“文件打開”、“顏色選擇”對(duì)話框等;libvcon gui則為L(zhǎng)inux操作系統(tǒng)提供了一個(gè)應(yīng)用程序可用的虛擬控制臺(tái)窗口,從而可以方便地在MiniGUI環(huán)境中運(yùn)行字符界面的應(yīng)用程序,libmgext和libvcongui庫(kù)已經(jīng)包含在這個(gè)源代碼包中。
(2)minigui-res-1.6.10.tar.gz:MiniGUI所使用的資源,包括基本字體、圖標(biāo)、位圖和鼠標(biāo)光標(biāo)。
(3)mg-smaples-1.6.10.tar.gz:配套示例程序。
評(píng)論