RTOS的系統(tǒng)節(jié)拍
傳統(tǒng)的RTOS都是利用一個(gè)硬件定時(shí)器產(chǎn)生周期性的節(jié)拍中斷,作為系統(tǒng)的時(shí)基。在多數(shù)的應(yīng)用中,系統(tǒng)節(jié)拍的周期都是毫秒級(jí)的,RTOS的超時(shí)、延遲、定時(shí)的分辨率都是以節(jié)拍為單位。即使一個(gè)任務(wù)在幾個(gè)連續(xù)的節(jié)拍內(nèi)執(zhí)行,系統(tǒng)節(jié)拍中斷還是會(huì)周期性的發(fā)生,浪費(fèi)了CPU的執(zhí)行時(shí)間。下圖是一個(gè)示例,雖然某段時(shí)間內(nèi)只有IDLE任務(wù)在執(zhí)行,系統(tǒng)節(jié)拍中斷還是會(huì)如期發(fā)生。

此外,任務(wù)延遲或超時(shí)等時(shí)間相關(guān)的功能都基于系統(tǒng)滴答中斷計(jì)時(shí),計(jì)時(shí)時(shí)間到后,通過系統(tǒng)節(jié)拍周期中斷觸發(fā)調(diào)度器。因此,如果任務(wù)的延遲時(shí)間小于一個(gè)系統(tǒng)節(jié)拍周期,則只能主動(dòng)等待,直到所需的時(shí)間結(jié)束。
?周期級(jí)分辨率的RTOS
SEGGER之前推出的embOS Ultra,改變了過去RTOS采用周期節(jié)拍中斷作為系統(tǒng)時(shí)基的工作方式,采用硬件定時(shí)器加計(jì)數(shù)器的方式,只在必要時(shí)產(chǎn)生中斷。這就消除了傳統(tǒng)的周期性節(jié)拍中斷,減少了不必要的CPU活動(dòng),同時(shí)能降低系統(tǒng)的功耗。embOS Ultra基于時(shí)間事件的調(diào)度都能以微秒指定。
?體驗(yàn)embOS Ultra微秒級(jí)調(diào)度
目前embOS Ultra支持CortexM/R/A,以及RISC-V架構(gòu)的處理器。從官網(wǎng)可以下載到基于SEGGER Embedded Studio的示例Demo,用于測(cè)試,內(nèi)核以二進(jìn)制庫提供。embOS Ultra的API完全兼容embOS,只是多了幾個(gè)任務(wù)管理的API,任務(wù)可以按照ms或us延遲。

先將Demo例程的任務(wù)做了修改,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);}}
下載代碼至目標(biāo)板上運(yùn)行,通過SystemView來觀測(cè)系統(tǒng)的執(zhí)行:

從OS事件視圖可以看到,系統(tǒng)不存在周期性的節(jié)拍中斷,只是在需要進(jìn)行任務(wù)調(diào)度時(shí)觸發(fā)一次中斷。從下面的Timeline視圖可以更直觀的看出,紅色涂抹的位置是系統(tǒng)中斷。

注意上圖中的時(shí)間(996.8us、1.9ms,2.9ms……)并不是任務(wù)的間隔時(shí)間,而是調(diào)度器執(zhí)行的間隔時(shí)間。
再將任務(wù)代碼改成:
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任務(wù)分別延遲50us和100us,LPTask延遲200us,運(yùn)行后觀測(cè)Timeline:

HPTask首次執(zhí)行延遲了50us之后,系統(tǒng)定時(shí)器中斷觸發(fā),調(diào)度器開始執(zhí)行,從IDEL任務(wù)切換到HPTask任務(wù)。同時(shí)可以發(fā)現(xiàn),從中斷觸發(fā)到HPTask任務(wù)體開始執(zhí)行實(shí)際上已經(jīng)過去了10us,這是因?yàn)橹袛嗵幚砗腿蝿?wù)調(diào)度的執(zhí)行需要消耗一定CPU時(shí)間,這個(gè)與處理器架構(gòu)和CPU運(yùn)行頻率有關(guān),在Cortex-M上大概在10us左右。也就是說在當(dāng)前的處理器上,延遲時(shí)間小于10us是沒有意義的,但是在主頻很高的MPU(應(yīng)用處理器)上這個(gè)時(shí)間可能要短很多。
總之,現(xiàn)在很多的MCU的性能都已經(jīng)很高了。同時(shí),一些應(yīng)用要求處理器有比較高的計(jì)算能力,還要求系統(tǒng)能有很好的實(shí)時(shí)性,甚至在MPU上使用RTOS。此種應(yīng)用場(chǎng)景下,如果RTOS支持CPU周期級(jí)別的分辨率,這實(shí)際上可以進(jìn)一步提升系統(tǒng)的實(shí)時(shí)性。而且,在針對(duì)一些外設(shè)的處理上,使用微秒級(jí)的延遲,還能提高CPU的使用效率,擴(kuò)展了RTOS的潛在應(yīng)用范圍。
審核編輯 :李倩
-
mcu
+關(guān)注
關(guān)注
147文章
18779瀏覽量
392819 -
高分辨率
+關(guān)注
關(guān)注
0文章
59瀏覽量
15710 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3365瀏覽量
122344
原文標(biāo)題:embOS-Ultra:高分辨率系統(tǒng)時(shí)間
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何在Zephyr RTOS中實(shí)現(xiàn)延時(shí)和計(jì)時(shí)函數(shù)
RTOS在嵌入式開發(fā)中的作用
使用RTOS時(shí)需要注意的幾點(diǎn)內(nèi)容分享
選擇RTOS的要點(diǎn)
如何在 RTOS 中處理微控制器的低功耗特性
RTOS Crash 問題全維度分析與解決指南
學(xué)習(xí)RTOS的意義?
請(qǐng)問編譯純rtos到底是選擇Linux+rtos的sdk編譯only rtos還是直接使用rtos sdk?
下一代PX5 RTOS具有哪些優(yōu)勢(shì)
rtos或rtos&linux能否調(diào)整連接windows后的設(shè)備名稱?
如何在Eclipse ThreadX RTOS中集成SystemView
RTOS如何在FX3中工作?
詳解RTOS中的Hook函數(shù)
RTOS中的本地存儲(chǔ)指針使用
RTOS的系統(tǒng)節(jié)拍
評(píng)論