UCOSIII 移植筆記(一)

2021-08-25 05:40:43 字數 1498 閱讀 6044

這篇博文為本人ucosiii移植筆記第一篇

先說一下ucosiii:micrium在2023年推出了ucosiii,相對於之前的ucosii版本,在效能上有了進一步的提公升,主要是支援時間片輪排程,極短的關中斷事件等。

可剝奪多工管理:

什麼是可剝奪多工管理呢?查相關資料,意思就是這個系統總是在執行當前所有就緒的最高優先順序的任務。也就是說,不管系統當前有多少個任務,總是在執行優先順序最高的。

micrium在2023年推出了ucosiii,相對於之前的ucosii版本,在效能上有了進一步的提公升,主要是支援時間片輪排程,極短的關中斷事件等。

同優先順序任務的時間片輪轉排程:

這個是ucosiii與ucosii乙個比較大的區別,ucosiii允許乙個任務優先順序被多個任務使用,當這個優先順序處於最高就緒的時候,ucosiii就會輪流排程處於這個優先順序的所有任務,讓每個任務執行一段由使用者指定的時間長度(時間片)。

ucosiii可採用鎖定核心排程的方式而不是關中斷的方式來保護臨界**段,這樣就可以將關中斷的時間降到最低,使得ucosiii能夠非常快速的響應中斷請求。

任務數目不受限制:

ucosiii本身沒有任務數量的限制,但是受cpu所使用的記憶體空間的限制。

優先順序數量不受限制:

支援無限多的任務優先順序。

軟體定時器:

使用者可以任意定義「單次」和「週期型」定時器,定時器是乙個遞減計數器,遞減到0就會執行預先定義的操作,每個定時器都可以指定所需的操作,週期型定時器在遞減到0時不僅會執行預先指定的操作,還會自動重置計數器值。

同時等待多個核心物件:

ucosiii允許乙個任務同時等待多個事件,也就是說,乙個任務能夠掛起在多個訊號量或訊息列隊之上,當其中任務乙個等待的事件發生時,等待任務就會被喚醒。

直接向任務傳送訊號:

ucosiii允許中斷或者任務直接級另乙個任務傳送訊號,避免建立和使用諸如訊號量或事件標誌等核心物件作為向其它任務傳送訊號的中介,該特性有效的提高了系統效能。

任務暫存器:

每個任務都可以設定若干個任務暫存器,任務暫存器和硬體cpu的暫存器是不同的,主要用來保護各個任務的錯誤資訊,id識別資訊,中斷關閉時間的測量結果等等。

任務級時鐘節拍處理:

ucosiii的時鐘節拍是通過乙個專門的任務完成的,定時中斷僅觸發該任務,將延遲處理和超時判斷放在任務級**完成,能極大的減少中斷的延時時間。、

防止死鎖:

所有ucosiii等待功能,都提供了一超時檢測功能,有效的避免了死鎖。

時間戳:

ucosiii需要乙個16位的或者32位的自由執行計數器,來實現時間測量,在系統執行時,可以通過讀取該計數器來測量某乙個事件的時間資訊。

uCOSIII移植補充

上篇寫到ucosiii的移植,由於移植的是教程寫好的檔案到開發板,沒發現到一些問題。今天移植到另乙個開發板的時候出現系統卡死在osstarthighrdy 函式的問題。現在就再次分析一下移植過程。我們將rct6開發板上的ucosiii移植到c8t6的板子上時,會發現系統一直沒有啟動,led沒用閃爍。...

UCOSIII入門 移植驗證

include sys.h include delay.h include usart.h include led.h include includes.h define start task prio 3 define start stk size 512 cpu stk start task s...

UCOSIII 機智雲協議的移植筆記

以上工作漫天的教程 1 移植是,先知道自己用的mcu是否支援fpu浮點運算,如果支援,在.s檔案裡面,需要新增一段話 reset handler proc export reset handler weak import systeminit import main 從這開始 ldr r0,syst...