實(shí)時(shí)系統(tǒng)必須尊重時(shí)間限制,以確保其執(zhí)行具有功能意義。它必須是確定性的,確保系統(tǒng)進(jìn)程的執(zhí)行先驗(yàn)。在分析了實(shí)時(shí)配置的一般特征后,我們將重點(diǎn)關(guān)注商業(yè)和市場(chǎng)方面,并以實(shí)時(shí) Linux 嵌入式操作系統(tǒng) (OS) 為例。
實(shí)時(shí)操作系統(tǒng) (RTOS) 可以描述為滿足其控制下的進(jìn)程的時(shí)序要求的系統(tǒng)。Linux 并非旨在提供實(shí)時(shí)性能。對(duì)于相對(duì)耗時(shí)的實(shí)時(shí)應(yīng)用程序,如果環(huán)境得到適當(dāng)控制(固定數(shù)量的進(jìn)程、測(cè)試的驅(qū)動(dòng)程序等)可能就足夠了。另一方面,標(biāo)準(zhǔn) Linux 內(nèi)核對(duì)于需要極快響應(yīng)時(shí)間或硬實(shí)時(shí)的應(yīng)用程序來說是不夠的。但是,標(biāo)準(zhǔn) Linux 的當(dāng)前開發(fā)版本可用于軟實(shí)時(shí)和硬實(shí)時(shí)應(yīng)用程序。前者可以承受不尊重時(shí)間限制,即使樣本持續(xù)時(shí)間只有幾十毫秒。一個(gè)例子是視頻處理,其中偶爾的閃爍通常是可以接受的。硬實(shí)時(shí)應(yīng)用,另一方面,需要嚴(yán)格的確定性和快速的時(shí)間。自 1997 年以來,適用于此類應(yīng)用程序的 Linux 實(shí)時(shí)變體已經(jīng)出現(xiàn),這要?dú)w功于來自新墨西哥理工大學(xué)、米蘭理工大學(xué)和堪薩斯大學(xué)的研究小組,這些研究小組制作了廣泛分布并成功商業(yè)化的開源版本。修改作為操作系統(tǒng)核心的標(biāo)準(zhǔn) Linux 內(nèi)核有兩種基本方法。這些中的每一個(gè)都作為標(biāo)準(zhǔn)內(nèi)核的補(bǔ)丁分發(fā)。第一種方法:微內(nèi)核,即在硬件和標(biāo)準(zhǔn)內(nèi)核之間插入一個(gè)新的、高效的代碼層。稱為微內(nèi)核的附加代碼層負(fù)責(zé)所有這些實(shí)時(shí)功能,包括中斷、調(diào)度和高時(shí)間分辨率。微內(nèi)核(圖 1)將標(biāo)準(zhǔn)內(nèi)核作為后臺(tái)任務(wù)進(jìn)行管理。第二種方法:IEEE 1003.1d 內(nèi)核,它在標(biāo)準(zhǔn) Linux 內(nèi)核框架內(nèi)實(shí)現(xiàn)對(duì) POSIX.1 的實(shí)時(shí)擴(kuò)展。這些擴(kuò)展將計(jì)時(shí)器、編程和搶占式邏輯直接添加到單個(gè)單片內(nèi)核中。較新版本的標(biāo)準(zhǔn)內(nèi)核表現(xiàn)出大約 1 ms 的延遲(中斷的延遲時(shí)間)和抖動(dòng)(周期性事件的時(shí)序變化)。Linux 的實(shí)時(shí)版本在數(shù)百兆赫的處理器上運(yùn)行時(shí)具有大約幾微秒的延遲和抖動(dòng)。單片內(nèi)核。較新版本的標(biāo)準(zhǔn)內(nèi)核表現(xiàn)出大約 1 ms 的延遲(中斷的延遲時(shí)間)和抖動(dòng)(周期性事件的時(shí)序變化)。Linux 的實(shí)時(shí)版本在數(shù)百兆赫的處理器上運(yùn)行時(shí)具有大約幾微秒的延遲和抖動(dòng)。單片內(nèi)核。較新版本的標(biāo)準(zhǔn)內(nèi)核表現(xiàn)出大約 1 ms 的延遲(中斷的延遲時(shí)間)和抖動(dòng)(周期性事件的時(shí)序變化)。Linux 的實(shí)時(shí)版本在數(shù)百兆赫的處理器上運(yùn)行時(shí)具有大約幾微秒的延遲和抖動(dòng)。
實(shí)時(shí):關(guān)鍵方面和參數(shù)
通常,操作系統(tǒng)負(fù)責(zé)管理計(jì)算機(jī)的硬件資源,該計(jì)算機(jī)承載在計(jì)算機(jī)上運(yùn)行的應(yīng)用程序。RTOS 執(zhí)行這些任務(wù),但也專門設(shè)計(jì)用于運(yùn)行具有非常精確的時(shí)序和高度可靠性的應(yīng)用程序。這在停機(jī)或程序延遲可能導(dǎo)致安全隱患的測(cè)量和自動(dòng)化系統(tǒng)中尤為重要。
操作系統(tǒng)必須對(duì)其執(zhí)行的每個(gè)關(guān)鍵操作都有一個(gè)已知的最大時(shí)間,才能被視為“實(shí)時(shí)”。其中一些操作包括操作系統(tǒng)調(diào)用和中斷處理(圖 2)。能夠絕對(duì)保證這些操作的最大時(shí)間的操作系統(tǒng)通常被稱為“硬實(shí)時(shí)”,而能夠保證大部分時(shí)間的系統(tǒng)被稱為“軟實(shí)時(shí)”。
許多開發(fā)人員嘗試添加對(duì) Linux 的實(shí)時(shí)支持,從而填補(bǔ)其作為嵌入式系統(tǒng)功能的空白。即使某些應(yīng)用程序需要實(shí)時(shí),某些系統(tǒng)也可以在沒有它的情況下運(yùn)行。Linux 實(shí)時(shí)系統(tǒng)的總體思路是在 Linux 下運(yùn)行一個(gè)小的實(shí)時(shí)內(nèi)核,這意味著實(shí)時(shí)內(nèi)核的優(yōu)先級(jí)高于標(biāo)準(zhǔn)的 Linux 內(nèi)核。實(shí)時(shí)任務(wù)由實(shí)時(shí)內(nèi)核執(zhí)行,普通Linux程序可以在沒有實(shí)時(shí)操作的情況下執(zhí)行。因?yàn)閷?shí)時(shí)內(nèi)核具有更高的優(yōu)先級(jí),所以當(dāng)實(shí)時(shí)任務(wù)準(zhǔn)備好運(yùn)行時(shí),普通的 Linux 進(jìn)程會(huì)被搶占。
通常,實(shí)時(shí)系統(tǒng)是這樣一種系統(tǒng),其中計(jì)算的準(zhǔn)確性不僅取決于相應(yīng)的計(jì)算邏輯,還取決于創(chuàng)建結(jié)果的時(shí)刻。由于能夠量化事件激活和處理時(shí)間之間可能發(fā)生的延遲,因此及時(shí)性是操作的決定性因素。這種延遲通常稱為“延遲”。中斷延遲是中斷和相應(yīng)中斷處理程序執(zhí)行之間的延遲。
許多事情可能會(huì)延遲中斷處理,包括系統(tǒng)總線爭用、DMA 操作,或者僅僅是對(duì)中斷本身的屏蔽。內(nèi)核軟件在處理關(guān)鍵代碼片段時(shí)需要后者,以便在內(nèi)核處理特定數(shù)據(jù)結(jié)構(gòu)時(shí)沒有中斷處理程序可以更改特定數(shù)據(jù)結(jié)構(gòu)。類似地,中斷處理程序可以將任務(wù)放入隊(duì)列中,以便隨后在時(shí)間關(guān)鍵的上下文中執(zhí)行和處理從設(shè)備接收到的待處理數(shù)據(jù)。
此后,內(nèi)核可能需要一些時(shí)間來完成其當(dāng)前功能,然后再將 CPU 交給下一個(gè)任務(wù)。這種延遲稱為運(yùn)輸延遲或調(diào)度延遲。要測(cè)量基于 Linux 的操作系統(tǒng)的實(shí)時(shí)性能,可能需要調(diào)查其他問題,包括最壞情況下的執(zhí)行時(shí)間和抖動(dòng)。抖動(dòng)是接受和完成申請(qǐng)所需的時(shí)間。硬 RTOS 的抖動(dòng)小于軟 RTOS。另一方面,最壞情況執(zhí)行時(shí)間通常用于可靠的實(shí)時(shí)系統(tǒng),其中最壞情況的理解對(duì)于系統(tǒng)可靠性很重要。
例如,在監(jiān)控車輛發(fā)動(dòng)機(jī)行為的系統(tǒng)中,可能需要在特定時(shí)間段內(nèi)響應(yīng)輸入。如果可以在最壞的情況下確定軟件的運(yùn)行時(shí)間,那么系統(tǒng)設(shè)計(jì)人員可以將其與調(diào)度分析等其他技術(shù)結(jié)合使用,以確保系統(tǒng)響應(yīng)足夠快。
通常,RTOS 需要以下特性:多任務(wù)處理、具有相對(duì)優(yōu)先級(jí)的進(jìn)程以及足夠數(shù)量的中斷級(jí)別。小型嵌入式操作系統(tǒng)通常需要 RTOS,這些嵌入式操作系統(tǒng)封裝為微設(shè)備的一部分。一些內(nèi)核適用于 RTOS。但是,由于特定解決方案通常需要其他組件,例如設(shè)備驅(qū)動(dòng)程序,因此 RTOS 通常比內(nèi)核更大。
圖 1:帶有微內(nèi)核的 Linux 實(shí)時(shí)系統(tǒng)
圖 2:實(shí)時(shí)系統(tǒng)中的中斷管理示例
RTOS 與通用操作系統(tǒng)
兩種操作系統(tǒng)的主要區(qū)別如下:
確定性:通用操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)之間的主要區(qū)別在于“確定性”時(shí)序行為。這意味著操作系統(tǒng)系統(tǒng)只消耗已知和預(yù)定量的時(shí)間。
任務(wù)調(diào)度:通用操作系統(tǒng)經(jīng)過優(yōu)化,可以同時(shí)運(yùn)行各種應(yīng)用程序和進(jìn)程,從而確保所有任務(wù)至少獲得一些處理時(shí)間。因此,低優(yōu)先級(jí)任務(wù)可以被提升到設(shè)計(jì)人員可能不想要的其他優(yōu)先級(jí)任務(wù)。但是,RTOS 使用基于優(yōu)先級(jí)的搶占式調(diào)度,這使它們能夠始終如一地滿足其最后期限。所有系統(tǒng)調(diào)用都是確定性的,這意味著所有操作的正常運(yùn)行時(shí)間都是有限的。這在嵌入式系統(tǒng)中尤為重要,因?yàn)檠舆t可能會(huì)帶來安全風(fēng)險(xiǎn)。
搶占式內(nèi)核:在 RTOS 中,所有內(nèi)核操作都是可搶占式的。
優(yōu)先級(jí)顛倒:RTOS 具有避免優(yōu)先級(jí)顛倒的機(jī)制。
用途:RTOS 通常用于嵌入式應(yīng)用程序,而通用操作系統(tǒng)用于臺(tái)式 PC 或其他 PC。
實(shí)時(shí) Ubuntu
Ubuntu愛好者應(yīng)該知道,通過安裝相應(yīng)的軟件包可以使其“實(shí)時(shí)”。桌面系統(tǒng)廣泛應(yīng)用于嵌入式系統(tǒng),例如最流行的樹莓派:一種用于廣泛工業(yè)應(yīng)用的微型計(jì)算機(jī)。可用于較新 Ubuntu 版本的 Linux 實(shí)時(shí)軟件包可以為 Ubuntu Linux 帶來實(shí)時(shí)功能。實(shí)時(shí) Linux (RTLinux) 可以安裝在 12.04 和更早版本的 Ubuntu 發(fā)行版上。對(duì)于 Ubuntu 12.04,您可以直接從以下命令添加 PPA:
$ sudo add-apt-repository ppa: abogani / realtime.
對(duì)于 Ubuntu 11.10 或更高版本,您需要編輯 sources.list 文件以手動(dòng)添加存儲(chǔ)庫:$ sudo gedit /etc/apt/sources.list。在文件末尾添加以下行:
deb http://ppa.launchpad.net/abogani/realtime/ubuntu
deb-src http://ppa.launchpad.net/abogani/realtime/ubuntu
保存文件并更新 apt 存儲(chǔ)庫: $ Sudo apt-get update。完成后,您可以在 Ubuntu 系統(tǒng)上安裝 RTLinux: $ Sudo apt-get install linux-realtime。
最后兩個(gè)步驟也適用于 Ubuntu 12.04 中的 PPA 方法。
看市場(chǎng)
QNX Neutrino(圖 3)是市場(chǎng)上最傳統(tǒng)的 RTOS 之一。它具有微內(nèi)核架構(gòu),完全兼容 POSIX 標(biāo)準(zhǔn),并通過了 FAA DO-278 和 MIL-STD-1553 標(biāo)準(zhǔn)的認(rèn)證。在該架構(gòu)中,內(nèi)核只實(shí)現(xiàn)了四個(gè)基本任務(wù):任務(wù)調(diào)度、任務(wù)間通信、底層網(wǎng)絡(luò)通信和中斷處理。系統(tǒng)的所有剩余部分(包括設(shè)備驅(qū)動(dòng)程序)都作為用戶任務(wù)實(shí)現(xiàn),從而使內(nèi)核快速、可靠且體積小。
與其他類型的內(nèi)核相比,微內(nèi)核的優(yōu)勢(shì)之一是即使發(fā)生嚴(yán)重錯(cuò)誤(例如在文件系統(tǒng)中),系統(tǒng)的所有其他部分也不受影響。這意味著微內(nèi)核架構(gòu)提供了比其他操作系統(tǒng)更健壯的環(huán)境,盡管它的問題是開銷,這是由必須非常頻繁地使用的內(nèi)存保護(hù)引起的。
Neutrino 支持 ARM、MIPS、PowerPC、SH4 和 PC 架構(gòu)。自適應(yīng)分區(qū)是該操作系統(tǒng)的一項(xiàng)新功能,允許在處理器活動(dòng)中創(chuàng)建限制。
VxWorks(來自 Wind River)是嵌入式系統(tǒng)行業(yè)中使用最廣泛的 RTOS(圖 4)。使用 VxWorks 的一個(gè)應(yīng)用示例是著名的 NASA 機(jī)器人漫游者 Spirit。該 RTOS 已通過各種國際機(jī)構(gòu)和標(biāo)準(zhǔn)的可靠性和關(guān)鍵安全應(yīng)用認(rèn)證。許多其他產(chǎn)品都基于 VxWorks:VxWorks 653 的設(shè)計(jì)遵循航空航天和國防工業(yè)的完整 ARINC 6532 合規(guī)性規(guī)范,以及關(guān)鍵任務(wù)應(yīng)用的安全要求。VxWorks MILS 3 還專為航空航天和國防而設(shè)計(jì),為安全數(shù)據(jù)傳輸提供高度保障。VxWorks MILS 使系統(tǒng)能夠以不同的安全級(jí)別運(yùn)行應(yīng)用程序,同時(shí)確保共享或不共享安全和通信級(jí)別,按照嚴(yán)格的標(biāo)準(zhǔn)。另一個(gè)操作系統(tǒng)是 LynxOS-178 RTOS,現(xiàn)在是第三代,用于硬實(shí)時(shí)確定性安全關(guān)鍵應(yīng)用程序。所有互聯(lián)安全市場(chǎng)都受益于 LynxOS-178,包括民用和軍用航空、鐵路、運(yùn)輸和陸地車輛。LynxOS-178 2.2.3 為開發(fā)人員提供了實(shí)現(xiàn)最高級(jí)別的可靠性和安全性所需的認(rèn)證證書和當(dāng)前工具。
圖 3:QNX Neutrino 架構(gòu)
圖 4:VxWorks 6.2 架構(gòu)
圖 5:影響嵌入式系統(tǒng)設(shè)計(jì)/選擇的因素
結(jié)論
Wind River 著名的 QNX Neutrino 和 VxWorks 系統(tǒng)已經(jīng)證明了確定性和可靠性。然而,兩個(gè)未被廣泛使用的新系統(tǒng),Windows CE 和 Linux RTAI 也顯示出有希望的特性。RTAI 提供了使用免費(fèi)軟件實(shí)時(shí)構(gòu)建可靠系統(tǒng)的可能性,并具有 Linux 社區(qū)的所有優(yōu)勢(shì)。
思科系統(tǒng)公司預(yù)測(cè),到 2020 年,預(yù)計(jì)將有 500 億臺(tái)物聯(lián)網(wǎng)設(shè)備投入使用。智能手機(jī)、平板電腦和其他使用應(yīng)用處理器和通用操作系統(tǒng)(如 Linux、Android 和 Windows)的消費(fèi)類設(shè)備占其中的 20%單位。其他 80% 將根深蒂固并依賴于微控制器。正是在這 80% 中,RTOS 發(fā)揮了重要作用。
云技術(shù)認(rèn)真考慮了穩(wěn)定性、數(shù)據(jù)量、連接性和網(wǎng)絡(luò)設(shè)備等方面,這大大加快了開發(fā)時(shí)間。構(gòu)成物聯(lián)網(wǎng)的數(shù)十億智能設(shè)備和系統(tǒng)必須提供決策和解決問題的功能,以及完美的用戶體驗(yàn)。RTOS(圖 5)處于物聯(lián)網(wǎng)的最前沿,因?yàn)樗鼈兲峁o故障的可靠性、實(shí)時(shí)功能以及支持?jǐn)?shù)百種新興協(xié)議的能力。它們還支持所有有線和無線通信標(biāo)準(zhǔn),包括 CAN、藍(lán)牙、ZigBee、Wi-Fi 和以太網(wǎng)。
靈活且可擴(kuò)展的 RTOS 有助于提高投資回報(bào)、降低開發(fā)成本,進(jìn)而縮短上市時(shí)間。盡管嵌入式系統(tǒng)歷來完全圍繞 8 位和 16 位 MCU 構(gòu)建,但 32 位 MCU 的價(jià)格迅速下降,使其成為基本產(chǎn)品。因此,它們?cè)谇度胧皆O(shè)備中的受歡迎程度飆升。網(wǎng)絡(luò)嵌入式系統(tǒng)的一個(gè)常見技術(shù)解決方案是在設(shè)備中使用兩個(gè)處理器。在這種安排中,8 位或 16 位 MCU 用于傳感器或執(zhí)行器,而 32 位處理器用于網(wǎng)絡(luò)接口。第二個(gè)處理器在不斷發(fā)展和設(shè)計(jì)中運(yùn)行在 RTOS 上。
審核編輯:郭婷
評(píng)論