在實(shí)時(shí)嵌入式系統(tǒng)中,性能和資源效率是決定設(shè)計(jì)成敗的關(guān)鍵因素。傳統(tǒng)的實(shí)時(shí)操作系統(tǒng)(RTOS)提供了如隊(duì)列、信號(hào)量和事件組機(jī)制,實(shí)現(xiàn)任務(wù)之間的同步和通信。FreeRTOS/SAFERTOS還提供一種方法可以使這些過(guò)程更快、更輕量化,即任務(wù)通知。
什么是任務(wù)通知?
任務(wù)通知作為傳統(tǒng)RTOS同步方法的輕量級(jí)替代方案,F(xiàn)reeRTOS/SAFERTOS中的每個(gè)任務(wù)都有一個(gè)32位的通知值。這些通知可用于解除任務(wù)阻塞并以靈活的方式更新其通知值,例如:
?設(shè)置通知值但不覆蓋舊值
?更新通知值
?設(shè)置通知值中的指定位
?通知值加一
其靈活性允許任務(wù)通知在某些用例中取代單獨(dú)創(chuàng)建的同步對(duì)象(如隊(duì)列或信號(hào)量)。如果使用得當(dāng),任務(wù)通知顯著可以提高系統(tǒng)的速度和內(nèi)存效率。
任務(wù)通知vs傳統(tǒng)機(jī)制
二進(jìn)制信號(hào)量:傳統(tǒng)方式中,當(dāng)僅有一個(gè)任務(wù)需要使用信息時(shí),可以使用二進(jìn)制信號(hào)量管理任務(wù)同步。然而,二進(jìn)制信號(hào)量的管理需要一個(gè)隊(duì)列控制結(jié)構(gòu)。使用任務(wù)通知消除了這種結(jié)構(gòu),減少了RAM使用并簡(jiǎn)化了內(nèi)部RTOS進(jìn)程。
事件組:事件組是二進(jìn)制標(biāo)志位的集合,每個(gè)標(biāo)志位都有特定的含義。任務(wù)通知也可以達(dá)到這個(gè)目的。與管理專用的事件組對(duì)象不同,32位任務(wù)通知值可以被視為二進(jìn)制標(biāo)志的集合,從而提供了更有效的替代方法。
任務(wù)通知的優(yōu)勢(shì)
速度:使用任務(wù)通知解除任務(wù)阻塞的速度比使用傳統(tǒng)的二進(jìn)制信號(hào)量快45%。對(duì)于時(shí)間敏感的應(yīng)用程序來(lái)說(shuō),這是一個(gè)顯著的改進(jìn)。
節(jié)省內(nèi)存:任務(wù)通知減少了對(duì)額外的RTOS控制結(jié)構(gòu)(如隊(duì)列或信號(hào)量)的需求,從而減少了RAM使用,這在資源受限的系統(tǒng)中至關(guān)重要。
使用限制
雖然任務(wù)通知提供了實(shí)質(zhì)性的性能改進(jìn),但它們也有一些用例限制:
單接收任務(wù)限制:在事件只有一個(gè)接收任務(wù)時(shí),才能使用任務(wù)通知,不適合多個(gè)任務(wù)需要使用相同事件或通知的場(chǎng)景。
非阻塞發(fā)送:與隊(duì)列不同,如果通知已經(jīng)掛起,任務(wù)通知不會(huì)阻塞發(fā)送任務(wù)。但是,可以將通知配置為“不覆蓋舊值”,確保在前一個(gè)通知處理之前不會(huì)發(fā)送新的通知。
典型應(yīng)用場(chǎng)景
任務(wù)同步:當(dāng)一個(gè)任務(wù)需要通知或解除阻塞另一個(gè)任務(wù)時(shí)。
中斷處理:任務(wù)通知可以用作ISR(中斷服務(wù)程序)和任務(wù)之間的輕量級(jí)二進(jìn)制信號(hào)量,在中斷發(fā)生后解除阻塞任務(wù)。
事件標(biāo)志管理:任務(wù)通知值可以充當(dāng)事件組,其中每個(gè)位代表一個(gè)不同的標(biāo)志,減少了對(duì)指定事件組對(duì)象的需求。
結(jié)論
對(duì)于希望優(yōu)化其嵌入式系統(tǒng)的性能和資源使用的開(kāi)發(fā)人員來(lái)說(shuō),任務(wù)通知是一個(gè)強(qiáng)大的工具。使用任務(wù)通知可以替代只涉及單個(gè)任務(wù)場(chǎng)景的同步機(jī)制,可以顯著改速度和內(nèi)存效率。
在實(shí)時(shí)系統(tǒng)中,每個(gè)毫秒和字節(jié)都很重要,無(wú)論是處理任務(wù)同步、處理ISR還是管理事件標(biāo)志,任務(wù)通知都可以提供一種簡(jiǎn)化且有效的解決方案。
FreeRTOS V10.4.0之后的版本,支持通知數(shù)組。SAFERTOS基于FreeRTOS功能模型的預(yù)認(rèn)證安全實(shí)時(shí)操作系統(tǒng) (RTOS),用戶可以基于FreeRTOS免費(fèi)啟動(dòng)項(xiàng)目,實(shí)現(xiàn)原型驗(yàn)證,并在正式開(kāi)發(fā)開(kāi)始時(shí)升級(jí)到SAFERTOS。
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3683瀏覽量
131382 -
RTOS
+關(guān)注
關(guān)注
24文章
851瀏覽量
121164 -
實(shí)時(shí)操作系統(tǒng)
+關(guān)注
關(guān)注
1文章
202瀏覽量
31334
原文標(biāo)題:使用任務(wù)通知提高RTOS應(yīng)用的效率
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
FreeTRTOS可以通過(guò)哪些方法向接收任務(wù)更新通知呢
能有效提高RTOS性能的方法有哪些?
任務(wù)通知發(fā)送出問(wèn)題怎么辦
任務(wù)通知的問(wèn)題如何解決
RTOS最高優(yōu)先級(jí)就緒任務(wù)查找算法優(yōu)化
LEDs狀態(tài)燈任務(wù)(線程)設(shè)計(jì) (基于RTOS)
FreeRTOS的直接任務(wù)(消息)通知
FreeRTOS系列第14篇---FreeRTOS任務(wù)通知

評(píng)論