285_S32K144上基於FreeRTOS的精準週期性任務調度

完整的S32K144的學習彙總如下:

https://github.com/GreyZhang/g_s32k144

繼續S32K144的學習,這次看一下FreeRTOS的週期性任務調度。其實,之前的測試一直在用一個1000ms的週期性調度,但是,這個調度僅僅是用了一個1000ms的延時來實現的。雖然有一定的準確度,但是依然不是很準確。

爲了測試,這裏我修改了一下FreeRTOS的配置,直接把tick修改爲每秒10000次。之後,實現一個精準度更高的1ms任務。具體的代碼如下:

這裏與之前實現1000ms的調度相比,有一個延時函數的差異。而這裏的這個函數,則是實現精準調度的關鍵。

接下來,在1000ms的調度中增加一個測試。

測試的結果如下:

從結果看,在最初的一個階段,1ms的計數器的數值與1000ms計數器的數值的比值是在不斷逼近1000的。最終,或許也不會穩定在1000,會有一個偏差。不過,大致能夠看出一個數量的量級關係。我嘗試讓這個測試運行的久一點,這個倍數逐漸增長到了1013。在沒有嚴謹的測試數據之前,目前關於準確性的說明只能是來自於FreeRTOS的文檔說明。1ms的實現,在準確度上來說是要精準於1000ms實現的。這樣,按照這種方式,我也將1000ms的Task做一下修改。之後,再做一個測試觀察。

經過了比先前長得多的一段時間,我發現這個倍數一直沒有超過1000,基本上穩定在了996。這在一定程度上能夠看得出這個調度的邏輯的嚴謹性吧!

完整的S32K144的學習彙總如下:

https://github.com/GreyZhang/g_s32k144

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章