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