新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 縮短μC/OS-II實時內核中斷關閉時間的方法設計

縮短μC/OS-II實時內核中斷關閉時間的方法設計

作者: 時間:2012-05-07 來源:網絡 收藏

2.2 增加任務重調度函數OS_Resched

任務重調度函數OS_Resched的偽代碼如下:

任務重調度函數在以下兩處執(zhí)行:

(1) 當μC/OS-II將當前任務控制塊壓棧,而還沒有將最高優(yōu)先級任務的控制塊彈出棧時執(zhí)行,因為這時在系統循環(huán)函數數組里有可能還有未執(zhí)行的函數,這些函數的執(zhí)行有可能導致另外一個更高優(yōu)先級任務的就緒。

(2) 在中斷服務函數的末尾執(zhí)行。如果μC/OS-II中斷返回函數返回的是一個真值,則表示需要執(zhí)行重調度函數,這時就要執(zhí)行重調度函數。

2.3 中斷返回函數OSIntExit的修改

中斷返回函數OSIntExit的偽代碼如下:

原函數的返回是void,而改動后的函數返回一個布爾量,用來表示下一步是要正常中斷返回(返回布爾假值時),還是要調用任務重調度函數(返回布爾真值時);同時,改動后還增加對系統狀態(tài)標志的查詢,如果發(fā)現系統在臨界操作狀態(tài),則直接返回布爾假值。所以在中斷服務程序的最后不是象原來那樣簡單的調用,而是調用后根據返回值作相應的處理。

2.4 信號量發(fā)送函數OSSemPost的修改

這里將以信號量發(fā)送函數OSSemPost為例來描述對可在中斷中調用而又會對臨界區(qū)操作的函數的改進。對于μC/OS-II中的其他函數,改進的方法大致相同。

信號量發(fā)送函數OSSemPost的偽代碼如下:

在這里,改動后的函數將先判斷系統狀態(tài)標志,如果系統在臨界區(qū)操作狀態(tài),則將臨界操作作為另一個函數放入全局函數循環(huán)數組,等待在任務調度時執(zhí)行,如果不在臨界區(qū)操作狀態(tài),則關中斷后將系統狀態(tài)標志置位,然后開中斷進行原函數的那些臨界操作和任務調度。



評論


相關推薦

技術專區(qū)

關閉