便攜式醫(yī)療監(jiān)護儀已成為人們日常生活中不可缺少的一部分,。便攜式設備是由硬件與軟件緊湊組合的一個單元模塊,,是一種體積小、智能化程度高,、功能全,、使用靈活、操作方便的便攜機,適合家庭使用,、外出攜帶等用途,。為了使便攜式心電監(jiān)護儀實現友好的人機交互和更加方便的顯示,這里提出一種GUI界面系統設計,,就是在基于NiosⅡ處理器的嵌入式平臺上實現μC/GUI的移植,,使之實現系統功能。
1 μC/GUI的系統移植
1.1 μC/GUI簡介及可移植性分析
μC/GUI是Micrium公司開發(fā)的通用的嵌入式圖形用戶界面軟件,,其中圖形用戶接口GUI(Graphical User Interface),。該界面軟件被設計用于為任何使用一個圖形LCD的應用提供一個有效的不依賴于處理器和LCD控制器的圖形用戶接口。它能工作于單任務或多任務的系統環(huán)境下,。μC/GUI適用于使用任何LCD控制器和CPU的任何尺寸的物理和虛擬顯示,,具有源代碼開放及模塊化設計的特點。
μC/GUI的代碼全部用ANSI的C語言編寫的,,具有很強的移植性,。由于μC/GUI采用分層結構,即具有驅動接口層和應用層,,因此可方便地移植到各種 CPU下使用,。μC/GUI對各類圖像LCD顯示器具有良好的支持,并且有常見的2D圖形庫和窗口管理功能,,而且消耗較少的系統資源,,占用RAM和ROM 的空間很小。在典型的應用中,,μC/GUI需要的資源如表1所示,。由表1可見,運行μC/GUI需要的系統資源不是很多,,并支持幾乎所有類型的CPU與大多數的LCD模塊,,μC/GUI的源代碼規(guī)模適中,移植過程中可將不需要的代碼進行剔除,,而且結構層次清晰,,因此適合用于嵌入式系統中。
1.2 μC/GUI移植原理
嵌入式用戶圖形界面系統μC/GUI與嵌入式實時操作系統μC/OS-Ⅱ都是美國Micrium公司產品,,μC/GUI能更輕易地在 μC/OS-Ⅱ上應用,,實現與μC/0S-Ⅱ的無縫結合。在NiosⅡ嵌入式系統中,,Altera公司已經將μC/OS-Ⅱ操作系統移植成功并且提供使用,,所做的工作是將μC/GUI移植到NiosⅡ嵌入式平臺之上,使其能與μC/OS-Ⅱ操作系統結合使用,,采用μC/GUI 3.98版本的源代碼進行移植,。
μC/GUI的軟件體系結構如圖1所示,μC/GUI函數庫為用戶程序提供GUI接口,包含的函數有文本,、數值,、二維圖形、輸入設備以及各種窗口對象,。其中,,輸入設備可以是鍵盤、鼠標或觸摸屏,;二維圖形包括圖片,、直線、多邊形,、圓,、橢圓、圓弧等,;窗口對象包括按鈕、編輯框,、進度條,、復選框等。
μC/GUI函數庫可以通過GUIConf.h文件進行配置,,包括內存設備,,窗口管理器,支持操作系統,、觸摸屏,,以及配置動態(tài)內存的大小等。在移植中,,需要根據系統需要以外設所支持的功能對GUIConf.h文件進行配置,。
在LCDConf.h文件中定義了與硬件有關的各種屬性,如液晶的大小,、顏色以及與液晶的接口函數,。而LCD驅動文件則負責把μC/GUI的各種函數解釋成LCDConf.h文件定義的液晶接口函數,這個文件與具體的硬件連接無關,。在移植時,,需要對LCDConf.h文件進行配置,并針對LCD控制器編寫相應的LCD驅動文件,。
2 μC/GUI在NiOSⅡ上的移植設計
2.1 TFT LCD IP核結構
μC/GUI的移植是基于IP核的移植,,編寫TFT LCD控制器,所以移植時,,在底層配置文件,,參數的配置要和TFT LCDIP的相關參數相匹配,否則不可能移植成功,該IP核的結構如圖2所示,。
液晶屏采用臺灣統寶公司的TRDB_LCM 3.6寸屏,,該屏的分辨率是320x240,支持24位色,,也就是RGB888模式,,但是由于Avalon總線支持傳輸數據寬度的差異,因此只用16位色,,即RGB為565的模式,。由于DE2-70有2個32 MB的SDRAM,所以拿使用其中一塊作為數據的存儲器,,Nio-sⅡ處理器將圖像數據寫入該SDRAM中,,在NiosⅡIDE中用軟件控制緩沖器的開啟,當開啟緩沖器之后,,該BUFFER會源源不斷地讀取SDRAM中的數據,,為避免讀數據和NiosⅡ處理器向其中寫入數據時發(fā)生沖突,Avalon總線自動在二者之間加入了一個Arbitrator仲裁模塊來決定執(zhí)行哪個操作,。
配置LCD采用3線串行總線配置LCD,,緩沖器以Avalon存儲器映像主機的方式從SDRAM中讀取數據,然后以Avalon Streaming Soume的方式把這些數據傳送到LCD控制器上,,LCD控制器是以Avalon Streaming Sink的方式接收從緩沖器傳來的數據,,LCD控制器生成時序,在適當時候將數據送出到TFT LCD屏上顯示,。
2.2 移植過程
2. 2.1 μC/GUI的文件組織結構
μC/GUI是以ANSI C源碼包的形式提供的,。源碼包由配置文件目錄(Config)和庫函數目錄(GUI)2個文件目錄組成。在Config目錄中包含了LCDConf.h,、GUITouchConf.h,、GUIConf.h 3個配置文件,這3個文件分別用于LCD底層接口的配置,、觸摸屏底層接口的配置以及μC/GUI自身的配置,。在GUI目錄中的庫函數文件按照不同功能又分成若干子目錄如圖3所示,各子目錄所實現的功能如表2所示,。
2.2.2 移植過程
首先建立一個硬件系統,,采用Altera公司的QuartusⅡ9.0版本的配套軟件,硬件系統在QuartusⅡ集成的 SOPCBuilder系統開發(fā)工具中建立,,添加NiosⅡ處理,、JTAG調試模塊、添加定時器SDRAM控制器,、BUFFER IP,、TFT LCD IP以及其他部分組件,,最后生成一個硬件系統,。然后在NiosⅡIDE環(huán)境下針對該系統建立一個TFT LCD軟件工程,并且將μC/GUI有關的源代碼拷貝到工程目錄下,,修改LCDConf.h,、GUIConf. h,、LCDLin32.c以及GUI_X_uCOS.c文件,,使之與LCD控制相匹配,,在該系統中,,LCD采用16位數據總線,,而CPU是32位的 NiosⅡ軟核處理器,,先查看一下μC/GUI所支持的數據寬度信息,其數據寬度和NiosⅡ處理器所支持的寬度基本吻合,,只要在改動代碼時注意就可以。以下是具體的代碼實現情況:
因為這里是基于TFT LCD IP核的移植,所以要定義LCD的讀寫函數,,即LCD_READ_MEM(Off)和LCD_WRITE_MEM(Off,data)以及顯示緩存區(qū)的起始位置,,讀寫函數中的Off和data都是32位的無符號數,,而操作函數IORD_32DIRECT()以及IOWR_32DIRECT()都是一次執(zhí)行 32位數的操作,,剛好和NiosⅡ處理器的數據寬度相匹配,。由于支持μC/OS-Ⅱ操作系統,,所以要對GUI_X_uCOS.c文件進行修改,,增加系統延時函數OSTimeDly(1),,使之能與μC/OSⅡ操作系統實現無縫銜接,,以及3個子函數,,void GUI_X_Log(const char*s){GUI_USE_PARA (s),;},;void GUI_X_Warn(const char*s){GUI_USE_PARA(s);},;void GUI_X_ErrorOut(const char*s){ GUI_USE_PARA(s);},;LCDLin32.e是對應3200型號控制器的驅動文件,,由于在LCDConf.h中已經對用到的參量進行設置,,所以無需修改,,剩下的工作就是把不用的文件進行剔除,以減少編譯時產生多余的代碼量,。
3 移植驗證
在NiosⅡIDE環(huán)境下修改配置文件以及驅動文件,,然后編譯該系統,,系統編譯成功,,編譯成功之后還有MICRIUM公司的聯系方式,這個是提醒用戶該系列軟件如果要用于商業(yè)目的是需要買license的,,用于研究目的是免費的,。
圖片驗證是采用μC/GUI自帶的位圖轉換工具uC-GUI-BitmapConvert.exe,該工具可以將.bmp格式圖片轉換成指定的C語言數組的形式保存,,例如將蘭博基尼跑車標志的圖片轉換成RGB565的格式進行保存,,加入工程,,編譯工程,然后下載驗證,,如圖4所示。窗口管理組件驗證采用代碼包中自帶的一個測試代碼,,其效果如圖5所示。實驗結果表明,,移植是成功的。
4 結論
本文介紹了μC/GUI界面系統,,以及NiosⅡ嵌入式系統,,詳細介紹了移植的過程,以及最終實現移植,。實驗結果表明,在嵌入式系統中使用μC/GUI進行人機界面的開發(fā),,不但移植簡單,、使用靈活,而且功能強大,,穩(wěn)定高效,大大降低了在嵌入式系統中開發(fā)圖形人機界面的復雜程度,,而且 μC/GUI還提供了幾個非常實用的工具軟件,其中包括一個仿真器,,它使得在進行移植工作的同時,就可以在仿真器上進行軟件界面部分的程序編寫,,加快了整個系統的開發(fā)進度。還有位圖轉換工具,,可以輕松地將圖片轉換成C語言數組的形式保存,,方便界面開發(fā),。μC /GUI還支持其他PS2鼠標,、PS2鍵盤,、觸摸屏,,包含豐富的繪圖庫,、動畫顯示優(yōu)化,、還可以自己加入中文字體,,通過使用μC/GUI的各項功能,相信可以在嵌入式系統中開發(fā)出功能強大的人機界面,,而且在嵌入式系統中有很好的應用前景,。