當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于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開(kāi)發(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é)教師魏永明主持開(kāi)發(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)隔離開(kāi)來(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開(kāi)發(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í)控件及“文件打開(kāi)”、“顏色選擇”對(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:配套示例程序。[!--empirenews.page--]
3.3 編譯安裝
    (1)建立工作目錄
    # mkdir/minigui
    # cd/minigui
    (2)編譯安裝MiniGUI庫(kù)
    # cd/minigui
    # tar xzvf libminigui-1.6.10.tar.gz-C/minigui
    # cd/minigui/libminigui-1.6.10
    #./configure-prefix=/home/-host=i386-redhat-linux-target=arm-linux--build=arm-linuxCC=arm-linux-gcc--disa-ble-vbfsu pport
    prefix選項(xiàng)用于指定MiniGUI函數(shù)庫(kù)的安裝路徑,默認(rèn)的安裝路徑是/usr/local,這里應(yīng)該是所使用的交叉編譯環(huán)境中系統(tǒng)頭文件目錄include庫(kù)目錄lib所在的目錄,本例中是/home,這樣一來(lái),MiniGUI的函數(shù)庫(kù)和頭文件也將被分別安裝到lib和include目錄中。在后續(xù)進(jìn)行MiniGUI應(yīng)用程序的交叉編譯時(shí),就可以正確地找到MiniGUI的頭文件和函數(shù)庫(kù)。其中:
    target選項(xiàng)用于指定目標(biāo)平臺(tái),這里使用arm-linux;
    host選項(xiàng)用來(lái)指明宿主機(jī)的類(lèi)型,這里使用i386-redhat-linux;
    build選項(xiàng)指定了交叉編譯的系統(tǒng)環(huán)境,這里使用arm-linux;
    CC用來(lái)指定使用的交叉編譯器,這里使用arm-linux-gcc。
    運(yùn)行.configure腳本成功后,就成了定制的Make-file文件,接下來(lái)只需編譯和安裝即可。
    # make
    # make install
    (3)編譯安裝MiniGUI資源文件
    # tar xzvf minigui-res-1.6.10.tar.gz-C/minigui
    # cd/minigui/minigui-res-1.6.10
    # make install
    (4)編譯安裝配套應(yīng)用程序
    # tar mg-smaples-1.6.10.tar.gz-C/minigui
    # cd/minigui/mg-smaples-1.6.10# make install
3.4 拷貝MiniGUI資源到開(kāi)發(fā)板
    把/home/lib目錄下的所有庫(kù)文件(注:-prefix=/home/)拷貝到開(kāi)發(fā)板的/lib目錄下;把/minigui/res目錄下的所有文件拷貝到開(kāi)發(fā)板上/usr/local/lib目錄下,其開(kāi)發(fā)板上的目錄如下形式/usr/local/lib/minigui/res/……;把/home/etc下的MiniGUI.c fg拷貝到開(kāi)發(fā)板上的/etc目錄下;最后把配套應(yīng)用程序拷貝到開(kāi)發(fā)板目錄下。
3.5 配置開(kāi)發(fā)板的運(yùn)行環(huán)境
    (1)/etc目錄下建立ld.so.conf文件,并添加如下內(nèi)容:
    /usr/local/lib
    /lib
    這樣程序運(yùn)行的時(shí)候可以找到相應(yīng)的庫(kù)文件。
    (2)修改開(kāi)發(fā)板上的/etc/MiniGUI.cfg文件,主要修改是圖形引擎和輸入引擎。本開(kāi)發(fā)平臺(tái)的Linux中自帶有VESAFrameBuffer設(shè)備驅(qū)動(dòng)程序,并且初始狀態(tài)已經(jīng)激活。FrameBuffer是Linux內(nèi)核中的一種驅(qū)動(dòng)程序接口,這種接口將顯示設(shè)備抽象為幀緩沖區(qū),用戶可以將它看成是顯示內(nèi)存的一個(gè)映像。將其映射到進(jìn)程地址空間之后,就可以直接進(jìn)行讀寫(xiě)操作,而寫(xiě)操作可以立即反映在屏幕上。這樣,MiniGUI就可以使用FrameBuffer作為圖形引擎進(jìn)行圖像顯示。LCD顯示器的像素為240x320,因此圖形引擎的顯示模式defaultmode為240x320-16bpp。并在輸入引擎中添加usb鼠標(biāo)設(shè)備文件和鼠標(biāo)協(xié)議。修改如下:
   
    同時(shí)在/etc/init.d/rcS腳本文件里添加鼠標(biāo)設(shè)備,內(nèi)容如下:
    /bin/ln-s/devr/vc/0/dev/tty0
    /bin/ln-s/dev/input/mouse0/dev//mouse

4 結(jié)語(yǔ)
    把圖形用戶界面移植到嵌入式設(shè)備中是嵌入式系統(tǒng)發(fā)展的趨勢(shì),本文詳細(xì)介紹了MiniGUI移植S3C2440的過(guò)程,并最終能穩(wěn)定得在目標(biāo)平臺(tái)上運(yùn)行。該方法對(duì)于移植到其他的目標(biāo)平臺(tái)有良好的借鑒作用。MiniGUI作為源代碼開(kāi)放的自由軟件,在嵌入式圖形用戶界面領(lǐng)域?qū)⒂懈玫膶?shí)用價(jià)值,并隨著MiniGUI的功能日趨強(qiáng)大,應(yīng)用將越來(lái)越廣泛。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉