新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 縮短μC/OS-II實時內(nèi)核中斷關(guān)閉時間的方法設計

        縮短μC/OS-II實時內(nèi)核中斷關(guān)閉時間的方法設計

        作者: 時間:2012-05-07 來源:網(wǎng)絡 收藏

        2.2 增加任務重調(diào)度函數(shù)OS_Resched

        任務重調(diào)度函數(shù)OS_Resched的偽代碼如下:

        任務重調(diào)度函數(shù)在以下兩處執(zhí)行:

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

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

        2.3 中斷返回函數(shù)OSIntExit的修改

        中斷返回函數(shù)OSIntExit的偽代碼如下:

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

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

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

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

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



        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 西畴县| 汽车| 山西省| 常宁市| 瑞金市| 游戏| 任丘市| 连城县| 旌德县| 汝州市| 赣州市| 海林市| 汉沽区| 涞源县| 小金县| 胶州市| 房山区| 东方市| 昌邑市| 靖边县| 旌德县| 巴塘县| 巴彦县| 麦盖提县| 十堰市| 南涧| 浦江县| 合江县| 瑞丽市| 综艺| 龙游县| 都昌县| 郴州市| 陆川县| 峨眉山市| 彭山县| 新化县| 南召县| 通榆县| 沙河市| 从江县|