許多 RTOS 內(nèi)核在設(shè)置內(nèi)核的周期性滴答中斷方面為開發(fā)人員提供了很大的靈活性。不幸的是,這種靈活性有時(shí)會導(dǎo)致混亂。似乎是許多問題根源的刻度的一個可配置方面是頻率。我將嘗試消除與頻率有關(guān)的常見神話,并嘗試解釋建立系統(tǒng)滴答率所涉及的基本權(quán)衡。
也許由于其他內(nèi)核或特定硬件平臺中存在的限制,似乎有一個廣泛的共識,即 μC/OS-II 和 μC/OS-III 限制了應(yīng)用程序代碼可用的滴答頻率范圍。然而,內(nèi)核本身應(yīng)該能夠支持在給定 MCU 上可行的任何滴答頻率。我已經(jīng)看到應(yīng)用程序以遠(yuǎn)低于 100 Hz 的滴答率運(yùn)行,而在頻譜的另一端,則遠(yuǎn)遠(yuǎn)超過 1 kHz。
如果內(nèi)核對系統(tǒng)的滴答頻率沒有任何特殊影響,那么在設(shè)置此參數(shù)時(shí)應(yīng)該考慮哪些因素?除了會產(chǎn)生滴答聲的外圍設(shè)備施加的限制之外,您的主要關(guān)注點(diǎn)應(yīng)該是開銷和分辨率。使用相對較高的頻率,您將能夠以比其他方式更小的增量建立延遲,但是您將為此能力付出代價(jià),增加的開銷是以處理滴答的 CPU 時(shí)間的形式。較低的頻率會減少滴答處理時(shí)間,但當(dāng)然也會限制系統(tǒng)延遲的分辨率。例如,在每 10 毫秒發(fā)生一次滴答的系統(tǒng)中,內(nèi)核將無法提供低至 1 毫秒的延遲。
為了在開銷和分辨率之間取得適當(dāng)?shù)钠胶?,您需要考慮硬件平臺的功能和應(yīng)用程序的時(shí)序需求。以 μC/OS-II 或 μC/OS-III 為例,在以 300 MHz 運(yùn)行的 32 位處理器上,任一內(nèi)核每秒處理 1,000 個滴答所需的開銷可能不會超過 CPU 周期的 1%。但是,具有 24 MHz 時(shí)鐘的 16 位 MCU 可能是另一回事。同樣,僅使用時(shí)間延遲來輪詢按鈕按下的應(yīng)用程序在 50 毫秒的滴答分辨率下可能不會遇到任何問題,但對于截止日期較緊的任務(wù)來說,這樣的設(shè)置可能是不可接受的。
關(guān)于最后一點(diǎn),重要的是要注意,滴答聲可能不是解決系統(tǒng)中所有延遲的最佳解決方案。例如,如果您想每 500 μs 從 A/D 轉(zhuǎn)換器讀取數(shù)據(jù),那么最好的方法可能是讓您的轉(zhuǎn)換器由中斷驅(qū)動并使用定時(shí)器觸發(fā)轉(zhuǎn)換(與滴答中斷無關(guān)的定時(shí)器) 。 換句話說,基于滴答的函數(shù)旨在用于嚴(yán)重延遲——例如,負(fù)責(zé)大約每 10 毫秒輸出一條消息的狀態(tài)任務(wù)可能需要這樣——并且你應(yīng)該轉(zhuǎn)向?qū)S玫挠布〞r(shí)器,當(dāng)需要更準(zhǔn)確的延遲。我將在第 3 部分中提供與此主題相關(guān)的更多詳細(xì)信息,其中我解釋了內(nèi)核節(jié)拍的另一個有時(shí)令人困惑的方面:優(yōu)先級。
審核編輯:郭婷
-
處理器
+關(guān)注
關(guān)注
68文章
19178瀏覽量
229201 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3241瀏覽量
114519 -
RTOS
+關(guān)注
關(guān)注
22文章
809瀏覽量
119453
發(fā)布評論請先 登錄
相關(guān)推薦
評論