你在使用實(shí)時(shí)操作系統(tǒng)(RTOS)時(shí)是否發(fā)現(xiàn)無法將任務(wù)調(diào)度或延遲精度降到毫秒以下?你可能不得不在RTOS之外編寫大量應(yīng)用代碼。雖然這種方式可行,但這會(huì)讓你懷疑應(yīng)用程序是否滿足其截止期限,是否可維護(hù)和可擴(kuò)展。RTOS不應(yīng)該能夠管理整個(gè)應(yīng)用程序的時(shí)間嗎,不管這個(gè)時(shí)間是一秒還是一微秒?
對(duì)于嵌入式系統(tǒng)領(lǐng)域的開發(fā)和管理人員來說,平衡時(shí)間精度和能源效率可能是一項(xiàng)持續(xù)的斗爭。隨著應(yīng)用的發(fā)展,無論是在汽車、物聯(lián)網(wǎng)、醫(yī)療設(shè)備還是工業(yè)自動(dòng)化領(lǐng)域,對(duì)精確定時(shí)控制的需求都在增長。雖然傳統(tǒng)的RTOS解決方案在管理實(shí)時(shí)任務(wù)方面很有效,但在這兩個(gè)關(guān)鍵領(lǐng)域往往存在不足。
1. 傳統(tǒng)RTOS的不足
首先,傳統(tǒng)RTOS有精度限制。基于滴答的系統(tǒng)不能提供超出滴答(Tick)間隔(如1毫秒)的時(shí)間粒度。這種限制影響了執(zhí)行超精細(xì)定時(shí)操作的能力,例如精密傳感器讀數(shù)或先進(jìn)機(jī)器人的高分辨率控制。事實(shí)上,如果不仔細(xì),你甚至可能任務(wù)時(shí)序中注入抖動(dòng),從而破壞系統(tǒng)的實(shí)時(shí)性能!
其次,基于滴答的RTOS能效低!即使沒有任務(wù)調(diào)度,周期系統(tǒng)滴答中斷也會(huì)使CPU保持活動(dòng)狀態(tài),從而導(dǎo)致能源浪費(fèi),這在電池供電和低功耗設(shè)備中尤為嚴(yán)重。雖然一些RTOS試圖通過引入tickless省電模式來克服這個(gè)缺陷,但這些解決方案更多的是權(quán)宜之計(jì),而不是完整的功能。
這些限制迫使開發(fā)人員采用效率低下的解決方案,例如輪詢硬件計(jì)時(shí)器或使用特定于目標(biāo)的技術(shù)來實(shí)現(xiàn)更高的分辨率和更低的功耗,這種方法使開發(fā)過程復(fù)雜化,降低了軟件的可移植性和可維護(hù)性。
本文中,我們將探索一種新的機(jī)制來精確地調(diào)度低于一毫秒的任務(wù),這種機(jī)制可以提高應(yīng)用程序的實(shí)時(shí)性能,同時(shí)提高能效,其好處來自于利用周期精度定時(shí)的新RTOS實(shí)現(xiàn)。
2. 從基于滴答的調(diào)度到基于周期的調(diào)度
傳統(tǒng)的RTOS使用周期性的系統(tǒng)滴答來跟蹤時(shí)間和調(diào)度任務(wù)。例如,大多數(shù)RTOS,如FreeRTOS、Zephyr和embOS-Base,默認(rèn)使用1毫秒的滴答間隔。這個(gè)間隔依賴于每毫秒產(chǎn)生一次中斷的計(jì)時(shí)器。所有時(shí)間相關(guān)的操作(任務(wù)延遲、超時(shí)和軟件計(jì)時(shí)器)都與滴答對(duì)齊。如果我們使用SEGGER SystemView這樣的工具來記錄和分析應(yīng)用程序的運(yùn)行時(shí)行為,將看到類似圖1所示的內(nèi)容。
圖1:使用周期滴答來跟蹤系統(tǒng)時(shí)間的傳統(tǒng)RTOS
如圖所示,系統(tǒng)每隔一毫秒就會(huì)中斷一次應(yīng)用,如果系統(tǒng)處于睡眠狀態(tài)并且沒有其他的工作要做,它也會(huì)被喚醒以增加計(jì)數(shù)并返回睡眠狀態(tài)!
基于滴答的設(shè)計(jì)限制了計(jì)時(shí)精度,并引入了延遲,因?yàn)椴荒芤员鹊未痖g隔更細(xì)的粒度調(diào)度任務(wù),這是我在許多應(yīng)用中遇到的一個(gè)問題,它迫使你思考RTOS之外的實(shí)現(xiàn)。
基于周期的調(diào)度通過用單次硬件定時(shí)器(single-shot hardware timer)代替周期滴答中斷消除了這種約束。計(jì)時(shí)器只在需要時(shí)產(chǎn)生中斷,而非每毫秒喚醒CPU,從而允許將事件調(diào)度精確到微秒或CPU周期。這種方法提高了精度,減少了CPU的活動(dòng),節(jié)約了能源。
讓我們來看一個(gè)例子。考慮一個(gè)需要持續(xù)4.7毫秒的任務(wù)延遲。在擁有1毫秒滴答間隔的RTOS中,延遲要么提前結(jié)束(4毫秒),要么延長(5毫秒),具體取決于滴答計(jì)時(shí)。使用基于周期的調(diào)度可以實(shí)現(xiàn)精確的4.7毫秒延遲,因?yàn)樗辉僖蕾囉诘未痖g隔。
3. embOS-Ultra:高精度和高效率的技術(shù)解決方案
如果調(diào)查當(dāng)今的RTOS市場,你會(huì)發(fā)現(xiàn)SEGGER的embOS-Ultra是唯一支持基于周期調(diào)度的RTOS。因此,我們將關(guān)注embOS-Ultra如何通過引入周期分辨率定時(shí)來解決精度和效率方面的挑戰(zhàn),以及這種創(chuàng)新方法如何改善應(yīng)用。
讓我們來分析一下embOS-Ultra是如何在不增加不必要復(fù)雜性的情況下解決精度和效率問題。
通過單次計(jì)時(shí)器提高能效
通過移除周期滴答,embOS-Ultra顯著降低了CPU負(fù)載。即使沒有待處理的工作,傳統(tǒng)的RTOS也會(huì)在每個(gè)滴答喚醒CPU,這種行為增加了功耗,因?yàn)镃PU必須保存其當(dāng)前狀態(tài),處理中斷,并恢復(fù)其狀態(tài),這些不必要的CPU周期消耗了能量。
embOS-Ultra的單次計(jì)時(shí)器僅在特定事件發(fā)生時(shí)喚醒CPU,使系統(tǒng)長時(shí)間處于低功耗狀態(tài)。這一特性對(duì)于低功耗和電池供電的應(yīng)用尤其有利,例如可穿戴設(shè)備或遠(yuǎn)程物聯(lián)網(wǎng)傳感器,在這些應(yīng)用中,節(jié)省的每一點(diǎn)能量都將延長運(yùn)行時(shí)間。然而,即使是連接到恒定電源的設(shè)備也可以通過降低其整體能量配置和減少對(duì)電網(wǎng)的需求而受益。
在許多微控制器架構(gòu)中,計(jì)時(shí)器可以配置為各種模式。EmbOS-Ultra利用定時(shí)器計(jì)數(shù)到零或到指定值的模式,在需要時(shí)觸發(fā)中斷。這種靈活性使開發(fā)人員能夠精確地控制時(shí)間事件,而不依賴于周期滴答。正如想象的那樣,允許計(jì)時(shí)器自由計(jì)數(shù)用于調(diào)度,比計(jì)數(shù)為零后重置更有好處。
維護(hù)系統(tǒng)的長期穩(wěn)定性
你可能會(huì)認(rèn)為,雖然使用單個(gè)計(jì)時(shí)器來提供高分辨率、亞毫秒級(jí)的調(diào)度聽起來很棒,但丟失系統(tǒng)滴答將破壞應(yīng)用程序。好消息是它不會(huì),embOS-Ultra使用兩個(gè)硬件計(jì)時(shí)器。一個(gè)計(jì)時(shí)器用于長期連續(xù)運(yùn)行而不產(chǎn)生中斷。第二個(gè)計(jì)時(shí)器,即我們?cè)谇耙还?jié)中討論的單次計(jì)時(shí)器,用于任務(wù)調(diào)度。
這意味著沒有復(fù)雜的算法在后臺(tái)運(yùn)行,試圖確定自系統(tǒng)啟動(dòng)以來已經(jīng)過了多少毫秒。誠實(shí)地說:我們大多數(shù)人都利用系統(tǒng)滴答來提供時(shí)間戳、計(jì)算過濾器和執(zhí)行其他日常活動(dòng)。如果從RTOS中刪除它,我們的開發(fā)將變得更加困難。
添加第二個(gè)計(jì)時(shí)器似乎會(huì)增加系統(tǒng)的復(fù)雜性和能效,但事實(shí)并非如此。如今,大多數(shù)32位微控制器擁有多個(gè)計(jì)時(shí)器,而且與CPU相比,計(jì)數(shù)器使用的電流很少。使用第二計(jì)時(shí)器的權(quán)衡仍然確保我們最大限度地減少能耗,同時(shí)保持系統(tǒng)實(shí)時(shí)性能的長期穩(wěn)定性。
4. 基于周期調(diào)度的應(yīng)用
了解了周期調(diào)度如何工作后,我們來研究一個(gè)示例。SEGGER的網(wǎng)站上提供了一個(gè)live comparison示例(https://www.segger.com/products/rtos/embos/editions/embos-ultra/#live-comparison),模擬滴答調(diào)度和周期調(diào)度行為。我建議嘗試一下,獲得一些實(shí)際操作經(jīng)驗(yàn)。
Live comparison示例允許你通過print語句查看每秒產(chǎn)生了多少次滴答。測試應(yīng)用包含兩個(gè)任務(wù):一個(gè)201毫秒的任務(wù)和一個(gè)50毫秒的任務(wù)。基于滴答的調(diào)度器,每秒1000個(gè)節(jié)拍。如果使用基于周期的調(diào)度來模擬相同的應(yīng)用程序,則每秒只能獲得24 - 25個(gè)節(jié)拍。
遺憾的是,對(duì)于模擬程序,無法使用SystemView來記錄和分析應(yīng)用程序行為,因此,我使用live comparison示例運(yùn)行在開發(fā)板上來分析周期調(diào)度。結(jié)果如圖2所示:
圖2:圖1所示的相同應(yīng)用程序的基于周期調(diào)度實(shí)現(xiàn)
如果查看圖2中分析窗口底部的計(jì)時(shí)差異,你將看到系統(tǒng)的滴答間隔不是固定的。只有在必要時(shí)才有一個(gè)滴答,在圖2的底部可以看到,滴答之間有49.9毫秒的間隔,然后是16.9毫秒的延遲,以此類推。這是基于周期的計(jì)時(shí)!基于周期的調(diào)度應(yīng)用程序每秒只有24 - 25個(gè)滴答,具體取決于任務(wù)的截止時(shí)限。
5. 使用基于周期的調(diào)度,同時(shí)保持向后兼容性
遷移到新的RTOS帶來的風(fēng)險(xiǎn)和復(fù)雜性,可能是開發(fā)人員和管理人員非常關(guān)心的問題。embOS-Ultra通過在提供擴(kuò)展功能的同時(shí)保持與現(xiàn)有API兼容來解決這個(gè)問題。
首先,對(duì)使用embOS-Base或其他滴答RTOS API的應(yīng)用程序,可以在embOS-Ultra中繼續(xù)發(fā)揮預(yù)期的作用。embOS-Ultra中保留了基于毫秒的計(jì)時(shí)功能,確保已有代碼無需修改。如果使用的是embOS-Base,則API直接兼容。如果使用其它RTOS,你可能會(huì)有一天左右的時(shí)間將RTOS調(diào)用更新為embOS-Ultra。
其次,對(duì)于需要更高精度的開發(fā)人員,embOS-Ultra引入了擴(kuò)展的API,例如用于微秒延遲的OS_TASK_Delay_us()或用于周期調(diào)度的OS_TASK_Delay_Cycles()。這些函數(shù)與傳統(tǒng)API調(diào)用共存,允許開發(fā)人員在不修改整個(gè)代碼庫的情況下逐步采用高級(jí)功能。
讓我們來看一個(gè)例子。假設(shè)我們想每1,000,000個(gè)周期向終端發(fā)送一次打印“Hello World!”,我可能會(huì)用下面的語法創(chuàng)建一個(gè)名為Hello的RTOS任務(wù):
OS_TASK_Delay_Cycles以周期方式指定了任務(wù)掛起操作的最小時(shí)間間隔,因此,當(dāng)調(diào)用OS_TASK_Delay_Cycles時(shí),如果系統(tǒng)周期計(jì)數(shù)為1,000,000,則100萬周期的延遲將在系統(tǒng)周期計(jì)數(shù)為2,000,000時(shí)到期。
注意,作為開發(fā)人員,你可以控制單個(gè)周期所代表的時(shí)間間隔。它可以是單個(gè)CPU周期,也可以是更長的時(shí)間,這取決于你如何為使用的計(jì)時(shí)器配置時(shí)鐘分頻器。好消息是,SEGGER為各種微控制器提供了許多移植實(shí)現(xiàn),所以你不必自己編寫這些;只有當(dāng)默認(rèn)值不能滿足需要時(shí),才需要知道如何通過API來調(diào)整。
這種雙重計(jì)時(shí)方法意味著工程師不必在傳統(tǒng)實(shí)現(xiàn)和高精度之間做出選擇,他們可以在同一應(yīng)用中同時(shí)使用這兩種方法。無論是從embOS-Base還是其他基于滴答的系統(tǒng)(如CMSIS-RTOS)遷移,開發(fā)人員都可以很方便的使用embOS-Ultra,因?yàn)楸匾膽?yīng)用更改很小且簡單。
6. 下一步工作
基于周期的調(diào)度代表了一種技術(shù)進(jìn)步,它解決了開發(fā)人員和管理人員在當(dāng)今嵌入式系統(tǒng)中面臨的核心挑戰(zhàn),在實(shí)現(xiàn)微秒精度的同時(shí)最大限度地提高能效。通過消除傳統(tǒng)的系統(tǒng)滴答,并提供靈活的、基于周期的方法,embOS-Ultra提供了一種精確、節(jié)能且與現(xiàn)有RTOS設(shè)置兼容的解決方案。
基于周期的調(diào)度為希望在沒有復(fù)雜遷移風(fēng)險(xiǎn)的情況下提高系統(tǒng)的性能和能源配置的嵌入式專業(yè)人員提供了一種實(shí)用而先進(jìn)的替代方案。你可以通過下列步驟了解更多關(guān)于周期調(diào)度的信息。
首先,查看embOS-Ultra RTOS手冊(cè)(https://www.segger.com/downloads/embos/UM01076_embOS_Ultra.pdf),它包含了許多示例,描述了高精度和周期調(diào)度如何工作。
接下來,可以下載并試用基于SEGGER的示例仿真項(xiàng)目(https://www.segger.com/products/rtos/embos/editions/embos-ultra/#live-comparison),你可以使用它來測試embOS-Base和embOS-Ultra之間的差異,甚至可以在開發(fā)板上嘗試。
最后,確認(rèn)了更精確的計(jì)時(shí)和節(jié)能的好處后,即可在嵌入式系統(tǒng)采用基于周期計(jì)時(shí)功能了。
-
RTOS
+關(guān)注
關(guān)注
22文章
819瀏覽量
119884 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3292瀏覽量
57911
原文標(biāo)題:一種實(shí)現(xiàn)亞毫秒定時(shí)分辨率的RTOS新方法
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何提高透鏡成像的分辨率
一種降低VIO/VSLAM系統(tǒng)漂移的新方法
![<b class='flag-5'>一種</b>降低VIO/VSLAM系統(tǒng)漂移的<b class='flag-5'>新方法</b>](https://file1.elecfans.com/web3/M00/02/32/wKgZO2dbqBOAdkLrAABgnDOmV0Y836.png)
HDMI接口支持哪些視頻分辨率
新型寬帶UV頻率梳提供前所未有的光譜分辨率
![新型寬帶UV頻率梳提供前所未有的光譜<b class='flag-5'>分辨率</b>](https://file1.elecfans.com//web2/M00/0C/DB/wKgaomc9EBCAaTq7AA2Ed8VWQNk185.png)
使用MSP430高分辨率定時(shí)器的PWM DAC
![使用MSP430高<b class='flag-5'>分辨率</b><b class='flag-5'>定時(shí)</b>器的PWM DAC](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
什么是高分辨率示波器?它有哪些優(yōu)勢?
一種無透鏡成像的新方法
![<b class='flag-5'>一種</b>無透鏡成像的<b class='flag-5'>新方法</b>](https://file1.elecfans.com//web2/M00/FD/50/wKgZomaZlSKAXJd7AAD91lO42tY599.jpg)
用于亞波長分辨率的新型衍射成像儀
伺服編碼器分辨率是什么意思
只用STM32的RTC的話,如何讀取到分辨率為毫秒的時(shí)刻?
研究人員發(fā)現(xiàn)提高激光加工分辨率的新方法
![研究人員發(fā)現(xiàn)提高激光加工<b class='flag-5'>分辨率</b>的<b class='flag-5'>新方法</b>](https://file1.elecfans.com//web2/M00/CC/31/wKgZomYgTWuAcGQHAAIBGrGIjdE117.jpg)
EVAL_PASCO2_SENSOR為什么無法從較低的分辨率高速獲得更高的分辨率?
編碼器分辨率是什么意思 編碼器分辨率和脈沖數(shù)的關(guān)系
![編碼器<b class='flag-5'>分辨率</b>是什么意思 編碼器<b class='flag-5'>分辨率</b>和脈沖數(shù)的關(guān)系](https://file1.elecfans.com/web2/M00/C0/7B/wKgZomXVy4aAfh6UAAAyuolyJRI008.png)
臺(tái)階儀:亞埃級(jí)垂直分辨率,新材料納米加工的測量利器!
臺(tái)階儀:亞埃級(jí)垂直分辨率,領(lǐng)跑新材料納米加工的測量利器!
![臺(tái)階儀:<b class='flag-5'>亞</b>埃級(jí)垂直<b class='flag-5'>分辨率</b>,領(lǐng)跑新材料納米加工的測量利器!](https://file1.elecfans.com/web2/M00/C0/22/wKgZomXS6-CAIITgAAA4uil8ejE439.png)
評(píng)論