電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 1940|回復(fù): 0
收起左側(cè)

嵌入式培訓(xùn)出來(lái)的好找工作么_在嵌入式系統(tǒng)上的MiniGUI應(yīng)用開(kāi)發(fā)過(guò)程詳解

[復(fù)制鏈接]

2607

主題

2607

帖子

7472

積分

高級(jí)會(huì)員

Rank: 5Rank: 5

積分
7472
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-7-24 12:24:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
嵌入式培訓(xùn)出來(lái)的好找工作么_在嵌入式系統(tǒng)上的MiniGUI應(yīng)用開(kāi)發(fā)過(guò)程詳解,   

為目標(biāo)嵌入式產(chǎn)品選擇適合的嵌入式圖形支持系統(tǒng)成為與選擇嵌入式操作系統(tǒng)一樣頗具挑戰(zhàn)性。本土公司開(kāi)發(fā)的MiniGUI是一個(gè)高效、可靠、可定制、小巧靈活的圖形用戶(hù)界面支持系統(tǒng),并具有跨硬件平臺(tái)、跨操作系統(tǒng)的可移植性,非常適合于實(shí)時(shí)嵌入式產(chǎn)品開(kāi)發(fā)。本文詳細(xì)闡述了MiniGUI的特點(diǎn)、運(yùn)行模式和應(yīng)用。

隨著高端消費(fèi)類(lèi)電子產(chǎn)品(PDA、手機(jī)等)的廣泛應(yīng)用,原先僅在軍工、工業(yè)控制等領(lǐng)域中使用的實(shí)時(shí)嵌入式操作系統(tǒng),受到越來(lái)越多的關(guān)注。因?yàn)榍度胧疆a(chǎn)品本身是一種高度定制化的軟硬件集成產(chǎn)品,單個(gè)操作系統(tǒng)無(wú)法滿(mǎn)足各類(lèi)嵌入式產(chǎn)品的多樣化需求,因此,業(yè)界有許多各具特色的實(shí)時(shí)嵌入式操作系統(tǒng)產(chǎn)品可供選擇。

在嵌入式產(chǎn)品開(kāi)發(fā)中,除操作系統(tǒng)之外,開(kāi)發(fā)人員關(guān)注最多的另外一個(gè)系統(tǒng)軟件組件就是圖形支持系統(tǒng)。只要是面向人機(jī)交互的嵌入式產(chǎn)品,就涉及到文字或者圖形的輸出問(wèn)題。

不過(guò),在嵌入式系統(tǒng)上的GUI應(yīng)用開(kāi)發(fā),不像PC平臺(tái)上的應(yīng)用開(kāi)發(fā)那么容易和方便。一是因?yàn)樵O(shè)備的可用資源有限(CPU運(yùn)算能力、靜態(tài)和動(dòng)態(tài)存儲(chǔ)空間等),二是因?yàn)椴僮飨到y(tǒng)提供的底層機(jī)制有限。這樣,為具有不同硬件配置的嵌入式產(chǎn)品以及各類(lèi)實(shí)時(shí)嵌入式操作系統(tǒng)提供功能完備、且又適合嵌入式產(chǎn)品特點(diǎn)的GUI支持系統(tǒng),存在著諸多技術(shù)挑戰(zhàn)。

嵌入式操作系統(tǒng)的選擇

“內(nèi)核接口+ANSI C庫(kù)”的模式,是大多數(shù)嵌入式操作系統(tǒng)開(kāi)發(fā)采用的編程模式。但是,這種模式還存在一些問(wèn)題。如果我們要使用ANIS C庫(kù)中的標(biāo)準(zhǔn)I/O接口,則需要操作系統(tǒng)提供文件系統(tǒng)及字符輸出的支持;如果我們要使用ANSI C庫(kù)中的內(nèi)存管理函數(shù)(malloc/free函數(shù)族),就需要提供針對(duì)具體硬件的堆管理方案及實(shí)現(xiàn)代碼。因此,RTOS通常都設(shè)計(jì)為模塊化的軟件系統(tǒng),需要什么樣的功能,可向RTOS產(chǎn)品廠商購(gòu)買(mǎi)對(duì)應(yīng)的模塊來(lái)實(shí)現(xiàn)。

  

實(shí)際上,不同RTOS之間的區(qū)別,除了在任務(wù)管理上的核心區(qū)別之外,其他的主要區(qū)別就在外圍模塊上。圖1給出了RTOS的一般軟件結(jié)構(gòu)。

RTOS可劃分為如下幾個(gè)種類(lèi):

1.傳統(tǒng)實(shí)時(shí)嵌入式操作系統(tǒng)。主要包括:VxWorks、pSOS、Nucleus、WinCE等。VxWorks和pSOS的用戶(hù)主要集中在軍工、工業(yè)控制及電信領(lǐng)域,Nucleus和WinCE在消費(fèi)類(lèi)產(chǎn)品中應(yīng)用較為廣泛。

2.開(kāi)放源碼的嵌入式操作系統(tǒng)。典型代表有Linux/uClinux、eCos。因?yàn)閭鹘y(tǒng)實(shí)時(shí)嵌入式操作系統(tǒng)價(jià)格比較昂貴,所以許多用戶(hù)開(kāi)始使用免授權(quán)費(fèi)的Linux/uClinux等操作系統(tǒng)開(kāi)發(fā)自己的嵌入式產(chǎn)品。Linux操作系統(tǒng)從本質(zhì)上屬于通用操作系統(tǒng),缺少?gòu)?qiáng)實(shí)時(shí)支持,因此嵌入式Linux在某些不需要強(qiáng)實(shí)時(shí)性的嵌入式產(chǎn)品中得到了較多應(yīng)用,典型的產(chǎn)品有智能手機(jī)(這類(lèi)產(chǎn)品中的實(shí)時(shí)性主要通過(guò)專(zhuān)用硬件芯片保證)、查詢(xún)終端等。uClinux是Linux的一個(gè)變種,主要運(yùn)行在沒(méi)有內(nèi)存管理單元(MMU)的CPU架構(gòu)上。因?yàn)闆](méi)有內(nèi)存管理單元,uClinux無(wú)法實(shí)現(xiàn)現(xiàn)代操作系統(tǒng)能夠提供的進(jìn)程地址空間保護(hù)等高級(jí)特性,但它最大程度地保留了Linux的系統(tǒng)調(diào)用功能,而且資源消耗低,因此在一些中低端的32位嵌入式產(chǎn)品中得到了應(yīng)用。eCos也是一種開(kāi)源、免授權(quán)費(fèi)的RTOS產(chǎn)品。和Linux/uClinux相比,它更類(lèi)似傳統(tǒng)的實(shí)時(shí)嵌入式操作系統(tǒng),而且提供了豐富的外圍模塊,如文件系統(tǒng)、TCP/IP接口模塊、POSIX兼容接口模塊等。根據(jù)筆者的實(shí)際應(yīng)用經(jīng)驗(yàn),eCos操作系統(tǒng)在一定程度上可以用來(lái)替代傳統(tǒng)實(shí)時(shí)嵌入式操作系統(tǒng)。

3.新型實(shí)時(shí)嵌入式操作系統(tǒng)。主要包括uC/OS-II、ThreadX等操作系統(tǒng),它們的出現(xiàn),填補(bǔ)了RTOS操作系統(tǒng)市場(chǎng)的中低端市場(chǎng),給廣大嵌入式產(chǎn)品開(kāi)發(fā)者提供了性?xún)r(jià)比較高的選擇。

4.本地實(shí)時(shí)嵌入式操作系統(tǒng)。近幾年,中國(guó)也有廠商開(kāi)始提供自主研發(fā)的實(shí)時(shí)嵌入式操作系統(tǒng),典型的有Hopen和Delta操作系統(tǒng)。這些產(chǎn)品已經(jīng)在消費(fèi)類(lèi)電子產(chǎn)品和軍工領(lǐng)域中得到了一些應(yīng)用。

通過(guò)上面的介紹可以看到,嵌入式操作系統(tǒng)市場(chǎng)中存在各種產(chǎn)品可供選擇。嵌入式產(chǎn)品的種類(lèi)豐富,需求多樣,不太可能出現(xiàn)類(lèi)似PC那樣由一個(gè)操作系統(tǒng)獨(dú)霸天下的狀況。

嵌入式產(chǎn)品開(kāi)發(fā)中常用的圖形解決方案

在嵌入式產(chǎn)品的開(kāi)發(fā)過(guò)程中,軟件開(kāi)發(fā)人員通常采取如下幾種方法來(lái)解決產(chǎn)品的圖形需求:

1.針對(duì)特定圖形輸出設(shè)備的接口,自行開(kāi)發(fā)圖形相關(guān)的功能函數(shù)。利用這種手段編寫(xiě)的程序,無(wú)法將顯示邏輯和數(shù)據(jù)處理邏輯劃分開(kāi)來(lái),從而導(dǎo)致程序結(jié)構(gòu)不好,不便于調(diào)試,并導(dǎo)致大量的代碼重復(fù)。這種方案的缺點(diǎn)很明顯,即可移植性差,維護(hù)成本高。

2.購(gòu)買(mǎi)針對(duì)特定嵌入式操作系統(tǒng)的圖形中間件軟件包。一些嵌入式操作系統(tǒng)廠商,也為自己的操作系統(tǒng)專(zhuān)門(mén)開(kāi)發(fā)了對(duì)應(yīng)的GUI中間件產(chǎn)品。如uC/OS-II上的uC/GUI、Nucleus上的GRAFIX包、VxWorks上的WindML包等等。這種方案為嵌入式產(chǎn)品開(kāi)發(fā)提供了直接可用的方案,并且能夠和原有操作系統(tǒng)良好配合;但缺點(diǎn)是這類(lèi)軟件包的功能通常比較簡(jiǎn)單,且價(jià)格高昂。另外,基于這些軟件包開(kāi)發(fā)的 GUI 應(yīng)用軟件不具備跨操作系統(tǒng)的可移植性。

3.采用開(kāi)放源碼的嵌入式GUI支持系統(tǒng)。隨著嵌入式Linux操作系統(tǒng)的應(yīng)用,開(kāi)源社區(qū)也在不斷為嵌入式系統(tǒng)提供不同的開(kāi)放源碼嵌入式圖形解決方案,如MicroWindows、OpenGUI,以及新近出現(xiàn)的picoGUI等。這些開(kāi)放源碼的嵌入式GUI軟件提供免授權(quán)費(fèi)的解決方案。然而,由于缺少商業(yè)公司的支持,這些軟件一般存在較多的軟件缺陷,加上缺乏有擔(dān)保的技術(shù)支持,因此,存在著很大的開(kāi)發(fā)風(fēng)險(xiǎn)。

  

4.使用由獨(dú)立軟件開(kāi)發(fā)商提供的嵌入式GUI產(chǎn)品。這類(lèi)產(chǎn)品有北京飛漫軟件技術(shù)有限公司開(kāi)發(fā)的MiniGUI、挪威TrollTech公司的Qt/Embedded等。這兩種產(chǎn)品都是開(kāi)源(遵循GNU的GPL條款發(fā)布)的嵌入式GUI軟件產(chǎn)品,但均采用雙授權(quán)模式,即針對(duì)商業(yè)使用收取軟件許可費(fèi)用。MiniGUI屬于中低端產(chǎn)品,具有跨操作系統(tǒng)特性,以及適合嵌入式產(chǎn)品的小巧、高效的特點(diǎn)。Qt/Embedded屬于高端產(chǎn)品,只支持嵌入式Linux操作系統(tǒng),需要16MB以上的靜態(tài)存儲(chǔ)空間及64MB以上的動(dòng)態(tài)存儲(chǔ)空間。

MiniGUI的特點(diǎn)及應(yīng)用

MiniGUI作為中國(guó)為數(shù)不多的幾個(gè)自由軟件項(xiàng)目之一,是面向?qū)崟r(shí)嵌入式系統(tǒng)的輕量級(jí)圖形用戶(hù)界面支持系統(tǒng),1999年初遵循GPL條款發(fā)布第一個(gè)版本,目前已發(fā)展到1.6.1版本。

MiniGUI為實(shí)時(shí)嵌入式操作系統(tǒng)提供了非常完善的圖形及圖形用戶(hù)界面支持。MiniGUI本身的可移植性設(shè)計(jì),使得不論在哪個(gè)硬件平臺(tái)、哪種操作系統(tǒng)上運(yùn)行,MiniGUI均能為上層應(yīng)用程序提供一致的應(yīng)用程序編程接口(API)。

作為操作系統(tǒng)和應(yīng)用程序之間的中間件,MiniGUI將底層操作系統(tǒng)及硬件平臺(tái)差別隱藏了起來(lái),并對(duì)上層應(yīng)用程序提供了一致的功能特性,這些功能特性包括:

1.完備的多窗口機(jī)制和消息傳遞機(jī)制。

2.常用的控件類(lèi),包括靜態(tài)文本框、按鈕、單行和多行編輯框、列表框、組合框、進(jìn)度條、屬性頁(yè)、工具欄、拖動(dòng)條、樹(shù)型控件、月歷控件等。

3.對(duì)話(huà)框和消息框支持以及其它GUI元素,包括菜單、加速鍵、插入符、定時(shí)器等。

4.界面皮膚支持。用戶(hù)可通過(guò)皮膚支持獲得外觀非常華麗的圖形界面。

5.通過(guò)兩種不同的內(nèi)部軟件結(jié)構(gòu)支持低端顯示設(shè)備(如單色 LCD)和高端顯示設(shè)備(如彩色顯示器),前者小巧靈活,而后者在前者的基礎(chǔ)上提供了更加強(qiáng)大的圖形功能。

6.Windows的資源文件支持,如位圖、圖標(biāo)、光標(biāo)等。

7.各種流行圖像文件的支持,包括JPEG、GIF、PNG、TGA、BMP等等。

8.多字符集和多字體支持,目前支持ISO8859-1~I(xiàn)SO8859-15、GB2312、GBK、GB18030、BIG5、EUC-JP、Shift-JIS、EUC-KR、UNICODE等字符集,支持等寬點(diǎn)陣字體、變寬點(diǎn)陣字體、Qt/Embedded 使用的嵌入式字QPF、TrueType以及Adobe Type1等矢量字體。

9.多種鍵盤(pán)布局的支持。MiniGUI除支持常見(jiàn)的美式PC鍵盤(pán)布局之外,還支持法語(yǔ)、德語(yǔ)等語(yǔ)種的鍵盤(pán)布局。

10.簡(jiǎn)體中文(GB2312)輸入法支持,包括內(nèi)碼、全拼、智能拼音等。用戶(hù)還可以從飛漫軟件獲得五筆、自然碼等輸入法支持。

11.針對(duì)嵌入式系統(tǒng)的特殊支持,包括一般性的I/O流操作,字節(jié)序相關(guān)函數(shù)等。

與其它針對(duì)嵌入式產(chǎn)品的圖形系統(tǒng)相比,MiniGUI具有以下一些技術(shù)優(yōu)勢(shì):

1).輕型、占用資源少

MiniGUI本身的占用空間非常小,以嵌入式Linux操作系統(tǒng)為例,MiniGUI的典型存儲(chǔ)空間占用情況如下:

1.Linux內(nèi)核: 300K~500K(由系統(tǒng)需求決定);

2.文件系統(tǒng):500K~2MB(由系統(tǒng)需求決定);

3.MiniGUI支持庫(kù):500K~700K(由編譯選項(xiàng)確定);

4.MiniGUI字體、位圖等資源:400K(由應(yīng)用程序確定,可縮小到200K以?xún)?nèi));

5.GB2312輸入法碼表:200K(不是必需的,由應(yīng)用程序確定);

6.應(yīng)用程序:1M~2M(由系統(tǒng)決定)。

總體的系統(tǒng)占有空間應(yīng)該在 2MB到4MB左右。在某些系統(tǒng)上,功能完備的MiniGUI系統(tǒng)本身所占用的空間可進(jìn)一步縮小到1MB以?xún)?nèi)。

最新的研發(fā)成果表明,MiniGUI能夠在CPU主頻為30MHz,僅有4M RAM的系統(tǒng)上正常運(yùn)行(使用uClinux 操作系統(tǒng)),這是其它圖形系統(tǒng),如MicroWindows或者Qt/Embedded所無(wú)法達(dá)到的。

2)高性能、高可靠性

MiniGUI良好的體系結(jié)構(gòu)及優(yōu)化的圖形接口,可確保最快的圖形繪制速度。在設(shè)計(jì)之初就充分考慮到了實(shí)時(shí)嵌入式系統(tǒng)的特點(diǎn),針對(duì)多窗口環(huán)境下的圖形繪制開(kāi)展了大量的研究及開(kāi)發(fā),優(yōu)化了MiniGUI的圖形繪制性能及資源占有。MiniGUI在大量實(shí)際系統(tǒng)中的應(yīng)用,尤其在工業(yè)控制系統(tǒng)的應(yīng)用,證明 MiniGUI具有非常好的性能。

3) 可配置性

為滿(mǎn)足嵌入式系統(tǒng)千變?nèi)f化的需求,必須要求GUI系統(tǒng)是可配置的。和Linux內(nèi)核類(lèi)似,MiniGUI也實(shí)現(xiàn)了大量的編譯配置選項(xiàng),通過(guò)這些選項(xiàng)可指定MiniGUI庫(kù)中包括哪些功能而同時(shí)不包括哪些功能。大體說(shuō)來(lái),可以在如下幾個(gè)方面對(duì)MiniGUI進(jìn)行定制配置:

1.指定MiniGUI要運(yùn)行的操作系統(tǒng);

2.指定生成基于線程的MiniGUI-Threads運(yùn)行模式還是基于進(jìn)程的MiniGUI-Lite運(yùn)行模式,或者只是最簡(jiǎn)單的MiniGUI-Standalone運(yùn)行模式;

3.指定要采用老的GAL/GDI接口(低端顯示設(shè)備)還是新的GAL/GDI接口(高端顯示設(shè)備);

4.指定需要支持的GAL引擎和IAL引擎,以及引擎相關(guān)選項(xiàng);

5.指定需要支持的字體類(lèi)型;

6.指定需要支持的字符集;

7.指定需要支持的圖像文件格式;

8.指定需要支持的控件類(lèi);

9.指定控件的整體風(fēng)格,是三維風(fēng)格、平面風(fēng)格還是手持終端風(fēng)格。

4) 可伸縮性強(qiáng)

MiniGUI豐富的功能和可配置特性,使得它既可運(yùn)行于基于龍珠的低端產(chǎn)品中,亦可運(yùn)行于基于ARM9的高端產(chǎn)品中,并使用MiniGUI的高級(jí)控件風(fēng)格及皮膚界面等技術(shù),創(chuàng)建華麗的用戶(hù)界面。

5) 跨操作系統(tǒng)支持

理論上,MiniGUI可支持任意一個(gè)多任務(wù)嵌入式操作系統(tǒng);實(shí)際已支持Linux/uClinux、eCos、uC/OS-II、VxWorks、pSOS、ThreadX等嵌入式操作系統(tǒng),也可以在Win32平臺(tái)上運(yùn)行。同時(shí),在不同操作系統(tǒng)上的MiniGUI,提供完全兼容的API接口。

從最初的數(shù)控系統(tǒng)到目前流行的智能手持終端設(shè)備,MiniGUI已經(jīng)在大量產(chǎn)品中得到了應(yīng)用。MiniGUI最主要的應(yīng)用領(lǐng)域大致可分為三類(lèi):高端手機(jī)、PDA類(lèi)產(chǎn)品;數(shù)字媒體及機(jī)頂盒類(lèi)產(chǎn)品;工業(yè)儀表及控制系統(tǒng)。

基于MiniGUI的嵌入式系統(tǒng)軟件結(jié)構(gòu)

為什么MiniGUI能夠在如此眾多的嵌入式操作系統(tǒng)上運(yùn)行?這是因?yàn)镸iniGUI具有良好的軟件架構(gòu),通過(guò)抽象層將MiniGUI上層和底層操作系統(tǒng)隔離開(kāi)來(lái)。如圖2所示,基于MiniGUI的應(yīng)用程序一般通過(guò) ANSI C庫(kù)以及MiniGUI自身提供的API來(lái)實(shí)現(xiàn)自己的功能;MiniGUI中的“可移植層”可將特定操作系統(tǒng)及底層硬件的細(xì)節(jié)隱藏起來(lái),而上層應(yīng)用程序則無(wú)需關(guān)心底層的硬件平臺(tái)輸出和輸入設(shè)備。

另外,MiniGUI特有的運(yùn)行模式概念,也為跨操作系統(tǒng)的支持提供了便利。

與Linux這樣的類(lèi)UNIX操作系統(tǒng)相比,一般意義上的傳統(tǒng)嵌入式操作系統(tǒng)具有一些特殊性。舉例而言,諸如uClinux、uC/OS-II、eCos、VxWorks等操作系統(tǒng),通常運(yùn)行在沒(méi)有內(nèi)存管理單元的CPU上;這時(shí),往往就沒(méi)有進(jìn)程的概念,而只有線程或者任務(wù)的概念,這樣,GUI系統(tǒng)的運(yùn)行環(huán)境也就大相徑庭。因此,為了適合不同的操作系統(tǒng)環(huán)境,我們可將MiniGUI配置成三種運(yùn)行模式:

1.MiniGUI-Threads。運(yùn)行在MiniGUI-Threads上的程序可以在不同的線程中建立多個(gè)窗口,但所有的窗口在一個(gè)進(jìn)程或者地址空間中運(yùn)行。這種運(yùn)行模式非常適合于大多數(shù)傳統(tǒng)意義上的嵌入式操作系統(tǒng),如uC/OS-II、eCos、VxWorks、pSOS等等。當(dāng)然,在Linux和uClinux上,MiniGUI也能以MiniGUI-Threads的模式運(yùn)行。

2. MiniGUI-Lite。與MiniGUI-Threads相反,MiniGUI-Lite上的每個(gè)程序是單獨(dú)的進(jìn)程,每個(gè)進(jìn)程也可以建立多個(gè)窗口。MiniGUI-Lite適合于具有完整UNIX特性的嵌入式操作系統(tǒng),比如嵌入式Linux。

3. MiniGUI-Standalone。這種運(yùn)行模式下,MiniGUI能以獨(dú)立進(jìn)程的方式運(yùn)行,既不需要多線程也不需要多進(jìn)程的支持,這種運(yùn)行模式適合功能單一的應(yīng)用場(chǎng)合。例如在一些使用uClinux的嵌入式產(chǎn)品中,因?yàn)楦鞣N原因而缺少線程支持,這時(shí),就可以使用MiniGUI-Standalone來(lái)開(kāi)發(fā)應(yīng)用軟件。

一般而言,MiniGUI-Standalone模式的適應(yīng)面最廣,可以支持幾乎所有的操作系統(tǒng),甚至包括類(lèi)似DOS這樣的操作系統(tǒng);MiniGUI-Threads模式的適用面次之,可運(yùn)行在支持多任務(wù)的實(shí)時(shí)嵌入式操作系統(tǒng),或者具備完整UNIX特性的普通操作系統(tǒng);MiniGUI-Lite模式的適用面較小,它僅適合于具備完整UNIX特性的普通操作系統(tǒng)。

不論采用哪種運(yùn)行模式,MiniGUI為上層應(yīng)用軟件提供了最大程度上的一致性;只有少數(shù)幾個(gè)涉及初始化的接口在不同運(yùn)行模式上有所不同。

MiniGUI在uC/OS-II操作系統(tǒng)上的移植

下面以u(píng)C/OS-II操作系統(tǒng)為例,簡(jiǎn)單介紹MiniGUI到該操作系統(tǒng)上的移植。

uC/OS-II非常簡(jiǎn)單,只要有一個(gè)普通的C編譯器,就能完成編譯并運(yùn)行該操作系統(tǒng),因此,uC/OS-II首先在教學(xué)中得到了廣泛應(yīng)用。因?yàn)槠浜?jiǎn)單及實(shí)時(shí)性好的特點(diǎn),現(xiàn)在也有一些用戶(hù)開(kāi)始使用uC/OS-II操作系統(tǒng)開(kāi)發(fā)正式的嵌入式產(chǎn)品。

將MiniGUI移植到uC/OS-II是相對(duì)復(fù)雜的一項(xiàng)工作。因?yàn)閡C/OS-II中缺乏象malloc/free甚至是printf/fprintf/sprintf這樣的接口,不過(guò),最重要的還是缺乏與POSIX-Threads兼容的接口。為此,我們編寫(xiě)了POSIX-Threads的繞轉(zhuǎn)接口,這些繞轉(zhuǎn)接口兼容于POSIX-Threads。同時(shí),我們還實(shí)現(xiàn)了 malloc/free,以及printf/sprintf/fprintf等接口。

因涉及到如此多底層特性的增強(qiáng)和修改,整個(gè)系統(tǒng)的調(diào)試將是非常困難的。為解決調(diào)試問(wèn)題,我們首先在SkyEye(清華大學(xué)陳渝主持的自由軟件項(xiàng)目,http://www.skyeye.org)模擬器上運(yùn)行uC/OS-II操作系統(tǒng)及MiniGUI for uC/OS-II。我們首先使用了MiniGUI內(nèi)部的Dummy GAL引擎和Dummy/Auto IAL 引擎(這兩個(gè)引擎分別通過(guò)軟件方法來(lái)模擬實(shí)際的輸出和輸入設(shè)備,如LCD顯示屏及鍵盤(pán))來(lái)運(yùn)行MiniGUI的應(yīng)用程序。盡管我們看不到真實(shí)的屏幕輸出,但從應(yīng)用程序在運(yùn)行過(guò)程中打印的輸出信息,我們可以看到MiniGUI for uC/OS-II已經(jīng)正常工作了。接下來(lái)的工作就是將MiniGUI for uC/OS-II移植到正式的硬件產(chǎn)品中。

我們?cè)赟3C2410開(kāi)發(fā)板上用ADS的armcc編譯并測(cè)試了MiniGUI的uC/OS-II版本。這次,我們針對(duì)這個(gè)開(kāi)發(fā)板編寫(xiě)了正式的圖形和輸入引擎。MiniGUI的所有示例程序都可以在這塊開(kāi)發(fā)板上正常運(yùn)行。

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表