在您確定系統(tǒng)中滴答處理的優(yōu)先級之前,重要的是要注意與滴答相關(guān)的延遲,正如我上一篇文章所指出的,可能并不總是在您的系統(tǒng)中實(shí)現(xiàn)周期性行為的最佳方式。您可能希望避免在某些任務(wù)中依賴滴答作響的一個(gè)原因是延遲往往會因調(diào)用而波動。如果您的系統(tǒng)任務(wù)之一重復(fù)調(diào)用 OSTimeDly() 以延遲 5 個(gè)滴答聲,并且您的系統(tǒng)的滴答聲周期為 1 毫秒,則該任務(wù)不會始終保持等待狀態(tài)正好 5 毫秒。在某些情況下,它可能會經(jīng)歷接近 4 毫秒的延遲,而在其他情況下,它可能會延遲 6 毫秒或更長時(shí)間。
在許多系統(tǒng)中,這種波動或抖動的原因之一是多個(gè)任務(wù)使用延遲函數(shù)。如圖 1 所示,如果三個(gè)任務(wù)的延遲周期都在同一個(gè)內(nèi)核節(jié)拍上到期,那么只有那些任務(wù)中最高優(yōu)先級的任務(wù)會在節(jié)拍處理程序之后立即運(yùn)行。隨著時(shí)間的推移,較低優(yōu)先級的任務(wù)將在其延遲中經(jīng)歷更多的抖動,因?yàn)榭偸谴嬖谒鼈儫o法在將它們移動到就緒狀態(tài)的滴答聲之后立即運(yùn)行的可能性。
當(dāng)然,滴答處理程序優(yōu)先級的可變性是延遲波動的另一個(gè)潛在來源。在 μC/OS-III 的例子中,它預(yù)留了一個(gè)系統(tǒng)任務(wù)來處理滴答中斷,如果這個(gè)任務(wù)被賦予了一個(gè)相對較低的優(yōu)先級并且在一個(gè)高優(yōu)先級任務(wù)運(yùn)行時(shí)發(fā)生了一個(gè)滴答,那么內(nèi)核將不會被能夠處理滴答并執(zhí)行任何相關(guān)的調(diào)度,直到 CPU 被高優(yōu)先級任務(wù)放棄,如圖 2 所示。在完全在 ISR 中處理滴答的 μC/OS-II 中,如果這ISR 的優(yōu)先級相對較低,并且在執(zhí)行更重要的 ISR 期間發(fā)生了滴答聲。
在設(shè)置滴答優(yōu)先級時(shí),您需要牢記應(yīng)用程序?qū)Σ▌友舆t的容忍度。如果您的代碼可以適應(yīng)幾毫秒的波動——也許是因?yàn)槟鷮⑹褂玫未鹧舆t僅用于輪詢用戶 I/O——那么您可以選擇優(yōu)先級相對較低的滴答。另一方面,如果您的任務(wù)需要相當(dāng)一致的延遲,那么您應(yīng)該采用高優(yōu)先級,并且您還應(yīng)該采取措施限制使用延遲函數(shù)的任務(wù)數(shù)量。
RTOS 內(nèi)核用戶在配置滴答優(yōu)先級和頻率方面可能具有的靈活性肯定會給剛接觸內(nèi)核的開發(fā)人員帶來一些困難。然而,通過設(shè)置刻度所涉及的權(quán)衡信息,這種靈活性成為定制多任務(wù)系統(tǒng)以滿足各種應(yīng)用程序需求的寶貴手段。我已嘗試在本系列博客中提供滴答使用和配置所需的一些關(guān)鍵信息。
審核編輯:郭婷
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1411瀏覽量
41168 -
RTOS
+關(guān)注
關(guān)注
24文章
844瀏覽量
120855
發(fā)布評論請先 登錄
ADL5308可以通過軟件和硬件配置的參數(shù),配置的優(yōu)先級是什么?
CyU3PDebugPrint的最高優(yōu)先級和最低優(yōu)先級是什么?
一天一個(gè)嵌入式面試知識(1:中斷處理機(jī)制詳解)
配電柜—斷電危機(jī)?配電柜故障排查優(yōu)先級指南

rtthread是搶占式的rtos,那么線程的timeout參數(shù)具體的作用是什么呢?
使用CH32V103C8TC設(shè)置中斷優(yōu)先級分組時(shí),編譯報(bào)錯(cuò)的原因?
CH32V103 使用中斷優(yōu)先級分組0時(shí)報(bào)錯(cuò)
車載以太網(wǎng)交換機(jī)入門基本功(4)—優(yōu)先級設(shè)計(jì)與VLAN測試

在汽車區(qū)域模塊中使用理想二極管的優(yōu)先級電源多路復(fù)用器

freertos中斷優(yōu)先級在哪設(shè)置
【「ARM MCU嵌入式開發(fā) | 基于國產(chǎn)GD32F10x芯片」閱讀體驗(yàn)】+閱讀中斷篇
通過I2C PWM IC控制伺服,可以為伺服控制進(jìn)行高優(yōu)先級中斷嗎?
APS智能優(yōu)化排產(chǎn)軟件的優(yōu)先級應(yīng)用

評論