ARM微處理器的uC/OS的移植設計
μC/OS-II同樣實(shí)現了消息隊列結構OSQ及其操作,但是μC/OS-II沒(méi)有對消息隊列中的消息進(jìn)行管理,因此不能直接使用,必須在μC/OS-II的基礎上重新實(shí)現。為了實(shí)現對消息的管理,我們定義了以下結構:
typedef struct {
OS_EVENT* pQ;
void* pvQEntries[MAX_QUEUE_ENTRIES];
} sys_mbox_t;
在以上結構中,包括OS_EVENT類(lèi)型的隊列指針(pQ)和隊列內的消息(pvQEntries)兩部分,對隊列本身的管理利用μC/OS- II自己的OSQ操作完成,然后使用μC/OS-II中的內存管理模塊實(shí)現對消息的創(chuàng )建、使用、刪除回收,兩部分綜合起來(lái)形成了LwIP的消息隊列功能。
2.2.5 semaphone的實(shí)現和mbox類(lèi)似,這里就不再重復了。
3 uc/gui的移植
3.1 LCD的接口函數
在uC/GUI中LCD_LO_x之類(lèi)的函數是無(wú)控制器LCD的接口函數。44B0X本身有LCD控制器。所以我在uC/GUI for 44B0X移植中基本移用LCDMemC.c這個(gè)程序。在這程序中都是關(guān)于LCD接口的驅動(dòng)。其中在44B0X上主要修改以下幾個(gè)函數:
(1)LCD初始化: int LCD_L0_Init (void);
這個(gè)函數完成對44B0X LCD控制器的配置。顯存的映射。
(2)畫(huà)點(diǎn)函數:void LCD_L0_DrawPixel(int x, int y, int c);
取點(diǎn)函數:unsigned int LCD_L0_GetPixelIndex(int x, int y);
uC/GUI中顯示字、圖形都這兩個(gè)函數有關(guān)。
3.2 系統接口函數
在uCOS-II中用GUI的,所以還要寫(xiě)幾個(gè)操作系統接口函數。而GUI_X_x之類(lèi)的函數是和操作系統相關(guān)的接口。
(1)系統時(shí)間接口
取系統時(shí)間: int GUI_X_GetTime (void);
延時(shí)函數: void GUI_X_Delay (int ms);
(2)任務(wù)調度函數
任務(wù)初始化:void GUI_X_InitOS (void);
任務(wù)鎖定:void GUI_X_Lock (void);
任務(wù)解鎖:void GUI_X_Unlock (void);
4 結束語(yǔ)
上述移植完成后,使在arm微處理器上建立一個(gè)既有TCP/IP協(xié)議棧,又建立了圖形用戶(hù)接口的嵌入式實(shí)時(shí)操作系統。
評論