天天看點

uC/OS-II源碼分析(一)

它的特點:

1)開源,

2)可移植性,絕大部分代碼用C寫,硬體相關部分用彙編寫,

3可固化,

4)可剪裁,這通過條件編譯實作,使用#define語句定義所需要的功能。

5)可剝奪性(總是運作就緒條件下優先級最高的任務),

6)多任務(可以管理64個任務,其中保留8個給uC/OS-II,是以使用者最多可有56個任務,每個任務優先級不同,也就意味着不支援時間片輪轉排程法,因為這種方法适合于優先級平等的任務)。

7)可确定性。函數排程和服務執行時間具有确定性,除了OSTimeTick()和某些事件标志服務,系統服務執行時間不依賴使用者應用程式任務數目的多少。

8)任務棧。允許每個任務自己單獨的棧空間不同,可以使用棧空間檢驗函數确定所需要的棧空間大小。

9)系統服務。提供信号量,互斥型信号量,事件标志,消息郵箱,消息隊列,塊大小固定的記憶體申請與釋放,時間管理函數等服務。

10)中斷管理。中斷嵌套層數最多可達到255層。

11)穩定性和可靠性。

OSInit()函數用來初始化核心,必須首先調用。建立兩個任務:空閑任務(其他任務都未就緒時運作),統計任務(計算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().

OSInit

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

* Description: This function is called by OSInit() to initialize miscellaneous variables.

 OS_InitMisc

空閑任務和統計任務建立的代碼基本一樣,隻是統計任務的優先級比空閑任務大1,

* Description: This function creates the Idle Task.

CodeOS_InitTaskIdle

其他初始化代碼放到後面具體的每一個子子產品中再分析。