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