SysTick的優(yōu)先級配置,常見的有兩種說法,這兩種說法完全相反,依次說一下各自特點。
第一種:
SysTick中斷優(yōu)先級應(yīng)該設(shè)置為高。
在使用實時操作系統(tǒng)時,把內(nèi)核“心跳”定時器的優(yōu)先級調(diào)高一些。持這種觀點的人認(rèn)為優(yōu)先級調(diào)高了,使SysTick的ISR能搶占其它ISR,保證系統(tǒng)心跳的準(zhǔn)確性,心跳準(zhǔn)確了,才能保證實時性,SysTick的ISR一般都很短小精悍,對被搶占的ISR影響較小。
我們來看一下優(yōu)先級高了會怎么樣,如下圖所示,SysTick ISR能夠搶占用戶ISR,SysTick依然按照設(shè)定值規(guī)律性中斷。這種情況下對于線程時間片輪轉(zhuǎn)的方式比較準(zhǔn)確,輪轉(zhuǎn)實時性好,基于SysTick的軟定時器也比較精準(zhǔn)。但是如果用戶中斷有很多種,而且很頻繁,那么SysTick會不停的打斷用戶中斷,不斷的出棧入棧,影響用戶中斷的實時性。所以說SysTick中斷優(yōu)先級調(diào)高了有好處也有壞處。
第二種:
SysTick中斷優(yōu)先級應(yīng)該設(shè)置為低。
持這種觀點的人認(rèn)為優(yōu)先級設(shè)置為低了,用戶中斷能夠搶占SysTick,用戶中斷更準(zhǔn)確,能快速響應(yīng)內(nèi)外部中斷。我們來看一下優(yōu)先級調(diào)低了有什么現(xiàn)象。
如下圖所示,在執(zhí)行用戶ISR的時候,SysTick中斷到來,由于優(yōu)先級低,只能掛起等待,用戶ISR結(jié)束后立即運行,最終導(dǎo)致兩次“心跳”間隔大,比如軟定時器等。從圖中可以看出,由于于SysTick有自動裝載功能,沒有影響下一次中斷。
上圖中雖然某次心跳間隔大了,但是沒有“丟步”。如果用戶中斷種類多且很頻繁,如下圖所示,SysTick少進(jìn)入一次中斷,這種情況不準(zhǔn)確了。SysTick中斷不準(zhǔn)了,線程時間片輪轉(zhuǎn)就不準(zhǔn)了,基于SysTick的軟定時器也不準(zhǔn)了。很多人人認(rèn)為那可是系統(tǒng)時鐘呀,怎么能夠不準(zhǔn)確,那還能叫實時操作系統(tǒng)嗎?仔細(xì)想一下就知道了,優(yōu)先級調(diào)低了,用戶中斷不受SysTick中斷影響,保障了用戶中斷,就是保障實時性!
總結(jié):
前面的文章中分析了(參見下面擴(kuò)展閱讀),在實時操作系統(tǒng)中,實時性最高的是中斷程序,要及時的處理內(nèi)外部中斷,線程內(nèi)執(zhí)行的代碼因為需要任務(wù)調(diào)度等,實時性差一些。
如果SysTick優(yōu)先級調(diào)高,影響了用戶中斷,再加上線程調(diào)度本身也不準(zhǔn)確,那么整個操作系統(tǒng)沒有準(zhǔn)確的地方了。因此我個人同意第二種說法,SysTick優(yōu)先級降低,保障用戶中斷的實時性,線程的實時性放到第二位,這樣才能體現(xiàn)出實時特性。
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6801瀏覽量
123285 -
中斷
+關(guān)注
關(guān)注
5文章
898瀏覽量
41471 -
ISR
+關(guān)注
關(guān)注
0文章
38瀏覽量
14426 -
線程
+關(guān)注
關(guān)注
0文章
504瀏覽量
19675 -
Systick
+關(guān)注
關(guān)注
0文章
62瀏覽量
13073
發(fā)布評論請先 登錄
相關(guān)推薦
評論