新聞中心

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

        μC/OS-II在51單片機上的移植

        作者: 時間:2012-04-27 來源:網絡 收藏

        假設現在從Fun1一直運行到Fun4,此時堆棧結構如圖1所示,中間的ADD_A到ADD_D為堆棧中的數據,左邊的SP到SP-7為堆棧指針,右邊的Fun1到Fun4為對應的調用函數。運行Fun4時,此時SP與SP-1所存的值為ADD_D,而ADD_D為Fun3中子函數Fun4的下一行的地址,即Fun3中3-2行的地址,以此類推,ADD_C為2-2行地址,ADD_B 圖1函數運行及堆棧結構圖為1-2行地址。

        本文引用地址:http://www.104case.com/article/171557.htm

        b.JPG


        當函數A調用函數B時,進入函數B時就會把函數A的斷點地址壓棧,而當函數B運行結束時則把堆棧中函數A的斷點地址彈出到PC指針,程序接著從函數A的斷點開始運行。如果在函數B中更改SP及SP-1中的數據,則函數B運行結束時就不會再返回函數A中,而返回到SP及SP-1更改后的數據所代表的地址。
        以上是函數調用時的基本情況,如果是中斷則堆棧不僅保存斷點地址還會自動保存寄存器的值。任務調度就是靠中斷來實現,中斷中所保存的斷點地址就是任務的斷點地址,當本任務要再次執行時就把斷點地址賦給PC就可以接著任務被中斷時地址順序執行。

        3 頭文件
        相關的4個文件中有2個頭文件,這2個頭文件的比較簡單,可以參考其它的移植程序。其中OS_CPU.H中主要是數據類型的定義、堆棧生長方向的定義、開關中斷的定義以及函數級任務切換的宏定義。OS_CFG.H中主要是任務數、優先級數、事件數、每秒中斷節拍數以及各種系統函數的使能定義。

        4 匯編與C文件的移植
        在要移植的匯編與C的兩個文件中有14個函數,其中9個是接口函數,可根據實際需要來決定,有5個是必須寫的。這5個函數分別是:OS_CPU_C.C文件中的OSTaskStkInit()和OS_CPU_A.ASM文件中的OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()與OSTickISR()。下面就這5個函數來做具體分析。



        關鍵詞: 移植 機上 單片 OS-II

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 桂东县| 庆阳市| 越西县| 泸州市| 龙南县| 鲁甸县| 东乌珠穆沁旗| 台湾省| 和政县| 嘉峪关市| 五华县| 凭祥市| 建阳市| 南和县| 永川市| 蒙山县| 北安市| 宣武区| 年辖:市辖区| 莲花县| 屏东县| 邓州市| 永清县| 绍兴县| 保山市| 台东县| 承德县| 阿荣旗| 金华市| 潢川县| 彝良县| 蓬安县| 泸定县| 纳雍县| 临夏市| 黔江区| 定远县| 兴城市| 剑川县| 新乡市| 抚宁县|