基于嵌入式處理器S3C44B0X的μC/GUI設(shè)計(jì)
1. 引言
B0X 是三星公司針對(duì)嵌入式系統(tǒng)推出高性價(jià)比微處理器,它是基于ARM7TDMI內(nèi)核的16/32位RISC處理器,工作主頻為66MHz。人機(jī)界面(GUI)是現(xiàn)代智能電子設(shè)備必不可少的重要組成部分,近年來(lái)隨著硬件的發(fā)展不斷進(jìn)步,目前基于嵌入式的μC/GUI已經(jīng)在智能儀器、工業(yè)領(lǐng)域等發(fā)揮了重要的作用[1-3]。本文討論了一種基于三星公司生產(chǎn)的嵌入式微處理器S3C44B0X的μC/GUI移植方法,這種設(shè)計(jì)方法具有占用資源少、高性能、可靠性強(qiáng)、易移植等優(yōu)點(diǎn)。2. 通用嵌入式圖形模塊μC/GUI
μC/GUI是Micrium公司開(kāi)發(fā)的通用的嵌入式用戶圖形界面軟件。它給任何使用圖形LCD的應(yīng)用程序提供獨(dú)立于處理器和LCD控制器之外的有效的圖形用戶接口??梢詰?yīng)用于單一任務(wù)環(huán)境,也可以應(yīng)用于多任務(wù)環(huán)境中。μC/GUI能夠應(yīng)用于任何LCD控制器和CPU的任何尺寸的物理顯示或者模擬顯示中。 它具有驅(qū)動(dòng)接口層和應(yīng)用層,全部代碼采用ANSI _C編寫,提供源代碼,可以方便的移植到各種平臺(tái)下。
2.1 μC/GUI特點(diǎn)
μC/GUI的特點(diǎn)主要包括:適用于任何8位/16位/32位CPU,可允許于支持ANSI C的任何編譯器;適用于任何控制器驅(qū)動(dòng)任何LCD(單色,灰度,或者彩色);通過(guò)配置宏,可支持任何接口;可配置顯示尺寸;可在LCD的任何一點(diǎn)上顯示字符和畫位圖;對(duì)于顯示尺寸和速度提供優(yōu)化進(jìn)程,編譯時(shí)間依賴于采用的優(yōu)化進(jìn)程,支持虛擬顯示,虛擬顯示的尺寸比實(shí)際顯示大。
2.2 μC/GUI數(shù)據(jù)結(jié)構(gòu)
μC/GUI以其窗口作為內(nèi)存管理的基本單位,對(duì)所有窗口的管理是通過(guò)定義一個(gè)堆結(jié)構(gòu)實(shí)現(xiàn)的。每個(gè)窗口在創(chuàng)建時(shí)根據(jù)其結(jié)構(gòu)類型的不同為其在堆空間里分配特定大小的連續(xù)內(nèi)存塊,并用一個(gè)塊結(jié)構(gòu)體數(shù)組中的一個(gè)元素標(biāo)識(shí),塊結(jié)構(gòu)體的定義如下:
typedefstruct
{
tALLOCINTOff;/*在堆中塊開(kāi)始的位置*/
tALLOCINTSize;/*在堆中所占連續(xù)內(nèi)存塊的大小*/
HANDLENext;/*指向后一窗口指針*/
HANDLEPrev;/*指向前一窗口指針*/
}tBlock;
statictBlockaBlock[GUI_MAXBLOCKS];
所分配的塊結(jié)構(gòu)體數(shù)組元素在數(shù)組中的序號(hào)作為返回值用以標(biāo)識(shí)一個(gè)窗口,即句柄。這樣對(duì)于一個(gè)窗口而言,記錄其各方面屬性的窗口類型結(jié)構(gòu)體變量被放在堆空間中并且有一個(gè)塊標(biāo)志與之對(duì)應(yīng)。在整個(gè)過(guò)程中通過(guò)定義一個(gè)全局結(jié)構(gòu)變GUI_Alloc存放相關(guān)分配信息,實(shí)現(xiàn)對(duì)內(nèi)存的輔助管理。
2.3 μC/GUI工作機(jī)制
μC/GUI依靠消息機(jī)制和毀掉函數(shù)來(lái)實(shí)現(xiàn)窗口的創(chuàng)建、顯示及刪除。在μC/GUI中定義了數(shù)十種用于各類基本操作的消息宏,對(duì)一個(gè)窗口的操作基本上都是通過(guò)向其對(duì)應(yīng)的回調(diào)函數(shù)傳送消息參數(shù)完成的。在整個(gè)工作過(guò)程μC/GUI利用一個(gè)全局的結(jié)構(gòu)體變量GUI_Context即所謂的上下文變量來(lái)記錄包括:繪圖屬性、當(dāng)前窗口信息、當(dāng)前API列表、字體信息等與當(dāng)前操作密切相關(guān)的信息,以管理整個(gè)工作流程。
3. S3C44B0X微處理器
三星公司推出的16/32位RISC處理器S3C44B0X為手持設(shè)備和一般應(yīng)用提供了高性價(jià)比和高性能的微控制器解決方案。其主頻可達(dá)66MHz,外圍設(shè)備和接口擴(kuò)展豐富,使嵌入式系統(tǒng)的開(kāi)發(fā)成本大大降低。
3.1 S3C44B0X內(nèi)置LCD控制器
S3C44B0X內(nèi)置LCD控制器可以支持規(guī)格為每像素2位(4級(jí)灰度)或每像素4位(16級(jí)灰度) 的黑白LCD。也可以支持每像素8位(256顏色)的彩色LCD屏。其內(nèi)部結(jié)構(gòu)框圖如圖1所示。
圖1 LCD內(nèi)部控制器框圖 |
3.2基于S3C44B0X建立GUI硬件平臺(tái)
S3C44B0X有兩種運(yùn)行方式:一種是有操作系統(tǒng)的,另一種是無(wú)操作系統(tǒng)的。對(duì)于無(wú)操作系統(tǒng)的運(yùn)行方式,系統(tǒng)的初始化和主程序都在2MB的線性 FALSH內(nèi)運(yùn)行,2MBFALSH與S3C44B0X的Bank0相連,上電復(fù)位后系統(tǒng)自動(dòng)從0x00000000地址開(kāi)始運(yùn)行,也可以把程序加載到指定的地址開(kāi)始運(yùn)行。本文中采用無(wú)系統(tǒng)運(yùn)行方式,將初始化程序和主程序加載到首地址為0x0c008000的2MFLASH中運(yùn)行。
筆者使用的基于S3C44B0X的開(kāi)發(fā)板與LCD相關(guān)部分主要集成了如下器件:2MB的FLASH;8MB的SDRAM;用戶自定義邏輯器件;一塊夏普5.7英寸、256色、320×240分辨率LCD;ARM JTAG接口。
其功能框圖如圖2所示。
圖2開(kāi)發(fā)板相關(guān)部分框圖
評(píng)論