UCOS2系統核心講述(二) 初始化呼叫函式

2021-07-22 09:01:22 字數 3415 閱讀 4470

ⅰ、寫在前面

ucos2_stm32f1移植詳細過程(彙總文章)

ucos2系統核心講述(一

)_總體描述

本文還是結合前面移植好、可以執行的源**來進行講述關於

最新版本

ucos2系統核心部分**(圍繞源**來講述)。

本文講述的內容不必深入理解,可以先做個了解。

下看。

ⅱ、osinit

所呼叫的函式

我將osinit所呼叫的函式分為兩類:必須類非必須類

必須類:與系統、任務緊密相關的初始化。其實這些初始化就是對變數、結構體等賦予初始值。(如:系統執行標誌位初始化暫停執行、最高優先順序指向空等)它們的初始化位於系統核心os_core.c裡面。

非必須類:這一類就是可以不呼叫來初始化的一類。從**可以看他們前面有乙個預處理標誌位【如:#if (os_flag_en > 0u) && (os_max_flags > 0u)】,這些標誌位位於os_cfg.h(前面說過系統的裁剪),當我們不使用這些功能時,也就是系統裁剪掉了這些功能,它們就不會被初始化。

事件標誌組、記憶體管理、訊息佇列等這些就屬於非必須類,它們的初始化位於自身的.c檔案裡面(不位於

os_core.c

)。【如:

os_flaginit

位於os_flag.c

檔案裡面】

1.

os_initmisc(必須類)

這個函式會被osinit()呼叫來初始化各項變數。對紅色框內引數初始化數值,這些引數是系統必須的變數,類似於我們定義乙個全域性變數,初始的時候對它進行賦值

.os_initrdylist(必須類)

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

.os_inittcblist(必須類)

這個函式會被osinit()呼叫來初始化空閒tcb(任務控制塊)。這個初始化函式包含的資訊是比較難的,也是系統比較重要的(後面會對tcb進行講述)。

所謂任務控制塊,就是控制任務相關變數資料資訊各類的結構體的歸類,其結構體裡面包含的資訊是很多的。

理解tcb就需要對資料結構有一定的熟悉才行。

.os_initeventlist(必須類)

這個函式會被osinit()呼叫來初始化空閒ecb(事件控制塊)。這個函式雖然我把它歸類到系統必須類這一塊,其實不完全正確。這裡所說的事件,其實就是系統相關資源(訊息佇列、郵箱、訊號量、互斥訊號量等)的乙個或集。在ucos_ii.h中可以看到下面巨集定義:

#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(任務控制塊)。

.os_inittaskidle(必須類)

這個函式會被osinit()呼叫來建立空閒任務。這個函式在本節開頭截圖中沒有擷取出來(螢幕高度有限),其實這個函式也是屬於系統必須初始化的函式。空閒函式其實就是系統把所建立的任務都處理完了,那些都掛起了,或刪除了,系統空閒沒事做了,它就會來執行這個空閒任務

空閒任務在統計中起到一定作用,所謂統計,就是我們都知道的cpu佔用率,空閒統計的越多,cpu空閒越多,那麼cpu佔用率就越低。【從cpu使用率應該很容易理解為什麼要建立空閒任務】

筆者針對於初學者提供的例程都是去掉了許多不必要的功能,精簡了官方的**,對初學者一看就明白,以簡單明瞭的工程供大家學習。

ucos基於stm32f0系列例項:

訪問密碼 4437

ucos基於stm32f1系列例項:

訪問密碼 00a6

ucos基於stm32f3系列例項:

訪問密碼 da90

ucos基於stm32f4系列例項:

訪問密碼 5a04

訪問密碼 49c2

ⅳ、說明

當你掌握ucos在一種平台上的移植,其他平台移植原理類似,請不要侷限某一平台。

以上總結僅供參考,若有不對之處,敬請諒解。

ⅴ、最後

UCOS2系統核心講述(三) TCB任務控制塊

寫在前面 ucos2 stm32f1移植詳細過程 彙總文章 ucos2系統核心講述 一 總體描述 ucos2系統核心講述 二 初始化呼叫函式 tcb任務控制塊是用來記錄任務的堆疊指標 任務的當前狀態 任務的優先級別等一些與任務有關屬性的乙個資料結構表 因此,學習本文之前需要了解資料結構 任務控制塊相...

ucos2學習筆記 3 核心架構

核心結構 1.處理臨界 為了是有些 不被中斷或其他任務打斷,使其完整操作,同時核心中有 許多臨界 需要儲存。從而ucos中加入開關中斷的巨集定義 os enter critical 關中斷 os exit critical開中斷 在ocos2中,開關中斷有有三種實現方法 1 os critical ...

UCOS2作業系統學習筆記(4)

讀 嵌入式實時作業系統uc os ii 第二版 1 與處理器型別無關的 p73 os core.c os flag.c os mbox.c os mem.c os mutex.c os q.c os sem.c os task.c os time.c ucos ii.c ucos ii.h 2 與應...