|
關(guān)注+星標(biāo)公眾號(hào),不錯(cuò)過精彩內(nèi)容作者 | 付斌來源 | 電子工程世界古人云:“天時(shí)、地利、人和,缺一不可”。嵌入式RTOS(Real Time Operating System,實(shí)時(shí)操作系統(tǒng))便借風(fēng)起勢(shì),在最近幾年大放異彩。嵌入式MCU,早已脫離主頻只有8MHz的時(shí)代,當(dāng)下嵌入式主控芯片里面,主頻已經(jīng)可以高達(dá)600MHz,而普通MCU也可以輕松運(yùn)行在64MHz。不止主頻有質(zhì)的飛躍,而且Arm Cortex-M系列的MCU,其在內(nèi)核設(shè)計(jì)初期亦添加了支持RTOS的原生內(nèi)核指令。不過,雖然說RTOS叫“實(shí)時(shí)操作系統(tǒng)”,真的實(shí)時(shí)(Real-time)嗎?這里的實(shí)時(shí)又指代什么?最近,EEWorld論壇的工程師圍繞RTOS這一話題,進(jìn)行了一次討論,話題包括RTOS能做什么,實(shí)時(shí)性指的是是什么,根據(jù)實(shí)時(shí)性RTOS分為幾種,自己對(duì)于RTOS的理解是什么。(原帖地址:https://www.eeworld.com.cn/a0a54CC)
搞清裸機(jī)、RTOS、GPOS
想要搞清楚RTOS的“實(shí)時(shí)”,先要明白目前嵌入式領(lǐng)域三種開發(fā)形式——裸機(jī)開發(fā)(Bare Metal)、RTOS、GPOS(General-Purpose Operating System,通用操作系統(tǒng)),其主要特點(diǎn)如下:裸機(jī):裸機(jī)系統(tǒng)不使用操作系統(tǒng)。相反,應(yīng)用程序代碼直接在硬件上運(yùn)行,無需操作系統(tǒng)支持,代碼可以直接與硬件交互并訪問硬件。裸機(jī)開發(fā)在資源受限的場(chǎng)景效果非常好,比如8位、16位MCU,或者只有32KB閃存、2KB RAM時(shí)。當(dāng)然,資源很豐富時(shí)候也可以采用裸機(jī)開發(fā),就比如系統(tǒng)擁有高度的實(shí)時(shí)要求。目前,EEWorld論壇便擁有許多青睞于在裸機(jī)上開發(fā)的工程師。RTOS:顧名思義,旨在為實(shí)時(shí)應(yīng)用程序提供服務(wù),這些應(yīng)用程序提供可預(yù)測(cè)的執(zhí)行時(shí)間和時(shí)間敏感型應(yīng)用程序,其的關(guān)鍵特征在于響應(yīng)性和確定性。相比裸機(jī),RTOS更方便。要使用RTOS,系統(tǒng)應(yīng)至少擁有 64 KB閃存、4 KB RAM和80 MHz或更高的處理器時(shí)鐘。RTOS通常用于比裸機(jī)更復(fù)雜時(shí)序要求的系統(tǒng),通常需處理TCP/IP、MQTT、USB、Wi-Fi 等通信堆棧時(shí)管理實(shí)時(shí)需求。雖然裸機(jī)也能開發(fā)這種系統(tǒng),但RTOS可以簡化設(shè)計(jì),加快上市時(shí)間,并使軟件維護(hù)更容易。RTOS的另外關(guān)鍵點(diǎn)在于軟件開發(fā)添加的功能,如務(wù)管理、任務(wù)同步、調(diào)度和任務(wù)間通信。RTOS允許考慮相互搶占的任務(wù),從而允許更復(fù)雜的應(yīng)用程序設(shè)計(jì)。GPOS:主要包括Linux、Windows等,旨在運(yùn)行各種軟件應(yīng)用程序。這些操作系統(tǒng)專為用戶交互而設(shè)計(jì),提供某種界面,無論是命令行界面 (CLI) 還是圖形用戶界面 (GUI),旨在運(yùn)行多個(gè)應(yīng)用程序(通常具有多線程),并提供其他優(yōu)勢(shì),例如資源/文件管理和設(shè)備驅(qū)動(dòng)程序。用戶交互通常是 GPOS 設(shè)計(jì)的主要關(guān)注點(diǎn),因此一些延遲是可以接受的。同時(shí),硬件也通常是32位以上處理器,主頻達(dá)到200MHz以上,閃存達(dá)到數(shù)兆。因?yàn)長inux本身比較復(fù)雜,所以也誕生了介于RTOS和Linux之間的實(shí)時(shí)Linux(如Ubuntu的實(shí)時(shí)Linux)。實(shí)時(shí)Linux的核心概念是“搶占”,也就是中斷當(dāng)前執(zhí)行線程,立即處理優(yōu)先級(jí)較高的事件。RTOS和實(shí)時(shí)Linux之間的選擇取決于系統(tǒng)特定延遲要求,以及對(duì)開銷和資源效率的需求。雖然實(shí)時(shí)Linux為許多場(chǎng)景提供了強(qiáng)大的解決方案,但在某些關(guān)鍵的嵌入式系統(tǒng)中,專用 RTOS可能仍然更可取。如果項(xiàng)目需要在實(shí)時(shí)需求和運(yùn)行各種應(yīng)用程序的靈活性之間取得平衡,那么實(shí)時(shí)Linux將提供更通用的解決方案。
jtkaigxltpb6405153345.png (108.64 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
jtkaigxltpb6405153345.png
昨天 07:37 上傳
RTOS不能做什么
從裸機(jī)到RTOS,實(shí)際上工程師會(huì)存在許多困惑,EEWorld論壇中,工程師jorya_txj就曾用自己過去的經(jīng)歷,訴說自己對(duì)于RTOS的理解:他表示,目前接觸了幾位從裸機(jī)轉(zhuǎn)向RTOS的人士,接觸了一些項(xiàng)目,有一些感想,對(duì)于不了解RTOS的人,可能感覺這個(gè)東西很神秘,能解決任何裸奔解決不了的事情,可事情往往不是這樣的。裸奔只做一件事情是最有效率的,如果干一件事情裸奔都很吃力,rtos解決不了硬件負(fù)債的事情,相反使用rtos會(huì)更差。舉例說明,假設(shè)系統(tǒng)有一個(gè)20us頻率的中斷在cortex-m3 上面,中斷內(nèi)最大耗時(shí)10us。那中斷內(nèi)留給rtos的只有10us了,這10us內(nèi)還需要調(diào)用rtos的隊(duì)列發(fā)送api。雖然有的系統(tǒng)能響應(yīng)20us中斷,但是保證不了10us內(nèi)能完成api的調(diào)用以及出中斷處理。即使能保證,外面任務(wù)的執(zhí)行效率將會(huì)很差很差。絕大部分的RTOS做不了1us以內(nèi)的中斷響應(yīng)。也就是說中斷發(fā)生了之后,需要1us就能處理用戶的中斷函數(shù)。上面兩個(gè)例子只能從硬件設(shè)計(jì)上去著手,從根本上去解決這個(gè)問題。比如第一個(gè)問題可以采用專用的芯片或者控制器去降低中斷的頻率。第二個(gè)問題可以采用FPGA去完成精確地定時(shí)等等。RTOS更像一個(gè)軍隊(duì)管理決策者,而不是一個(gè)沖鋒在前面的勇士。一個(gè)系統(tǒng)越趨向復(fù)雜RTOS的優(yōu)勢(shì)越大,一個(gè)系統(tǒng)越趨向簡單,ROTS越無用武之地。RTOS很多時(shí)候不是救命稻草,硬件設(shè)計(jì)的問題還是需要硬件設(shè)計(jì)去解決,不能僥幸?guī)У杰浖@邊去解決,即使軟件僥幸能解決這一次,下一次可能又解決不了了,不具備通用性。
關(guān)于實(shí)時(shí),工程師的疑問
EEWorld論壇上,資深工程師辛昕曾發(fā)帖專門討論過這樣的問題——“實(shí)時(shí)”到底是什么。當(dāng)有人問他,“實(shí)時(shí)”到底是啥時(shí),他一股腦地回答道:“就是反應(yīng)快唄,比如打開網(wǎng)頁,最好是1ms都不要等......”但得來的回應(yīng)是連實(shí)時(shí)是啥都不懂。實(shí)際上,實(shí)時(shí)性是指在規(guī)定的時(shí)間內(nèi)響應(yīng),而不是說什么越快越好。根據(jù)響應(yīng)時(shí)間在微秒、毫秒和秒級(jí)的不同,系統(tǒng)的實(shí)時(shí)性響應(yīng)分為三種,RTOS屬于硬實(shí)時(shí):第一種是硬實(shí)時(shí)(Hard real-time),是對(duì)即時(shí)的事件作出反應(yīng),絕對(duì)不能錯(cuò)過事件處理時(shí)限,任何錯(cuò)過的最后期限視為系統(tǒng)故障。就是接近我們平素談到的RTOS的及時(shí)響應(yīng),它不是強(qiáng)調(diào)反映有多快,而是要在規(guī)定的死限時(shí)間之前完成就可以了。第二種是軟實(shí)時(shí)(Soft real-time),是允許經(jīng)常錯(cuò)過最后期限,只要任務(wù)及時(shí)執(zhí)行,它們的結(jié)果就會(huì)繼續(xù)有價(jià)值。接近WINDOWS、Linux桌面版這類常用系統(tǒng),軟實(shí)時(shí)是指統(tǒng)計(jì)意義上的實(shí)時(shí),一般整體吞吐量大或整體響應(yīng)速度快,但不能保證特定的任務(wù)在指定的時(shí)間內(nèi)完成。第三種是準(zhǔn)實(shí)時(shí)(Firm real-time),即使系統(tǒng)未能滿足最后期限,可能不止一次(即對(duì)于多個(gè)請(qǐng)求),系統(tǒng)也不會(huì)被視為失敗。此外,一旦特定請(qǐng)求的截止日期已過,對(duì)請(qǐng)求的響應(yīng)(對(duì)查詢的答復(fù)、任務(wù)的結(jié)果等)將毫無價(jià)值(在截止日期之后結(jié)果的有用性為零)。
其他工程師則對(duì)實(shí)時(shí)也有自己理解。他們認(rèn)為,實(shí)時(shí)就是系統(tǒng)對(duì)事件的響應(yīng)時(shí)間能滿足需求,這樣就可以看作是實(shí)時(shí),因?yàn)槭录偸悄軌蛟谙薅ǖ臅r(shí)間內(nèi)得到響應(yīng)處理。具體的說,每一個(gè)事件的響應(yīng)時(shí)間,跟現(xiàn)實(shí)時(shí)間是確定關(guān)系。在正常工作環(huán)境中,不會(huì)出現(xiàn)不確定,這樣的系統(tǒng)就叫做實(shí)時(shí)系統(tǒng)。所以,可以說,所謂的實(shí)時(shí),并非真的實(shí)時(shí)。知名嵌入式工程師StrongerHuang也同樣寫過:嚴(yán)格來說,RTOS也不是實(shí)時(shí)響應(yīng)并處理緊急的事情,只是在很短時(shí)間(一般ms級(jí)別)就做出了響應(yīng),給人感覺就是實(shí)時(shí)在響應(yīng)。比如說,RTOS實(shí)時(shí)響應(yīng)的重要配置系統(tǒng)滴答(SysTick),按理來說,系統(tǒng)滴答值(節(jié)拍)越大響應(yīng)越快,但系統(tǒng)調(diào)度也需要占用時(shí)間,所以,滴答值也不是越大越好。再比如,用中斷就能做到實(shí)時(shí)響應(yīng),但硬件中斷只能做出一個(gè)“緊急通知”,不能做出(耗時(shí)的)執(zhí)行動(dòng)作。另據(jù)其他工程師分享,RTOS的實(shí)時(shí)是指時(shí)間可控,能在某個(gè)需求時(shí)間窗口內(nèi)執(zhí)行完成。而不是指立刻執(zhí)行,所以RTOS是實(shí)時(shí)操作系統(tǒng)。硬件中斷退出后立即執(zhí)行高優(yōu)先級(jí)任務(wù),所以優(yōu)先級(jí)配置合理的話,能在us甚至ns級(jí)響應(yīng)。其實(shí)寫得好得裸機(jī)響應(yīng)跟RTOS差不多,但RTOS最大的優(yōu)勢(shì)在于任務(wù)調(diào)度,當(dāng)功能復(fù)雜時(shí)可以通過操作系統(tǒng)調(diào)度而不用擔(dān)心任務(wù)沖突。
RTOS的四種分類
實(shí)際上,RTOS本身也會(huì)按響應(yīng)級(jí)別分為四種類型,它們用于不同類型的嵌入式系統(tǒng):1.硬實(shí)時(shí)操作系統(tǒng)(Hard RTOS):硬實(shí)時(shí)操作系統(tǒng)廣泛用于負(fù)責(zé)處理關(guān)鍵任務(wù)和要求精確時(shí)間限制的嵌入式解決方案。這意味著某些事件必須在預(yù)定的時(shí)刻執(zhí)行,而不是早或晚一秒執(zhí)行,因?yàn)檫@會(huì)導(dǎo)致嚴(yán)重問題甚至對(duì)系統(tǒng)造成物理損壞。案例包括汽車巡航控制和鐵路信號(hào)系統(tǒng)。2. 軟實(shí)時(shí)操作系統(tǒng)(Soft RTOS):軟實(shí)時(shí)操作系統(tǒng)適用于嵌入式系統(tǒng),其中缺少預(yù)定義的時(shí)間限制不會(huì)嚴(yán)重影響相關(guān)流程和整體系統(tǒng)運(yùn)行。它允許設(shè)置執(zhí)行特定任務(wù)的時(shí)間截止日期,但錯(cuò)過這些截止日期不會(huì)停止系統(tǒng)運(yùn)行。例如機(jī)上娛樂和語音聊天應(yīng)用程序。3. 準(zhǔn)實(shí)時(shí)操作系統(tǒng)(Firm RTOS):準(zhǔn)實(shí)時(shí)操作系統(tǒng)是硬RTOS和軟RTOS的中間地帶,其工作原理如下:使用準(zhǔn)RTOS時(shí),系統(tǒng)任務(wù)可能會(huì)錯(cuò)過最后期限,而不會(huì)對(duì)流程和系統(tǒng)運(yùn)行產(chǎn)生影響。然而,可以錯(cuò)過的任務(wù)數(shù)量是有限的,如果它們超過允許的數(shù)量,將導(dǎo)致嚴(yán)重的系統(tǒng)錯(cuò)誤和延遲。例子包括機(jī)器人裝配線和電信網(wǎng)絡(luò)。4. 確定性實(shí)時(shí)操作系統(tǒng)(Deterministic RTOS):確定性實(shí)時(shí)操作系統(tǒng)與時(shí)序必須始終精確的嵌入式系統(tǒng)完美匹配。這種類型的實(shí)時(shí)嵌入式編程允許預(yù)測(cè)執(zhí)行不同優(yōu)先級(jí)和復(fù)雜性的任務(wù)所需的時(shí)間。確定性調(diào)度將使我們能夠設(shè)置準(zhǔn)確執(zhí)行關(guān)鍵任務(wù)的時(shí)間框架。它使嵌入式系統(tǒng)運(yùn)行可預(yù)測(cè)、穩(wěn)定可靠。
zolbtknudpy6405153445.png (159.79 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
zolbtknudpy6405153445.png
昨天 07:37 上傳
參考文獻(xiàn)
[1]https://bbs.eeworld.com.cn/thread-1300391-1-1.html[2]https://bbs.eeworld.com.cn/thread-473427-1-1.html[3]https://bbs.eeworld.com.cn/thread-428154-1-1.html[4]https://www.digikey.com/en/maker/projects/what-is-a-realtime-operating-system-rtos/28d8087f53844decafa5000d89608016[5]https://www.beningo.com/how-to-choose-between-bare-metal-rtos-and-gpos/[6]https://mp.weixin.qq.com/s/PUwee79SWTj7diXS02knIw[7]https://lembergsolutions.com/blog/choosing-right-rtos-your-embedded-system
------------ END ------------
zjmwwqgga2q6405153545.gif (71.87 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
zjmwwqgga2q6405153545.gif
昨天 07:37 上傳
●專欄《嵌入式工具》●專欄《嵌入式開發(fā)》●專欄《Keil教程》●嵌入式專欄精選教程
關(guān)注公眾號(hào)回復(fù)“加群”按規(guī)則加入技術(shù)交流群,回復(fù)“1024”查看更多內(nèi)容。
點(diǎn)擊“閱讀原文”查看更多分享。 |
|