uC OS ii系統核心理解 三 初始化呼叫函式

2021-07-27 00:17:54 字數 1735 閱讀 4707

osinit所呼叫的函式

必須類五個 非必須類通過選通開關選擇。

五個必須類:

1.os_initmisc(必須類)

這個函式會被osinit()呼叫來初始化各項變數。

static  void  os_initmisc (void)

沒有選通開關的部分為引數初始數值,這些引數是系統必須的變數,類似於我們定義乙個全域性變數,初始的時候對它進行賦值。

2.os_initrdylist(必須類)

osinit()呼叫該函式用來初始化就緒表。

這裡的就緒表實指把乙個乙個任務排列成乙個表,要將這個表初始化的意思。要執行響應任務就需要知道任務的優先順序、任務控制塊、目前指向的任務等一系列資訊。

static  void  os_initrdylist (void)

ospriocur     = 0u;/*初始化當前任務優先順序*/

ospriohighrdy = 0u;/*初始化最高任務優先順序*/

ostcbhighrdy  = (os_tcb *)0;/*初始化最高優先順序tcb*/

ostcbcur      = (os_tcb *)0;/*初始化當前任務tcb*/

}3.os_inittcblist(必須類)

osinit()呼叫來初始化空閒tcb。這個初始化函式包含的資訊是系統比較重要的。

理解任務控制塊需要熟練掌握資料結構。

static  void  os_inittcblist (void)

ptcb1                   = &ostcbtbl[ix];

ptcb1->ostcbnext        = (os_tcb *)0;                       /* last os_tcb 最後os_tcb指向"空"*/

#if os_task_name_en > 0u

ptcb1->ostcbtaskname    = (int8u *)(void *)"?";              /* unknown name未知tcb名稱*/

#endif

ostcblist               = (os_tcb *)0;                       /* tcb lists initializations初始化tcb鍊錶 */

ostcbfreelist           = &ostcbtbl[0];

}4.os_initeventlist(必須類)

osinit()呼叫該函式用來初始化空閒ecb(事件控制塊)。這裡所說的時間,實指系統相關資源(訊號量、互斥訊號量、訊息郵箱、訊息佇列等)乙個或集。在ucos_ii.h  92行中

#define  os_event_en           (((os_q_en > 0u) && (os_max_qs > 0u)) || (os_mbox_en > 0u) || (os_sem_en > 0u) || (os_mutex_en > 0u))

訊號量、互斥訊號量、郵箱、訊息佇列這些資源要被系統呼叫,就需要進行初始化。系統把他們定義為事件,而使用是需要呼叫相關資料,系統把它們定義為ecb(事件控制塊)。

類似tcb。

5.os_inittaskidle(必須類)

osinit()呼叫該函式建立空閒任務。這個函式屬於系統必須初始化的函式。空閒函式其實就是把系統所建立的任務都處理完了,哪些都掛起了或刪除了,系統沒事可做的時候,執行這個空閒任務。

空閒任務在統計中起一定作用。統計:即cpu佔用率,空閒任務越多,cpu空閒越多,cpu佔用率越低。

uC OS ii核心理解 二

start task任務描述 start task函式體主要做了三類事 1 bsp initializes 初始化應用底層一些帶啊 2 ostick init 滴答時鐘初始化,這個屬於系統級。3 ostaskcreate 建立子任務。4 掛起起始任務 ostasksuspend start task...

linux核心理解初步

b 核心組成部分 b 系統呼叫介面 1,程序管理 2,記憶體管理 3,檔案管理。vfs 4,網路管理。架構和硬體 5,裝置驅動。b bootloader啟動大多數都分為兩個階段 b 第一階段主要包含依賴於cpu的體系結構硬體初始化的 通常都用組合語言來實現。這個階段的任務有 基本的硬體裝置初始化 遮...

uc os ii核心原始碼理解 一

使用作業系統,就要使用作業系統相關的資源 訊息郵箱 訊號量 互斥訊號量 訊息佇列 事件等 需要大致了解系統核心原理。uc os ii作業系統配置 uc os ii系統配置就是修改os cfg.h檔案,就是使能或失能某些功能,即系統裁剪 使能開關量 系統的裁剪是通過預處理 配置了就編譯,沒配置就不編譯...