一個(gè)實(shí)時(shí)操作系統(tǒng)(RTOS)必須是可靠的;它必須是快速和響應(yīng)的,管理有限的資源和安排任務(wù),使它們按時(shí)完成,并確保功能是隔離的,不受其他功能的干擾。在本節(jié)中,你將了解更多關(guān)于什么是實(shí)時(shí)操作系統(tǒng),以及兩種類(lèi)型的實(shí)時(shí)操作系統(tǒng)架構(gòu)的利弊,即單片機(jī)和微內(nèi)核。操作系統(tǒng)的主要職責(zé)是管理硬件資源和系統(tǒng)中的活動(dòng):調(diào)度應(yīng)用程序,將文件寫(xiě)入磁盤(pán),在網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)等等。當(dāng)操作系統(tǒng)必須同時(shí)處理多個(gè)事件,并確保系統(tǒng)在可預(yù)測(cè)的時(shí)間范圍內(nèi)對(duì)這些事件做出反應(yīng)時(shí),它被稱(chēng)為實(shí)時(shí)操作系統(tǒng)(RTOS)。
許多嵌入式系統(tǒng)需要實(shí)時(shí)行為,由于硬件資源的限制,性能和效率是首要任務(wù)。實(shí)時(shí)操作系統(tǒng)提供了嚴(yán)格的資源管理和調(diào)度,以滿(mǎn)足多任務(wù)、優(yōu)先級(jí)驅(qū)動(dòng)的搶占式調(diào)度和快速上下文切換等應(yīng)用的需求,這些都是嵌入式實(shí)時(shí)系統(tǒng)的基本特征。
一個(gè)實(shí)時(shí)操作系統(tǒng)通常具有較小的占地面積,并對(duì)性能進(jìn)行了優(yōu)化。然而,每個(gè)實(shí)時(shí)操作系統(tǒng)都必須根據(jù)它所支持的硬件和系統(tǒng)所需的功能進(jìn)行定制。從管理少量任務(wù)的光禿禿的內(nèi)核配置到管理數(shù)百個(gè)任務(wù)和子系統(tǒng)(包括圖形、網(wǎng)絡(luò)、文件系統(tǒng)、音頻等)的全功能RTOS,一個(gè)RTOS應(yīng)該靈活地?cái)U(kuò)展以滿(mǎn)足系統(tǒng)要求和資源。
RTOS架構(gòu)會(huì)影響嵌入式系統(tǒng)的可靠性及其從故障中恢復(fù)的能力。有兩種RTOS架構(gòu):?jiǎn)纹胶臀?nèi)核。
根據(jù)定義,單片機(jī)的內(nèi)核在內(nèi)核空間內(nèi)運(yùn)行所有的操作系統(tǒng)組件。例如,一個(gè)單片式RTOS包括設(shè)備驅(qū)動(dòng)、文件管理、網(wǎng)絡(luò)和圖形堆棧,作為內(nèi)核空間的一部分。然而,應(yīng)用程序則在用戶(hù)空間中運(yùn)行。盡管將用戶(hù)應(yīng)用程序作為內(nèi)存保護(hù)進(jìn)程運(yùn)行可以保護(hù)單片機(jī)內(nèi)核不受錯(cuò)誤用戶(hù)代碼的影響,但文件系統(tǒng)、協(xié)議?;?a class="article-link" target="_blank" href="/baike/1571085.html">驅(qū)動(dòng)程序中的一個(gè)編程錯(cuò)誤就可以使系統(tǒng)崩潰。此外,對(duì)驅(qū)動(dòng)程序或系統(tǒng)文件的任何改變都需要操作系統(tǒng)的修改和重新編譯。
自 1980 年以來(lái),制造商一直依靠 QNX 實(shí)時(shí)技術(shù)為其任務(wù)關(guān)鍵型應(yīng)用提供動(dòng)力--從醫(yī)療儀器和互聯(lián)網(wǎng)路由器,到車(chē)載信息娛樂(lè)設(shè)備和 911 呼叫中心,再到核監(jiān)控系統(tǒng)和軍事通信,無(wú)所不包。無(wú)論是小型還是大型,無(wú)論是簡(jiǎn)單還是分布式,這些系統(tǒng)都有一個(gè)無(wú)與倫比的聲譽(yù),那就是一年365天、一天24小時(shí)不停地運(yùn)行。
QNX Neutrino 實(shí)時(shí)操作系統(tǒng)經(jīng)受了時(shí)間的考驗(yàn)和實(shí)踐的檢驗(yàn),它是在真正的微內(nèi)核架構(gòu)上建立的。在這種系統(tǒng)下,每個(gè)驅(qū)動(dòng)程序、應(yīng)用程序、協(xié)議棧和文件系統(tǒng)都在內(nèi)核之外、受內(nèi)存保護(hù)的用戶(hù)空間安全運(yùn)行。幾乎所有的組件都可以在不影響其他組件或內(nèi)核的情況下發(fā)生故障并被自動(dòng)重新啟動(dòng)。沒(méi)有其他商業(yè)實(shí)時(shí)操作系統(tǒng)能提供如此高水平的故障控制和恢復(fù)。
QNX Neutrino 實(shí)時(shí)操作系統(tǒng)本身是模塊化的,它能讓你動(dòng)態(tài)地升級(jí)模塊、引入新功能或部署錯(cuò)誤修復(fù)程序,而無(wú)需花費(fèi)昂貴的停機(jī)時(shí)間或系統(tǒng)中斷。人機(jī)界面技術(shù)變化很快。如果您的平臺(tái)跟不上,您可能會(huì)被過(guò)時(shí)的、不支持的軟件所困。QNX Neutrino 實(shí)時(shí)操作系統(tǒng)有一個(gè)獨(dú)特的組合管理器,能從多種技術(shù)中創(chuàng)建一個(gè)統(tǒng)一的界面。
它的通用應(yīng)用平臺(tái)能夠在新的人機(jī)界面技術(shù)出現(xiàn)時(shí)添加這些技術(shù)。這使你可以使用最合適的圖形技術(shù),無(wú)論是視頻、OpenGL ES、HTML5還是Qt5。QNX Neutrino 實(shí)時(shí)操作系統(tǒng)按照 POSIX 標(biāo)準(zhǔn)(1003.1-2003 POSIX.1)設(shè)計(jì),只需簡(jiǎn)單地重新編譯,就能移植傳統(tǒng)的和開(kāi)源的 UNIX、Linux 和互聯(lián)網(wǎng)代碼。通過(guò)標(biāo)準(zhǔn)的應(yīng)用程序接口,可以重復(fù)使用應(yīng)用程序代碼,避免代價(jià)高昂的延遲,并縮短其學(xué)習(xí)曲線--加快開(kāi)發(fā)周期,縮短上市時(shí)間。
此外,QNX Neutrino 實(shí)時(shí)操作系統(tǒng)還預(yù)先集成了對(duì)各種連接技術(shù)、安全和防故障文件系統(tǒng)以及內(nèi)置高可用性解決方案的開(kāi)箱即用支持。QNX Neutrino 實(shí)時(shí)操作系統(tǒng)具有創(chuàng)新的安全機(jī)制,旨在幫助你輕松構(gòu)建不可攻破的設(shè)備。加密文件系統(tǒng)、內(nèi)存保護(hù)頁(yè)和有限的根權(quán)限是該操作系統(tǒng)的核心功能,可用于創(chuàng)建安全可靠的設(shè)備。它有自適應(yīng)分區(qū),在過(guò)載條件下保證你的應(yīng)用程序的系統(tǒng)資源,幫助你建立安全可靠的嵌入式系統(tǒng),而不影響實(shí)時(shí)性能或靈活性。
利用 QNX Neutrino 實(shí)時(shí)操作系統(tǒng)對(duì)各種 ARM Cortex A 系列和 x86 平臺(tái)的支持,在選定的平臺(tái)上快速啟動(dòng)開(kāi)發(fā)。利用 QNX Neutrino 實(shí)時(shí)操作系統(tǒng)的資源管理器,簡(jiǎn)化了定制硬件的驅(qū)動(dòng)程序開(kāi)發(fā)。
框架,與傳統(tǒng)驅(qū)動(dòng)程序不同,它能在受內(nèi)存保護(hù)的用戶(hù)空間中運(yùn)行。BlackBerry QNX是一家值得信賴(lài)的安全操作系統(tǒng)、管理程序、框架和開(kāi)發(fā)工具供應(yīng)商,并為構(gòu)建全球最關(guān)鍵的嵌入式系統(tǒng)提供專(zhuān)業(yè)支持和服務(wù)。該公司的技術(shù)在超過(guò)1.95億輛汽車(chē)中得到了信任,并被部署在世界各地的嵌入式系統(tǒng)中,涉及多個(gè)行業(yè)。
黑莓QNX成立于1980年,總部設(shè)在加拿大渥太華,2010年被黑莓收購(gòu)。黑莓QNX軟件和開(kāi)發(fā)工具以標(biāo)準(zhǔn)為基礎(chǔ),使企業(yè)能夠在各產(chǎn)品線和業(yè)務(wù)部門(mén)采用可擴(kuò)展的軟件平臺(tái)戰(zhàn)略。黑莓QNX軟件組合,包括我們的安全預(yù)認(rèn)證產(chǎn)品版本,是專(zhuān)門(mén)為嵌入式系統(tǒng)設(shè)計(jì)的,并可擴(kuò)展到支持從單一用途的設(shè)備到高度復(fù)雜的混合關(guān)鍵性平臺(tái)。客戶(hù)依靠黑莓QNX的支持和專(zhuān)業(yè)服務(wù)團(tuán)隊(duì),在整個(gè)產(chǎn)品開(kāi)發(fā)周期內(nèi)提供他們所需的專(zhuān)業(yè)知識(shí)。數(shù)以千計(jì)的公司已經(jīng)部署了QNX的實(shí)時(shí)操作系統(tǒng),以確保任務(wù)關(guān)鍵型系統(tǒng)的性能、安全和可靠性的理想組合。
QNX 技術(shù)的核心是 QNX Neutrino® 實(shí)時(shí)操作系統(tǒng)(RTOS),它是一種功能全面、符合 POSIX 標(biāo)準(zhǔn)的實(shí)時(shí)操作系統(tǒng),能在每個(gè)注重可靠性的行業(yè)(包括汽車(chē)、醫(yī)療設(shè)備、機(jī)器人、運(yùn)輸、重型機(jī)械和工業(yè)嵌入式系統(tǒng))中實(shí)現(xiàn)新一代產(chǎn)品。主要特點(diǎn)包括:微內(nèi)核可靠性--QNX Neutrino 實(shí)時(shí)操作系統(tǒng)的微內(nèi)核架構(gòu)將每個(gè)應(yīng)用程序、驅(qū)動(dòng)程序、協(xié)議棧和文件系統(tǒng)都隔離在內(nèi)核以外的獨(dú)立地址空間內(nèi)。這意味著,故障組件不會(huì)導(dǎo)致其他組件或內(nèi)核癱瘓;它能立即重新啟動(dòng),對(duì)系統(tǒng)性能的影響最小。
實(shí)時(shí)可用性--QNX Neutrino 實(shí)時(shí)操作系統(tǒng)提供了只有實(shí)時(shí)操作系統(tǒng)才能提供的確定性。自適應(yīng)分區(qū)等技術(shù)能保證關(guān)鍵進(jìn)程獲得按時(shí)完成任務(wù)所需的周期,同時(shí)保持復(fù)雜嵌入式系統(tǒng)所需的性能。全面的分層安全--利用 QNX Neutrino 實(shí)時(shí)操作系統(tǒng)的分層安全功能和 QNX 安全專(zhuān)家的幫助,可以采取全面的安全方法,準(zhǔn)確實(shí)施的嵌入式系統(tǒng)所需的安全配置文件??蓴U(kuò)展性--QNX Neutrino 實(shí)時(shí)操作系統(tǒng)可在最新一代多核系統(tǒng)芯片(包括 ARMv8 和 x86-64)上擴(kuò)展,它支持非對(duì)稱(chēng)多處理(AMP)和對(duì)稱(chēng)多處理(SMP),以及綁定多處理(BMP),這是 QNX 對(duì)標(biāo)準(zhǔn) SMP 處理器親和力的改進(jìn)。板卡支持包(BSP)--由一個(gè)廣泛的BSP庫(kù)支持,適用于各種ARMv8、x86-64和舊板卡。QNX 操作系統(tǒng)得到了經(jīng)過(guò)實(shí)踐檢驗(yàn)的開(kāi)發(fā)工具(QNX 軟件開(kāi)發(fā)平臺(tái))的支持,并通過(guò)功能豐富的中間件(用于 ADAS 的 QNX 平臺(tái)等)和工程服務(wù)得到了擴(kuò)展。
黑莓QNX還提供了符合IEC 61508 SIL 3、ISO 26262 ASIL D和其他功能安全標(biāo)準(zhǔn)(QNX OS for Safety、QNX Hypervisor for Safety)的嵌入式操作系統(tǒng)預(yù)認(rèn)證版本。QNX Neutrino 實(shí)時(shí)操作系統(tǒng)是一種高性能、多線程、適用于 SMP 的微內(nèi)核實(shí)時(shí)操作系統(tǒng),具有開(kāi)放系統(tǒng)的 POSIX 應(yīng)用程序接口。QNX Neutrino 實(shí)時(shí)操作系統(tǒng)是一種高性能、多線程、適用于 SMP 的微內(nèi)核實(shí)時(shí)操作系統(tǒng),具有開(kāi)放系統(tǒng)的 POSIX 應(yīng)用程序接口。
QNX Neutrino 實(shí)時(shí)操作系統(tǒng)堅(jiān)固耐用且可大規(guī)模擴(kuò)展,適用于從小型、資源有限的系統(tǒng)到高端分布式計(jì)算環(huán)境。全面的 MMU 保護(hù)使它能有效地用于關(guān)鍵任務(wù)的應(yīng)用。可靠的架構(gòu)-QNX Neutrino 實(shí)時(shí)操作系統(tǒng)的卓越可靠性是其微內(nèi)核架構(gòu)的直接結(jié)果。內(nèi)核只包括一小部分核心服務(wù),包括線程服務(wù)、消息傳遞、互斥、條件變量、信號(hào)和調(diào)度。
內(nèi)核可以通過(guò)動(dòng)態(tài)地插入提供服務(wù)的進(jìn)程來(lái)擴(kuò)展,如文件系統(tǒng)、網(wǎng)絡(luò)、POSIX消息隊(duì)列和設(shè)備驅(qū)動(dòng)程序。每個(gè)進(jìn)程都在它自己的內(nèi)存保護(hù)的地址空間中運(yùn)行。由于內(nèi)核中導(dǎo)致問(wèn)題的代碼太少,內(nèi)核錯(cuò)誤幾乎被消除了。當(dāng)軟件出現(xiàn)故障時(shí),即使是驅(qū)動(dòng)程序和其他關(guān)鍵程序出現(xiàn)故障,基于 QNX Neutrino 的系統(tǒng)也能智能地恢復(fù)--無(wú)需重啟。嵌入式系統(tǒng)開(kāi)發(fā)人員還能依靠微內(nèi)核架構(gòu)的其他增強(qiáng)可靠性的功能,包括支持軟件和硬件熱交換,以及在網(wǎng)絡(luò)環(huán)境中分布組件的能力。與擁有專(zhuān)有應(yīng)用程序接口的實(shí)時(shí)執(zhí)行程序和操作系統(tǒng)不同,QNX Neutrino 實(shí)時(shí)操作系統(tǒng)是根據(jù)最新的 POSIX 1003.1 標(biāo)準(zhǔn)和草案(包括實(shí)時(shí)和線程選項(xiàng))從頭設(shè)計(jì)的。
熟悉 UNIX 或 Linux 的程序員不需要任何培訓(xùn)就能在這種 POSIX 環(huán)境中找到家的感覺(jué)。更重要的是,這種內(nèi)置的 POSIX 兼容性不需要額外的代碼就能實(shí)現(xiàn)?;?QNX Neutrino 的系統(tǒng)非常小巧、高效,這對(duì)可移植系統(tǒng)至關(guān)重要。因此,在不犧牲功能或性能的前提下,可以通過(guò)減少系統(tǒng)核心的代碼來(lái)提高整體性能和降低內(nèi)存需求。