新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > μC/OS-II在S3C44BOX上的移植

        μC/OS-II在S3C44BOX上的移植

        作者: 時間:2013-03-30 來源:網絡 收藏
          μC/OS-II在處理器S3C44B0X上的移植,就是使μC/OS-II在該微控制器上運行。由μC/OS-II文件系 統可知,在中,用戶所需要關注的就是與處理器相關的代碼,包括OS_CPU.H、OS_CPU_A.ASM和 OS_CPU_C.C三個文件。

          (1)OS_CPU.H

          在OS_CPU.H文件中定義。與編譯器相關的數據類型。μS/OS-II為了保證可移植性,程序中沒有直接使 用int、unsigned int等定義,而是自己定義了一套數據類型,例如,INT16U表示16位無符號整型。對于 32位內核ARM微控制器,INT16U是unsianed short型;若是16位的處理器,則是unsigned int型。; μC/OS-II使用的變量類型如表1所示。

          表1 μC/OS-II使用的變量類型

          同時,在該文件中還定義了使能和禁止中斷宏、棧的增長方向、定義符號OS_STK_GROWTH的值;還定義 了μC/OS-II的OS TASK SW宏,該宏是μC/OS-II從低優先級任務切換到高優先級任務時的調用,可以 采用下面兩種方式定義:一種是如果處理器支持軟中斷,那么可以使用軟中斷向量指向OSCtxSw函數;另 一種是直接調用OSCrxSw函數。

          (2)OS_CPU_A.ASM

          在該文件中有4個匯編函數需要移植,如下:

          ●OSStartHighRdy函數:該函數由OSStart函數調用,OSStart函數負責調度就緒狀態的任務開始運行 ,而其中OSStartHighRdy負責獲取新任務的堆棧指針,并從堆棧指針中恢復新任務的所有處理器寄存器 。函數要移植的原因就是因為它涉及將處理器寄存器保存到堆棧。

          ●OSCtxSw函數:該函數由OS_TASK_SW宏調用,OS_TASK_SW宏由OSSched函數調用,OSSched函數負責任 務之間的切換。OSCtxSw函數在OSSched函數中負責將當前任務對應的處理器寄存器保存到堆棧中,并將 任務中需要恢復的處理器寄存器從堆棧中恢復出來。

          ●OSlntCtxSw函數:該函數由OSlntExit函數調用,OSlntExit函數由OSTickISR函數調用。OSlntCtxSw 負責在定時中斷中任務之間的切換,保存當前任務堆棧指針,并將新任務對應的處理器寄存器從堆棧中 恢復出來。

          ●OSTickISR函數:時間節拍函數,由定時中斷產生,主要負責在進入時保存處理器寄存器,完成任務 時切換,退出時恢復寄存器并返回。

          (3)OS_CPU_C.C

          OS_CPU_C.C文件中有6個函數需要移植。

          其中,OSTaskStklnit函數是在任務創建時被調用的,它負責初始化任務的堆棧結構。其他的5個函數均 為鉤子函數:OSTaskCreateHook、OSTaskDelHook、OSTaskSwHook、OSTaskStatHook、OSTimeTickHook, 這些函數主要用來擴展;μC/OS-II的功能。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 闽侯县| 汤原县| 阿城市| 临沧市| 沅江市| 余干县| 肥东县| 盐源县| 太仓市| 大英县| 凌源市| 嘉鱼县| 清新县| 灵台县| 襄垣县| 汝州市| 长沙县| 从化市| 高安市| 怀宁县| 翼城县| 东乌| 达日县| 阳江市| 勃利县| 霸州市| 惠水县| 连江县| 甘孜| 大足县| 平定县| 昌宁县| 大洼县| 青海省| 嘉定区| 龙山县| 拉萨市| 化德县| 桦南县| 寿光市| 曲水县|