新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 從 μC/OS 升級到 μC/OS-II

        從 μC/OS 升級到 μC/OS-II

        作者: 時間:2016-10-08 來源:網(wǎng)絡 收藏

        本章描述如何從μC/OS 升級到 μC/OS-II。如果已經(jīng)將μC/OS移植到了某類微處理器上,移植μC/OS-II所要做的工作應當非常有限。在多數(shù)情況下,用戶能夠在1個小時之內(nèi)完成這項工作。

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

        如果用戶熟悉μC/OS的移植,可隔過本章前一部分直接參閱10.05節(jié)。

        10.0目錄和文件

        用戶首先會注意到的是目錄的結(jié)構(gòu),主目錄不再叫 SOFTWAREuCOS。而是叫SOFTWAREuCOS-II。 所有的μC/OS-II文件都應放在用戶硬盤的SOFTWAREuCOS-II 目錄下。面向不同的微處理器或微處理器的源代碼一定是在以下兩個或三個文件中: OS_CPU.H,OS_CPU_C.C,或許還有OS_CPU_A.ASM.。匯編語言文件是可有可無的,因為有些C編譯程序允許使用在線匯編代碼,用戶可以將這些匯編代碼直接寫在 OS_CPU_C.C.中。

        與微處理器有關(guān)的特殊代碼,即與移植有關(guān)的代碼,在 μC/OS 中是放在用微處理器名字命名的文件中的,例如,Intel80x86的實模式(RealMode),在大模式下編譯(LargeModle)時,文件名為Ix86L.H, Ix86L_C.C,和Ix86L_A.ASM.。

        表L10.1在μC/OS-II中重新命名的文件.

        升級可以從這里開始:首先將μC/OS目錄下的舊文件復制到μC/OS-II 的相應目錄下,并改用新的文件名,這比重新建立一些新文件要容易許多。表10.2給出來幾個與移植有關(guān)的新舊文件名命名法的例子。

        表 L10.2對不同微處理器從μC/OS到μC/OS-II,要重新命名的文件.

        10.1 INCLUDES.H

        用戶應用程序中的INCLUDES.H 文件要修改。以80x86 實模式,在大模式下編譯為例,用戶要做如下修改:

        ? 變目錄名 μC/OS 為 μC/OS-II

        ? 變文件名 IX86L.H 為 OS_CPU.H

        ? 變文件名UCOS.H 為 uCOS_II.H

        新舊文件如程序清單 L10.1和 L10.2所示

        10.2 OS_CPU.H

        OS_CPU.H 文件中有與微處理器類型及相應硬件有關(guān)的常數(shù)定義、宏定義和類型定義。

        10.2.1 與編譯有關(guān)的數(shù)據(jù)類型s

        為了實現(xiàn) μC/OS-II, 用戶應定義6個新的數(shù)據(jù)類型: INT8U、 INT8S、 INT16U、 NT16S、INT32U、和INT32S。這些數(shù)據(jù)類型有分別表示有符號和無符號8位、16位、32位整數(shù)。在μC/OS中相應的數(shù)據(jù)類型分別定義為:UBYTE、BYTE、UWORD、WORD、ULONG和LONG。用戶所要做的僅僅是復制μC/OS中數(shù)類型并修改原來的UBYTE為INT8U,將BYTE為INT8S,將UWORD修改為INT16U等等,如程序清單 L10.3所示。

        程序清單 L10.1μC/OS 中的 INCLUDES.H.

        /*

        ***************************************************************

        *INCLUDES.H

        ***************************************************************

        */

        #include

        #include

        #include

        #include

        #include

        #include

        #includeSOFTWAREUCOSIX86LIX86L.H

        #includeOS_CFG.H

        #includeSOFTWAREUCOSSOURCEUCOS.H

        程序清單 L10.2μ$04** 中的 INCLUDES.H.

        /*

        ***************************************************************

        *INCLUDES.H

        ***************************************************************

        */

        #include

        #include

        #include

        #include

        #include

        #include

        #includeSOFTWAREuCOS-IIIX86LOS_CPU.H

        #includeOS_CFG.H

        #includeSOFTWAREuCOS-IISOURCEuCOS_II.H

        程序清單 L10.3μC/OS到μC/OS-II 數(shù)據(jù)類型的修改.

        /*uC/OSdatatypes:*/

        typedefunsignedcharUBYTE;/*Unsigned8bitquanTIty*/

        typedefsignedcharBYTE;/*Signed8bitquantity*/

        typedefunsignedintUWORD;/*Unsigned16bitquantity*/

        typedefsignedintWORD;/*Signed16bitquantity*/

        typedefunsignedlongULONG;/*Unsigned32bitquantity*/

        typedefsignedlongLONG;/*Signed32bitquantity*/

        /*uC/OS-IIdatatypes*/

        typedefunsignedcharINT8U;/*Unsigned8bitquantity*/

        typedefsignedcharINT8S;/*Signed8bitquantity*/

        typedefunsignedintINT16U;/*Unsigned16bitquantity*/

        typedefsignedintINT16S;/*Signed16bitquantity*/

        typedefunsignedlongINT32U;/*Unsigned32bitquantity*/

        typedefsignedlongINT32S;/*Signed32bitquantity*/

        在μC/OS中, 任務棧定義為類型OS_STK_TYPE, 而在μC/OS-II中任務棧要定義類型OS_STK.,為了免于修改所有應用程序的文件, 可以在OS_CPU.H中建立兩個數(shù)據(jù)類型, 以Intel80x86 為例,如程序清單 L10.4所示。

        程序清單 L10.4μC/OS 和 μC/OS-II任務棧的數(shù)據(jù)類型

        #defineOS_STK_TYPEUWORD/* 在 uC/OS 中 */

        #defineOS_STKINT16U/* 在 uC/OS-II 中 */

        10.2.2OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()

        μC/OS-II和μC/OS一樣,分別定義兩個宏來開中斷和關(guān)中斷:OS_ENTER_CRITICAL()和

        OS_EXIT_CRITICAL()。在μC/OS向μC/OS-II升級的時候,用戶不必動這兩個宏。.

        10.2.3OS_STK_GROWTH

        大多數(shù)微處理器和微處理器的棧都是由存儲器高地址向低地址操作的,然而有些微處理器的工

        作方式正好相反。μC/OS-II設(shè)計成通過定義一個常數(shù)OS_STK_GROWTH來處理不同微處理器棧操作的取向:


        上一頁 1 2 3 下一頁

        關(guān)鍵詞:

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 庆阳市| 永靖县| 腾冲县| 泗水县| 宣汉县| 宝丰县| 浮山县| 西畴县| 长岭县| 西林县| 吉隆县| 柯坪县| 库车县| 辉南县| 沛县| 大姚县| 甘谷县| 那曲县| 伊吾县| 偏关县| 福海县| 扎囊县| 江西省| 全椒县| 黄大仙区| 安庆市| 若羌县| 宜都市| 财经| 武山县| 项城市| 靖远县| 临泉县| 丰顺县| 东乌珠穆沁旗| 扎兰屯市| 泸水县| 米泉市| 灵石县| 晋江市| 建德市|