新聞中心

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

從 μC/OS 升級(jí)到 μC/OS-II

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

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

本文引用地址:http://2s4d.com/article/201610/305737.htm

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

10.0目錄和文件

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

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

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

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

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

10.1 INCLUDES.H

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

? 變目錄名 μ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 文件中有與微處理器類型及相應(yīng)硬件有關(guān)的常數(shù)定義、宏定義和類型定義。

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

為了實(shí)現(xiàn) μC/OS-II, 用戶應(yīng)定義6個(gè)新的數(shù)據(jù)類型: INT8U、 INT8S、 INT16U、 NT16S、INT32U、和INT32S。這些數(shù)據(jù)類型有分別表示有符號(hào)和無符號(hào)8位、16位、32位整數(shù)。在μC/OS中相應(yīng)的數(shù)據(jù)類型分別定義為:UBYTE、BYTE、UWORD、WORD、ULONG和LONG。用戶所要做的僅僅是復(fù)制μ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中, 任務(wù)棧定義為類型OS_STK_TYPE, 而在μC/OS-II中任務(wù)棧要定義類型OS_STK.,為了免于修改所有應(yīng)用程序的文件, 可以在OS_CPU.H中建立兩個(gè)數(shù)據(jù)類型, 以Intel80x86 為例,如程序清單 L10.4所示。

程序清單 L10.4μC/OS 和 μC/OS-II任務(wù)棧的數(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一樣,分別定義兩個(gè)宏來開中斷和關(guān)中斷:OS_ENTER_CRITICAL()和

OS_EXIT_CRITICAL()。在μC/OS向μC/OS-II升級(jí)的時(shí)候,用戶不必動(dòng)這兩個(gè)宏。.

10.2.3OS_STK_GROWTH

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

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


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞:

評(píng)論


相關(guān)推薦

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

關(guān)閉