嵌入式 Linux 環(huán)境下MiniGUI 的研究與移植
發(fā)布時間:2008/8/27 0:00:00 訪問次數(shù):544
0前言
近年來隨著嵌入式設(shè)備與市場需求的廣泛結(jié)合,手機(jī)、pda等產(chǎn)品的應(yīng)用對可視化操作界面的簡潔和方便提出了更高的要求,這都需要一個穩(wěn)定可靠的高性能gui系統(tǒng)來提供支持。圖形用戶界面(graphic user interface,簡稱gui)的廣泛流行是當(dāng)今計(jì)算機(jī)技術(shù)的重要成就之一,它極大地方便了非專業(yè)用戶的使用,人們可以通過窗口、菜單方便地進(jìn)行操作。嵌入式系統(tǒng)對gui的基本要求包括有輕型、占用資源少、高性能、高可靠性以及可配置等。minigui是目前比較常用的幾種gui系統(tǒng)之一,與其他的gui相比,minigui最顯著的特點(diǎn)就是輕型、占用資源少,而且在這幾年的發(fā)展里,minigui已經(jīng)非常成熟和穩(wěn)定了,在許多產(chǎn)品和項(xiàng)目中都已得到了實(shí)際應(yīng)用。*
1 minigui的特點(diǎn)和體系結(jié)構(gòu)
1. 1 minigui的特點(diǎn)
minigui是由原清華大學(xué)教師魏永明主持開發(fā)的輕量級圖形系統(tǒng),是一種面向嵌入式或?qū)崟r系統(tǒng)的圖形用戶界面支持系統(tǒng)。它遵循gpl公約,是基于svgalib及l(fā)inuxthread庫的多窗口gui支持系統(tǒng)。能跨多種操作系統(tǒng),主要運(yùn)行于linux及一切具有posix線程支持的posix兼容系統(tǒng),包括普通嵌入式linux、ecos、uc/os-ii、vxworks等系統(tǒng),是國內(nèi)最早的自由軟件之一。
minigui的主要特點(diǎn)有:(1) 遵循gpl條款的純自由軟件;(2) 提供了完備的多窗口機(jī)制;(3) 多字符集和多字體支持,目前支持iso8859-1、gb2312及big5等字符集,并且支持各種光柵字體和truetype、type1等矢量字體;(4) 全拼和五筆等漢字輸入法支持;(5) bmp、gif、jpeg及pcx等常見圖像文件的支持;(6) windows的資源文件支持,如位圖、圖標(biāo)、光標(biāo)、插入符、定時器及加速鍵等;(7) 可移植性好。
1.2 minigui的體系結(jié)構(gòu)
1.2.1多線程的分層設(shè)計(jì)
從整體結(jié)構(gòu)上看,minigui是分層設(shè)計(jì)的,結(jié)構(gòu)如圖1所示。在最底層,gal(圖形抽象層)和ial(輸入抽象層)及鼠標(biāo)和鍵盤的驅(qū)動;中間層是minigui的核心層,包括窗口系統(tǒng)必不可少的各個模塊;最頂層是api,即編程接口。gal和ial為minigui提供了底層的linux控制臺或者x window上的圖形接口以及輸入接口,而pthread用于提供內(nèi)核級線程支持的c函數(shù)庫。利用gal和ial,大大提高了minigui的可移植性,并且使程序的開發(fā)和調(diào)試變得更加容易。
minigui本身運(yùn)行在多線程模式下,它的許多模塊都以單獨(dú)的線程運(yùn)行,同時,minigui還利用線程來支持多窗口。從本質(zhì)上講,每個線程有一個消息隊(duì)列,消息隊(duì)列是實(shí)現(xiàn)線程數(shù)據(jù)交換和同步的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。一個線程向消息隊(duì)列中發(fā)送消息,而另一個線程從這個消息隊(duì)列中獲取消息,同一個線程中創(chuàng)建的窗口可共享同一個消息隊(duì)列。一個線程向消息隊(duì)列中發(fā)送消息,而另一個線程從這個消息隊(duì)列中獲取消息,同一個線程中創(chuàng)建的窗口可共享同一個消息隊(duì)列。利用消息隊(duì)列和多線程之間的同步機(jī)制,可以實(shí)現(xiàn)下面要講到的微客戶/服務(wù)器機(jī)制。
圖1 minigui的層次結(jié)構(gòu)
1.2.2微客戶/服務(wù)器結(jié)構(gòu)
在多線程環(huán)境中,與多進(jìn)程間的通訊機(jī)制類似,線程之間也有交互和同步的需求。比如, 用來管理窗口的線程維持全局的窗口列表, 而其他線程不能直接修改這些全局的數(shù)據(jù)結(jié)構(gòu), 而必須依據(jù)“先來先服務(wù)”的原則,依次處理每個線程的請求,這就是一般性的客戶/服務(wù)器模式。minigui利用線程之間的同步操作實(shí)現(xiàn)了客戶線程和服務(wù)器線程之間的微客戶/服務(wù)器機(jī)制。
2開發(fā)環(huán)境
h2410eb開發(fā)板由北京恒頤高科技術(shù)有限公司設(shè)計(jì)開發(fā),它基于samsung公司的s3c2410a20嵌入式arm處理器。s3c2410a20內(nèi)嵌 arm920t 核,帶有全性能的mmu,具有高性能、低功耗、低成本、小體積等優(yōu)點(diǎn),適用于手持設(shè)備、汽車等領(lǐng)域。
h2410eb除帶有大容量的sdram和flash以外,還擴(kuò)展了rs-232c串行接口、10mbps以太網(wǎng)接口、觸摸屏接口、音頻輸入/輸出接口、usb host、usb slave、uart接口、iic接口、用戶自定義鍵盤、lcd顯示器,方便用戶使用和進(jìn)行參考設(shè)計(jì)。它支持嵌入式linux操作系統(tǒng)的運(yùn)行,支持mp3/mpeg播放、gui、web 服務(wù)及其它服務(wù),同時可根據(jù)用戶需求開發(fā)特定軟件與設(shè)備驅(qū)動程序。
操作系統(tǒng)采用裁減后的linux,linux kernel版本為v2.4.18,系統(tǒng)使用的交叉編譯器是arm-linux-gcc。另外,還有驅(qū)動程序源碼和測試程序源碼等代碼模塊。
3 minigui的移植
本文中使用的主機(jī)系統(tǒng)為red hat linux 9.0,移植目標(biāo)系統(tǒng)為linux2.4.18,minigui的版本是1.6.9。在主機(jī)上交叉編譯minigui鏈接庫,然后將針對目標(biāo)機(jī)編譯的庫文件,與根文件系統(tǒng)一起燒寫到目標(biāo)板的ram空間,以后將運(yùn)行在目標(biāo)板上的圖形用戶界面直接鏈接到該庫,脫離主機(jī)獨(dú)立運(yùn)行。
3.1 linux交叉編譯環(huán)境的構(gòu)建
gui的編譯通常都是在pc機(jī)上執(zhí)行的,也就是說,
0前言
近年來隨著嵌入式設(shè)備與市場需求的廣泛結(jié)合,手機(jī)、pda等產(chǎn)品的應(yīng)用對可視化操作界面的簡潔和方便提出了更高的要求,這都需要一個穩(wěn)定可靠的高性能gui系統(tǒng)來提供支持。圖形用戶界面(graphic user interface,簡稱gui)的廣泛流行是當(dāng)今計(jì)算機(jī)技術(shù)的重要成就之一,它極大地方便了非專業(yè)用戶的使用,人們可以通過窗口、菜單方便地進(jìn)行操作。嵌入式系統(tǒng)對gui的基本要求包括有輕型、占用資源少、高性能、高可靠性以及可配置等。minigui是目前比較常用的幾種gui系統(tǒng)之一,與其他的gui相比,minigui最顯著的特點(diǎn)就是輕型、占用資源少,而且在這幾年的發(fā)展里,minigui已經(jīng)非常成熟和穩(wěn)定了,在許多產(chǎn)品和項(xiàng)目中都已得到了實(shí)際應(yīng)用。*
1 minigui的特點(diǎn)和體系結(jié)構(gòu)
1. 1 minigui的特點(diǎn)
minigui是由原清華大學(xué)教師魏永明主持開發(fā)的輕量級圖形系統(tǒng),是一種面向嵌入式或?qū)崟r系統(tǒng)的圖形用戶界面支持系統(tǒng)。它遵循gpl公約,是基于svgalib及l(fā)inuxthread庫的多窗口gui支持系統(tǒng)。能跨多種操作系統(tǒng),主要運(yùn)行于linux及一切具有posix線程支持的posix兼容系統(tǒng),包括普通嵌入式linux、ecos、uc/os-ii、vxworks等系統(tǒng),是國內(nèi)最早的自由軟件之一。
minigui的主要特點(diǎn)有:(1) 遵循gpl條款的純自由軟件;(2) 提供了完備的多窗口機(jī)制;(3) 多字符集和多字體支持,目前支持iso8859-1、gb2312及big5等字符集,并且支持各種光柵字體和truetype、type1等矢量字體;(4) 全拼和五筆等漢字輸入法支持;(5) bmp、gif、jpeg及pcx等常見圖像文件的支持;(6) windows的資源文件支持,如位圖、圖標(biāo)、光標(biāo)、插入符、定時器及加速鍵等;(7) 可移植性好。
1.2 minigui的體系結(jié)構(gòu)
1.2.1多線程的分層設(shè)計(jì)
從整體結(jié)構(gòu)上看,minigui是分層設(shè)計(jì)的,結(jié)構(gòu)如圖1所示。在最底層,gal(圖形抽象層)和ial(輸入抽象層)及鼠標(biāo)和鍵盤的驅(qū)動;中間層是minigui的核心層,包括窗口系統(tǒng)必不可少的各個模塊;最頂層是api,即編程接口。gal和ial為minigui提供了底層的linux控制臺或者x window上的圖形接口以及輸入接口,而pthread用于提供內(nèi)核級線程支持的c函數(shù)庫。利用gal和ial,大大提高了minigui的可移植性,并且使程序的開發(fā)和調(diào)試變得更加容易。
minigui本身運(yùn)行在多線程模式下,它的許多模塊都以單獨(dú)的線程運(yùn)行,同時,minigui還利用線程來支持多窗口。從本質(zhì)上講,每個線程有一個消息隊(duì)列,消息隊(duì)列是實(shí)現(xiàn)線程數(shù)據(jù)交換和同步的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。一個線程向消息隊(duì)列中發(fā)送消息,而另一個線程從這個消息隊(duì)列中獲取消息,同一個線程中創(chuàng)建的窗口可共享同一個消息隊(duì)列。一個線程向消息隊(duì)列中發(fā)送消息,而另一個線程從這個消息隊(duì)列中獲取消息,同一個線程中創(chuàng)建的窗口可共享同一個消息隊(duì)列。利用消息隊(duì)列和多線程之間的同步機(jī)制,可以實(shí)現(xiàn)下面要講到的微客戶/服務(wù)器機(jī)制。
圖1 minigui的層次結(jié)構(gòu)
1.2.2微客戶/服務(wù)器結(jié)構(gòu)
在多線程環(huán)境中,與多進(jìn)程間的通訊機(jī)制類似,線程之間也有交互和同步的需求。比如, 用來管理窗口的線程維持全局的窗口列表, 而其他線程不能直接修改這些全局的數(shù)據(jù)結(jié)構(gòu), 而必須依據(jù)“先來先服務(wù)”的原則,依次處理每個線程的請求,這就是一般性的客戶/服務(wù)器模式。minigui利用線程之間的同步操作實(shí)現(xiàn)了客戶線程和服務(wù)器線程之間的微客戶/服務(wù)器機(jī)制。
2開發(fā)環(huán)境
h2410eb開發(fā)板由北京恒頤高科技術(shù)有限公司設(shè)計(jì)開發(fā),它基于samsung公司的s3c2410a20嵌入式arm處理器。s3c2410a20內(nèi)嵌 arm920t 核,帶有全性能的mmu,具有高性能、低功耗、低成本、小體積等優(yōu)點(diǎn),適用于手持設(shè)備、汽車等領(lǐng)域。
h2410eb除帶有大容量的sdram和flash以外,還擴(kuò)展了rs-232c串行接口、10mbps以太網(wǎng)接口、觸摸屏接口、音頻輸入/輸出接口、usb host、usb slave、uart接口、iic接口、用戶自定義鍵盤、lcd顯示器,方便用戶使用和進(jìn)行參考設(shè)計(jì)。它支持嵌入式linux操作系統(tǒng)的運(yùn)行,支持mp3/mpeg播放、gui、web 服務(wù)及其它服務(wù),同時可根據(jù)用戶需求開發(fā)特定軟件與設(shè)備驅(qū)動程序。
操作系統(tǒng)采用裁減后的linux,linux kernel版本為v2.4.18,系統(tǒng)使用的交叉編譯器是arm-linux-gcc。另外,還有驅(qū)動程序源碼和測試程序源碼等代碼模塊。
3 minigui的移植
本文中使用的主機(jī)系統(tǒng)為red hat linux 9.0,移植目標(biāo)系統(tǒng)為linux2.4.18,minigui的版本是1.6.9。在主機(jī)上交叉編譯minigui鏈接庫,然后將針對目標(biāo)機(jī)編譯的庫文件,與根文件系統(tǒng)一起燒寫到目標(biāo)板的ram空間,以后將運(yùn)行在目標(biāo)板上的圖形用戶界面直接鏈接到該庫,脫離主機(jī)獨(dú)立運(yùn)行。
3.1 linux交叉編譯環(huán)境的構(gòu)建
gui的編譯通常都是在pc機(jī)上執(zhí)行的,也就是說,
熱門點(diǎn)擊
- 基于嵌入式處理器的電力諧波多功能實(shí)時分析系統(tǒng)
- VxWorks下實(shí)時多任務(wù)程序的實(shí)現(xiàn)
- 基于ARM9處理器的智能導(dǎo)游儀設(shè)計(jì)
- ARM、DSP、FPGA的特點(diǎn)和區(qū)別
- 基于CP2200的嵌入式以太網(wǎng)接口設(shè)計(jì)
- ucos-ii在嵌入式智能視覺監(jiān)控系統(tǒng)中的應(yīng)
- ARM/uClinux應(yīng)用程序的開發(fā)
- 基于S3C2410的Windows CE 5
- 基于ARM7的LCD設(shè)計(jì)與實(shí)現(xiàn)
- Linux系統(tǒng)在嵌入式DVR中的應(yīng)用
推薦技術(shù)資料
- DFRobot—玩的就是
- 如果說新車間的特點(diǎn)是“靈動”,F(xiàn)QPF12N60C那么... [詳細(xì)]
- 扇出型面板級封裝(FOPLP)
- 全球首款無掩模光刻系統(tǒng)—DSP
- 紫光閃存E5200 PCIe 5.0 企業(yè)級
- NAND Flash 技術(shù)和系
- 高性能DIMM 內(nèi)存數(shù)據(jù)技術(shù)封
- PCIe Gen4 SSD主控
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究