摘要:嵌入式實(shí)時(shí)操作系統(tǒng)是一個(gè)特殊的程序通常稱為內(nèi)核,它可以創(chuàng)建,銷(xiāo)毀,控制所有任務(wù)。顯示處理函數(shù)運(yùn)行過(guò)程中,定時(shí)器產(chǎn)生中斷,系統(tǒng)進(jìn)入定時(shí)器中斷程序?qū)鞲衅鳂?biāo)志位置。實(shí)時(shí)操作系的子系統(tǒng)將再后續(xù)持續(xù)更新。
嵌入式實(shí)時(shí)操作系統(tǒng)是什么
嵌入式實(shí)時(shí)操作系統(tǒng)是一個(gè)特殊的程序,是一個(gè)支持多任務(wù)的運(yùn)行環(huán)境。嵌入式實(shí)時(shí)操作系統(tǒng)最大的特點(diǎn)就是“實(shí)時(shí)性”,如果有一個(gè)任務(wù)需要執(zhí)行,實(shí)時(shí)操作系統(tǒng)會(huì)立即執(zhí)行該任務(wù),不會(huì)有較長(zhǎng)的延時(shí)。典型的實(shí)時(shí)操作系統(tǒng)有uCOS ,RT-Thread,F(xiàn)reeRTOS ,VxWorks,WinCE等。
嵌入式實(shí)時(shí)操作系統(tǒng)是一個(gè)特殊的程序(通常稱為內(nèi)核),它可以創(chuàng)建,銷(xiāo)毀,控制所有任務(wù)。嵌入式實(shí)時(shí)操作系統(tǒng)除了包含一個(gè)內(nèi)核以外,還提供其他服務(wù),如文件系統(tǒng),協(xié)議棧,圖形用戶界面等。本文的重點(diǎn)在于了解嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核的工作原理和結(jié)構(gòu),因此文中提到的實(shí)時(shí)操作系統(tǒng)通常指的是操作系統(tǒng)內(nèi)核。實(shí)時(shí)操作系統(tǒng)內(nèi)核通常要占用5%左右的CPU運(yùn)行時(shí)間,另外內(nèi)核是一個(gè)軟件代碼,需要額外占用ROM空間和RAM空間。
實(shí)時(shí)性
實(shí)時(shí)性可以定義為:觸發(fā)條件產(chǎn)生后系統(tǒng)的反應(yīng)能力。通俗的描述就是“天下武功唯快不破”,能達(dá)到所需要的“快”就是實(shí)時(shí),在不同的場(chǎng)合需要達(dá)到us級(jí)、ns級(jí)。實(shí)時(shí)系統(tǒng)不僅僅只表現(xiàn)在“快”上,更主要的是實(shí)時(shí)系統(tǒng)需要對(duì)觸發(fā)事件在限定時(shí)間內(nèi)做出反應(yīng),這個(gè)限定時(shí)間是根據(jù)實(shí)際需要來(lái)定,例如自動(dòng)駕駛控制系統(tǒng)的規(guī)定時(shí)間要求很短,需要在極短時(shí)間內(nèi)做出動(dòng)作;一些農(nóng)業(yè)溫度控制系統(tǒng)的規(guī)定時(shí)間要求比較長(zhǎng),需要溫度控制平滑穩(wěn)定。
響應(yīng)時(shí)間
實(shí)時(shí)性越強(qiáng),其響應(yīng)時(shí)間越短。響應(yīng)時(shí)間是指系統(tǒng)識(shí)別到一個(gè)事件到開(kāi)始做出響應(yīng)的時(shí)間。舉一個(gè)簡(jiǎn)單的例子:一個(gè)工控設(shè)備有一個(gè)急停按鍵開(kāi)關(guān),用戶希望按下急停開(kāi)關(guān)的時(shí)候系統(tǒng)立即將停止所有的動(dòng)作,假設(shè)用戶在第1.001秒時(shí)按下了急停開(kāi)關(guān),軟件系統(tǒng)在第1.011秒時(shí)執(zhí)行了停止指令,工控設(shè)備相應(yīng)的機(jī)械部件在1.211秒停止動(dòng)作,此時(shí)軟件系統(tǒng)響應(yīng)時(shí)間為0.01秒,設(shè)備系統(tǒng)響應(yīng)時(shí)間為0.21秒,設(shè)備系統(tǒng)的響應(yīng)時(shí)間和軟件系統(tǒng)的響應(yīng)時(shí)間有一定區(qū)別,通常情況下設(shè)備系統(tǒng)的響應(yīng)時(shí)間>軟件系統(tǒng)的響應(yīng)時(shí)間。本文中提到的響應(yīng)時(shí)間指的是軟件系統(tǒng)的響應(yīng)時(shí)間。
再舉一個(gè)通俗的例子:你在玩王者榮耀,突然發(fā)現(xiàn)對(duì)面打野從草叢中跑出準(zhǔn)備gank你,從你眼睛看到,到手指點(diǎn)擊閃現(xiàn),然后到你的人物閃現(xiàn)到塔下。這就是響應(yīng)時(shí)間,高端職業(yè)玩家可能只需要100ms即可完成整套動(dòng)作,而菜鳥(niǎo)玩家可能需要1000ms來(lái)完成整個(gè)動(dòng)作。
普通的嵌入式軟件架構(gòu)
普通的嵌入式軟件系統(tǒng)通常設(shè)計(jì)成前后臺(tái)結(jié)構(gòu),這個(gè)結(jié)構(gòu)包含一個(gè)死循環(huán)和若干中斷服務(wù)程序:應(yīng)用程序是一個(gè)無(wú)限循環(huán)的代碼塊,循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作(后 臺(tái)),中斷程序用于處理系統(tǒng)的異步事件(前臺(tái))。前臺(tái)稱做中斷級(jí),后臺(tái)稱做任務(wù)級(jí)。下面是一個(gè)典型的前后臺(tái)結(jié)構(gòu)的代碼:
上圖中的代碼的執(zhí)行流程是:
1、判斷按鍵標(biāo)志位,若標(biāo)志位為1就執(zhí)行按鍵處理操作。
2、判斷通訊標(biāo)志位,若標(biāo)志位為1就執(zhí)行通訊處理操作。
3、執(zhí)行LCD顯示操作
4、判斷傳感器標(biāo)志位,若標(biāo)志位為1就執(zhí)行傳感器處理操作。
此代碼中有3個(gè)中斷函數(shù):
1、GPIO外部中斷,當(dāng)按鍵按下后產(chǎn)生一個(gè)中斷,中斷函數(shù)中將鍵標(biāo)志位置1。
2、串口空閑中斷,當(dāng)串口總線空閑時(shí)產(chǎn)生一個(gè)中斷,中斷函數(shù)中將通訊標(biāo)志位置1。
3、定時(shí)器中斷,每500ms周期性產(chǎn)生一個(gè)中斷,中斷函數(shù)中將傳感器標(biāo)志位置1。
代碼執(zhí)行如圖所示:
分析運(yùn)行圖:
1、程序判斷按鍵標(biāo)志位,標(biāo)志位為0,不執(zhí)行按鍵處理函數(shù)。
2、程序判斷通訊標(biāo)志位,標(biāo)志位為0,不執(zhí)行通訊處理函數(shù)。
3、程序執(zhí)行顯示處理函數(shù),此時(shí)用戶按下了按鍵,系統(tǒng)進(jìn)入按鍵中斷程序?qū)存I標(biāo)志位置1,中斷完成后返回顯示處理函數(shù)繼續(xù)運(yùn)行。
4、顯示處理函數(shù)運(yùn)行過(guò)程中,此時(shí)串口接收完一包數(shù)據(jù)產(chǎn)生了一個(gè)空閑中斷,系統(tǒng)進(jìn)入串口空閑中斷程序?qū)⑼ㄓ崢?biāo)志位置1,中斷完成后返回顯示處理函數(shù)繼續(xù)運(yùn)行。
5、顯示處理函數(shù)運(yùn)行過(guò)程中,定時(shí)器產(chǎn)生中斷,系統(tǒng)進(jìn)入定時(shí)器中斷程序?qū)鞲衅鳂?biāo)志位置1。
6、顯示處理函數(shù)執(zhí)行完畢,程序判斷傳感器標(biāo)志位,標(biāo)志位為1,執(zhí)行通訊處理函數(shù)。
7、程序判斷按鍵標(biāo)志位,標(biāo)志位為1,執(zhí)行按鍵處理函數(shù)。
8、程序判斷通訊標(biāo)志位,標(biāo)志位為1,執(zhí)行通訊處理函數(shù)。
9、無(wú)限循環(huán)…
由上述例子可知,按鍵標(biāo)志位和通訊標(biāo)志位就緒后,程序還需要等待顯示函數(shù),傳感器函數(shù)執(zhí)行完畢。即使是按鍵處理函數(shù)的緊急性再高,也需要等待其他函數(shù)執(zhí)行完畢。因此就產(chǎn)生了響應(yīng)延遲,響應(yīng)延遲的時(shí)間隨機(jī)的不確定的,有的時(shí)候時(shí)幾毫秒的時(shí)間,有的時(shí)候是幾百毫秒甚至更長(zhǎng)(如執(zhí)行傳感器讀取),因此需要提高系統(tǒng)的實(shí)時(shí)性。
實(shí)時(shí)操作系統(tǒng)
實(shí)時(shí)操作系可以隨時(shí)剝奪正在運(yùn)行任務(wù)的CPU使用權(quán),并將CPU使用權(quán)交給進(jìn)入就緒狀態(tài)的最高優(yōu)先級(jí)任務(wù),使用操作系統(tǒng)后的運(yùn)行圖如下:
分析運(yùn)行圖:
1、低優(yōu)先級(jí)的顯示任務(wù)正在運(yùn)行,此時(shí)用戶按下了按鍵,系統(tǒng)進(jìn)入按鍵中斷程序給按鍵任務(wù)發(fā)送一個(gè)信號(hào),此時(shí)按鍵任務(wù)進(jìn)入就緒狀態(tài),中斷返回時(shí)切換到按鍵處理任務(wù)中運(yùn)行。
2、按鍵處理任務(wù)正在運(yùn)行,此時(shí)串口接收完一包數(shù)據(jù)產(chǎn)生了一個(gè)空閑中斷,系統(tǒng)進(jìn)入串口空閑中斷程序并給通訊處理任務(wù)發(fā)送一個(gè)信號(hào),通訊處理任務(wù)進(jìn)入就緒狀態(tài),中斷返回時(shí)切換到通訊處理任務(wù)。
3、通訊處理任務(wù)執(zhí)行完畢,放棄CPU使用權(quán)限,此時(shí)切換到按鍵處理任務(wù)。
4、按鍵處理任務(wù)執(zhí)行完畢,放棄CPU使用權(quán)限,此時(shí)切換到顯示處理任務(wù)。
由此可見(jiàn),當(dāng)觸發(fā)產(chǎn)生后實(shí)時(shí)操作系將立即中斷當(dāng)前的任務(wù)并執(zhí)行相應(yīng)的任務(wù)。使用實(shí)時(shí)操作系可以極大的提高軟件系統(tǒng)的實(shí)時(shí)性。
實(shí)時(shí)操作系統(tǒng)組成
實(shí)時(shí)操作系由以下3個(gè)子系統(tǒng)組成(以u(píng)COS和FreeRTOS為參考對(duì)象):
1、任務(wù)調(diào)度子系統(tǒng)
2、任務(wù)通信子系統(tǒng)
3、內(nèi)存管理子系統(tǒng)
任務(wù)調(diào)度子系統(tǒng)主要是維護(hù)兩個(gè)鏈表:就緒表和等待表。切換任務(wù)時(shí)從就緒表中取出最高優(yōu)先級(jí)任務(wù);任務(wù)需要延時(shí)等待時(shí),內(nèi)核將任務(wù)中就緒表中移動(dòng)到等待表中;時(shí)鐘節(jié)拍任務(wù)會(huì)周期性的更新等待表,并將等待時(shí)間完成的任務(wù)從等待表中移動(dòng)到就緒表中。
任務(wù)通訊子系統(tǒng)主要是維護(hù)一個(gè)鏈表:掛起表。任務(wù)需要等待信號(hào)時(shí),內(nèi)核將任務(wù)移動(dòng)到掛起表中,當(dāng)內(nèi)核收到信號(hào)時(shí),內(nèi)核將任務(wù)從掛起表中移動(dòng)到就緒表中。
內(nèi)存管理子系統(tǒng),內(nèi)核提供了幾種動(dòng)態(tài)申請(qǐng)內(nèi)存的方式,防止出現(xiàn)內(nèi)存碎片。
實(shí)時(shí)操作系的子系統(tǒng)將再后續(xù)持續(xù)更新。
創(chuàng)作不易希望朋友們點(diǎn)贊,轉(zhuǎn)發(fā),評(píng)論,關(guān)注。
您的點(diǎn)贊,轉(zhuǎn)發(fā),評(píng)論,關(guān)注將是我持續(xù)更新的動(dòng)力
作者:李巍
Github:liyinuoman2017
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/125574.html
摘要:設(shè)計(jì)一個(gè)完整的需要完成兩部分工作嵌入式系統(tǒng)的硬件初始化和功能。片級(jí)初始化純硬件的初始化過(guò)程,把嵌入式微處理器從上電的默認(rèn)狀態(tài)逐步設(shè)置成系統(tǒng)所要求的工作狀態(tài)。是嵌入式應(yīng)用軟件的基礎(chǔ)和開(kāi)發(fā)平臺(tái)。 一、嵌入式系統(tǒng)基礎(chǔ) 1、嵌入式系統(tǒng)的定義 1.1 ?定義:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可...
摘要:自年以來(lái),在智能家居市場(chǎng)的驅(qū)動(dòng)下,智能貓眼市場(chǎng)膨脹速度驚人。移動(dòng)偵測(cè)即人體感應(yīng)當(dāng)有人經(jīng)過(guò)門(mén)前時(shí)會(huì)自動(dòng)啟動(dòng)拍照或者錄像功能記錄來(lái)訪者。而實(shí)時(shí)操作系統(tǒng)內(nèi)核小巧,對(duì)任何中斷指令都可以做到馬上響應(yīng),系統(tǒng)啟動(dòng)時(shí)間則只有幾秒鐘。 1、背景 ????隨著人工智能的迅速發(fā)展,智能家居的時(shí)代已經(jīng)到來(lái),除了智...
摘要:今天痞子衡給大家分享的是系統(tǒng)中斷延遲及其測(cè)量方法。至此,系統(tǒng)中斷延遲及其測(cè)量方法痞子衡便介紹完畢了,掌聲在哪里歡迎訂閱歡迎訂閱文章會(huì)同時(shí)發(fā)布到我的博客園主頁(yè)主頁(yè)知乎主頁(yè)微信公眾號(hào)平臺(tái)上?! 〈蠹液?,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是Cortex-M系統(tǒng)中斷延遲及其測(cè)量方法?! ≡谇度胧筋I(lǐng)域里,實(shí)時(shí)性是個(gè)經(jīng)常被我們掛在嘴邊的概念,這里的實(shí)時(shí)性主要強(qiáng)調(diào)得是當(dāng)外界事件發(fā)生時(shí),...
摘要:另一方面是提供的安全程度。這解決了為功能安全而設(shè)計(jì)的絕大多數(shù)設(shè)備用例。項(xiàng)目已經(jīng)開(kāi)始致力于在開(kāi)源環(huán)境中開(kāi)發(fā)功能安全認(rèn)證的。最后,認(rèn)證將建立軟件故障避免和控制措施到目標(biāo)完整性水平。 showImg(https://segmentfault.com/img/bVbpvvs?w=137&h=174);作者:Amber Hibberd,博士。英特爾功能安全工程經(jīng)理和Zephyr項(xiàng)目成員 免費(fèi)的開(kāi)...
摘要:除了一些線程調(diào)度和線程模型的調(diào)整,我們還需要進(jìn)行業(yè)務(wù)邏輯上的優(yōu)化,比如縮減高消耗,低反饋的業(yè)務(wù)模塊,降低消耗,限制業(yè)務(wù)邏輯隊(duì)列內(nèi)存分配增長(zhǎng)空間,避免某些業(yè)務(wù)場(chǎng)景中內(nèi)存持續(xù)增長(zhǎng)導(dǎo)致系統(tǒng)奔潰。 1、HaaS RTC背景介紹 HaaS RTC是阿里云IoT聯(lián)合視頻云開(kāi)發(fā)的IoT設(shè)備端上的實(shí)時(shí)通...
閱讀 3980·2023-01-11 11:02
閱讀 4483·2023-01-11 11:02
閱讀 3363·2023-01-11 11:02
閱讀 5380·2023-01-11 11:02
閱讀 4943·2023-01-11 11:02
閱讀 5871·2023-01-11 11:02
閱讀 5561·2023-01-11 11:02
閱讀 4378·2023-01-11 11:02