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