<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM微處理器的uC/OS

          基于ARM微處理器的uC/OS

          作者: 時間:2016-10-08 來源:網絡 收藏

          sys_mbox_post() //向消息隊列發(fā)送消息

          sys_arch_mbox_fetch() //從消息隊列中獲取消息

          μC/OS-II同樣實現(xiàn)了消息隊列結構OSQ及其操作,但是μC/OS-II沒有對消息隊列中的消息進行管理,因此不能直接使用,必須在μC/OS-II的基礎上重新實現(xiàn)。為了實現(xiàn)對消息的管理,我們定義了以下結構:

          typedef struct {

          OS_EVENT* pQ;

          void* pvQEntries[MAX_QUEUE_ENTRIES];

          } sys_mbox_t;

          在以上結構中,包括OS_EVENT類型的隊列指針(pQ)和隊列內的消息(pvQEntries)兩部分,對隊列本身的管理利用μC/OS-II自己的OSQ操作完成,然后使用μC/OS-II中的內存管理模塊實現(xiàn)對消息的創(chuàng)建、使用、刪除回收,兩部分綜合起來形成了LwIP的消息隊列功能。

          2.2.5 semaphone的實現(xiàn)和mbox類似,這里就不再重復了。

          3 uc/gui的移植

          3.1 LCD的接口函數(shù)

          在uC/GUI中LCD_LO_x之類的函數(shù)是無控制器LCD的接口函數(shù)。44B0X本身有LCD控制器。所以我在uC/GUI for 44B0X移植中基本移用LCDMemC.c這個程序。在這程序中都是關于LCD接口的驅動。其中在44B0X上主要修改以下幾個函數(shù):

          (1)LCD初始化: int LCD_L0_Init (void);

          這個函數(shù)完成對44B0X LCD控制器的配置。顯存的映射。

          (2)畫點函數(shù):void LCD_L0_DrawPixel(int x, int y, int c);

          取點函數(shù):unsigned int LCD_L0_GetPixelIndex(int x, int y);

          uC/GUI中顯示字、圖形都這兩個函數(shù)有關。

          3.2 系統(tǒng)接口函數(shù)

          在uCOS-II中用GUI的,所以還要寫幾個操作系統(tǒng)接口函數(shù)。而GUI_X_x之類的函數(shù)是和操作系統(tǒng)相關的接口。

          (1)系統(tǒng)時間接口

          取系統(tǒng)時間: int GUI_X_GetTime (void);

          延時函數(shù): void GUI_X_Delay (int ms);

          (2)任務調度函數(shù)

          任務初始化:void GUI_X_InitOS (void);

          任務鎖定:void GUI_X_Lock (void);

          任務解鎖:void GUI_X_Unlock (void);

          4 結束語

          上述移植完成后,使在ARM微處理器上建立一個既有TCP/IP協(xié)議棧,又建立了圖形用戶接口的嵌入式實時操作系統(tǒng)。


          上一頁 1 2 下一頁

          關鍵詞:

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();