縮短μC/OS-II實時內核中斷關閉時間的方法設計
2.5 信號量等待函數OSSemPend的修改
同理,這里以信號量等待函數OSSemPend為例來描述對不能在中斷中調用而又會對臨界區(qū)操作的函數的改進。
信號量等待函數OSSemPend的偽代碼如下:

在這里,改動后的函數先將系統(tǒng)狀態(tài)標志置位,然后進行原來函數的臨界區(qū)操作。需要說明的是,對于函數因為等待信號量時間到、還未獲取信號量而返回的情況的處理機制,改動后的函數與原函數不同,改動后的函數將OS_EventTO函數放到時間節(jié)拍函數OSTimeTick中執(zhí)行,并將OS_EventTO函數的輸入參數由原來的事件pevent指針,改為任務控制塊指針ptcb,因為在函數OSTimeTick中是按照任務控制塊指針操作的。
結語
上述方法已經在筆者的一個電力微機繼電保護項目中成功運用,該方面的實現,提高了μC/OS-II的性能,擴大了μC/OS-II的應用范圍,使得單邊及工程師能更好的利用μC/OS-II提高嵌入式軟件編程水平。特別要說明的是,雖然筆者是以μC/OS-II為例來介紹的,但該方法的原理可以運用到其他實時操作系統(tǒng)上,筆者正在將該方法在實時操作系統(tǒng)RTEMS上實現。從這個意義上講,該方法的提出也對那些致力于編寫自己的實時操作系統(tǒng)的嵌入式軟件工程師具有借鑒意義。
評論