它的特點:
1)開源,
2)可移植性,絕大部分代碼用C寫,硬件相關(guān)部分用匯編寫,
3可固化,
4)可剪裁,這通過條件編譯實現(xiàn),使用#define語句定義所需要的功能。
5)可剝奪性(總是運(yùn)行就緒條件下優(yōu)先級最高的任務(wù)),
6)多任務(wù)(可以管理64個任務(wù),其中保留8個給uC/OS-II,因此用戶最多可有56個任務(wù),每個任務(wù)優(yōu)先級不同,也就意味著不支持時間片輪轉(zhuǎn)調(diào)度法,因為這種方法適合于優(yōu)先級平等的任務(wù))。
7)可確定性。函數(shù)調(diào)度和服務(wù)執(zhí)行時間具有確定性,除了OSTimeTick()和某些事件標(biāo)志服務(wù),系統(tǒng)服務(wù)執(zhí)行時間不依賴用戶應(yīng)用程序任務(wù)數(shù)目的多少。
8)任務(wù)棧。允許每個任務(wù)自己單獨的??臻g不同,可以使用棧空間檢驗函數(shù)確定所需要的??臻g大小。
9)系統(tǒng)服務(wù)。提供信號量,互斥型信號量,事件標(biāo)志,消息郵箱,消息隊列,塊大小固定的內(nèi)存申請與釋放,時間管理函數(shù)等服務(wù)。
10)中斷管理。中斷嵌套層數(shù)最多可達(dá)到255層。
11)穩(wěn)定性和可靠性。
OSInit()函數(shù)用來初始化內(nèi)核,必須首先調(diào)用。建立兩個任務(wù):空閑任務(wù)(其他任務(wù)都未就緒時運(yùn)行),統(tǒng)計任務(wù)(計算CPU的利用率).
*****************************************************************
* Description: This function is used to initialize the internals of uC/OS-II and MUST be called prior to creating any uC/OS-II object and, prior to calling OSStart().
*****************************************************************
void OSInit (void)
{
OSInitHookBegin(); /* 調(diào)用用戶特定的初始化代碼(通過一個接口函數(shù)實現(xiàn)用戶要求的插件式進(jìn)入系統(tǒng)中)*/
OS_InitMisc(); /* 初始化變量*/
OS_InitRdyList(); /* 初始化就緒列表*/
OS_InitTCBList(); /* 初始化OS_TCB空閑列表*/
OS_InitEventList(); /* 初始化OS_EVENT空閑列表*/
#if (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0) //允許事件標(biāo)志
OS_FlagInit(); /* 初始化事件標(biāo)志結(jié)構(gòu)*/
#endif
#if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0) //允許內(nèi)存管理
OS_MemInit(); /* 初始化內(nèi)存管理器*/
#endif
#if (OS_Q_EN > 0) && (OS_MAX_QS > 0) //允許消息隊列
OS_QInit(); /* 初始化消息隊列結(jié)構(gòu)*/
#endif
OS_InitTaskIdle(); /*創(chuàng)建空閑任務(wù)*/
#if OS_TASK_STAT_EN > 0
OS_InitTaskStat(); /* 創(chuàng)建統(tǒng)計任務(wù)*/
#endif
#if OS_TMR_EN > 0 //允許時間管理
OSTmr_Init(); /* 初始化時間管理器*/
#endif
OSInitHookEnd(); /*調(diào)用用戶特定的初始化代碼(參考OSInitHookBegin())*/
#if OS_DEBUG_EN > 0 //允許Debug
OSDebugInit(); //初始化調(diào)試器
#endif
}
********************************************************************************************
* Description: This function is called by OSInit() to initialize miscellaneous variables.
********************************************************************************************
空閑任務(wù)和統(tǒng)計任務(wù)建立的代碼基本一樣,只是統(tǒng)計任務(wù)的優(yōu)先級比空閑任務(wù)大1,
********************************************************************************************
* Description: This function creates the Idle Task.
********************************************************************************************
其他初始化代碼放到后面具體的每一個子模塊中再分析。
聯(lián)系客服