RTOS的系統(tǒng)節(jié)拍
傳統(tǒng)的RTOS都是利用一個硬件定時器產(chǎn)生周期性的節(jié)拍中斷,作為系統(tǒng)的時基。在多數(shù)的應用中,系統(tǒng)節(jié)拍的周期都是毫秒級的,RTOS的超時、延遲、定時的分辨率都是以節(jié)拍為單位。即使一個任務在幾個連續(xù)的節(jié)拍內(nèi)執(zhí)行,系統(tǒng)節(jié)拍中斷還是會周期性的發(fā)生,浪費了CPU的執(zhí)行時間。下圖是一個示例,雖然某段時間內(nèi)只有IDLE任務在執(zhí)行,系統(tǒng)節(jié)拍中斷還是會如期發(fā)生。
此外,任務延遲或超時等時間相關(guān)的功能都基于系統(tǒng)滴答中斷計時,計時時間到后,通過系統(tǒng)節(jié)拍周期中斷觸發(fā)調(diào)度器。因此,如果任務的延遲時間小于一個系統(tǒng)節(jié)拍周期,則只能主動等待,直到所需的時間結(jié)束。
?周期級分辨率的RTOS
SEGGER之前推出的embOS Ultra,改變了過去RTOS采用周期節(jié)拍中斷作為系統(tǒng)時基的工作方式,采用硬件定時器加計數(shù)器的方式,只在必要時產(chǎn)生中斷。這就消除了傳統(tǒng)的周期性節(jié)拍中斷,減少了不必要的CPU活動,同時能降低系統(tǒng)的功耗。embOS Ultra基于時間事件的調(diào)度都能以微秒指定。
?體驗embOS Ultra微秒級調(diào)度
目前embOS Ultra支持CortexM/R/A,以及RISC-V架構(gòu)的處理器。從官網(wǎng)可以下載到基于SEGGER Embedded Studio的示例Demo,用于測試,內(nèi)核以二進制庫提供。embOS Ultra的API完全兼容embOS,只是多了幾個任務管理的API,任務可以按照ms或us延遲。
先將Demo例程的任務做了修改,HPTask分別以1000us、2000us不等延遲,LPTask以80ms延遲。
static void HPTask(void) {
while (1) {
BSP_SetLED(0);
OS_TASK_Delay_us(1000);
BSP_ClrLED(0);
OS_TASK_Delay_us(2000);
BSP_SetLED(0);
OS_TASK_Delay_us(3000);
BSP_ClrLED(0);
OS_TASK_Delay_us(4000);
}
}
static void LPTask(void) {
while (1) {
BSP_ToggleLED(1);
OS_TASK_Delay_ms(80u);
}
}
下載代碼至目標板上運行,通過SystemView來觀測系統(tǒng)的執(zhí)行:
從OS事件視圖可以看到,系統(tǒng)不存在周期性的節(jié)拍中斷,只是在需要進行任務調(diào)度時觸發(fā)一次中斷。從下面的Timeline視圖可以更直觀的看出,紅色涂抹的位置是系統(tǒng)中斷。
注意上圖中的時間(996.8us、1.9ms,2.9ms……)并不是任務的間隔時間,而是調(diào)度器執(zhí)行的間隔時間。
再將任務代碼改成:
static void HPTask(void) {
while (1) {
BSP_SetLED(0);
OS_TASK_Delay_us(50);
BSP_ClrLED(0);
OS_TASK_Delay_us(100);
}
}
static void LPTask(void) {
while (1) {
BSP_ToggleLED(1);
OS_TASK_Delay_us(200u);
}
}
HPTask任務分別延遲50us和100us,LPTask延遲200us,運行后觀測Timeline:
HPTask首次執(zhí)行延遲了50us之后,系統(tǒng)定時器中斷觸發(fā),調(diào)度器開始執(zhí)行,從IDEL任務切換到HPTask任務。同時可以發(fā)現(xiàn),從中斷觸發(fā)到HPTask任務體開始執(zhí)行實際上已經(jīng)過去了10us,這是因為中斷處理和任務調(diào)度的執(zhí)行需要消耗一定CPU時間,這個與處理器架構(gòu)和CPU運行頻率有關(guān),在Cortex-M上大概在10us左右。也就是說在當前的處理器上,延遲時間小于10us是沒有意義的,但是在主頻很高的MPU(應用處理器)上這個時間可能要短很多。
總之,現(xiàn)在很多的MCU的性能都已經(jīng)很高了。同時,一些應用要求處理器有比較高的計算能力,還要求系統(tǒng)能有很好的實時性,甚至在MPU上使用RTOS。此種應用場景下,如果RTOS支持CPU周期級別的分辨率,這實際上可以進一步提升系統(tǒng)的實時性。而且,在針對一些外設的處理上,使用微秒級的延遲,還能提高CPU的使用效率,擴展了RTOS的潛在應用范圍。
審核編輯 :李倩
-
mcu
+關(guān)注
關(guān)注
146文章
16796瀏覽量
349331 -
高分辨率
+關(guān)注
關(guān)注
0文章
43瀏覽量
15297 -
定時器
+關(guān)注
關(guān)注
23文章
3226瀏覽量
114144
原文標題:embOS-Ultra:高分辨率系統(tǒng)時間
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論