一直想介紹下QNX,因為其框架對其他微內(nèi)核有很多可借鑒的地方,但是其是一個商業(yè)系統(tǒng),不開源,只能看到部分的軟件接口,在其上進行開發(fā)。
我們的老一套:代碼下載、編譯、運行是搞不了了,真是讓人頭大?。?一些重要的東西先放這里:
1)QNX的開源代碼:https://github.com/vocho/openqnx
2)QNX的框架文檔: http://myqnx.com/developers/docs/6.3.0SP3/momentics/bookset.html
1.簡介
1.1 歷史
1980年,加拿大滑鐵盧大學的學生戈登貝爾(Gordon Bell)和丹道奇(Dan Dodge)都上了實時操作系統(tǒng)設計的課程,課程要求學生構(gòu)建一個基本的實時微內(nèi)核,并成立了 Quantum Software Systems 公司。
1982年,戈登貝爾(GordonBell)和丹道奇(Dan Dodge)根據(jù)大學時代的一些設想寫出了一個能在 IBM PC 上運行的名叫 QUNIX(Quick UNIX)的系統(tǒng),直到 AT&T 發(fā)律師函過來才把名字改成 QNX。
2004年,來自美國的音響設備制造商哈曼(Harman)國際工業(yè)集團以 1.38 億美元的現(xiàn)金收購了 QNX。
2010年,黑莓手機(BlackBerry)制造商 RIM(Research In Motion Ltd.)為獲取其車載無線連接技術(shù),收購哈曼集團旗下的 QNX 軟件公司,QNX 因此重返加拿大。
QNX 主要開發(fā)汽車,通訊設備所使用的操作系統(tǒng),哈曼國際的主業(yè)則是汽車音像和娛樂設備。BlackBerry 的并購交易使得 RIM、QNX 和哈曼工業(yè)在智能手機和車載音頻娛樂系統(tǒng)之間找到合作空間。
1.2 應用場景
QNX 具有安全、可靠、可信的特點,因此通常應用于對安全性要求極高的領域,例如汽車、航空、核電站、工業(yè)自動化等領域。
carOS:QNX 一直是汽車領域最大的操作系統(tǒng)
robotOS:工業(yè)和醫(yī)療領域,例如手術(shù)機器人達芬奇
weaponOS:例如洛克希德·馬丁的武器
criticalTaskOS:核電站、宇航領域
QNX Neutrino實時操作系統(tǒng),QNX Momentics工具套件和QNX Aviage中間件系列基于組件的架構(gòu)共同構(gòu)成業(yè)界可靠性和延展性最強的架構(gòu),幫助建立高性能的嵌入式系統(tǒng)。包括思科、戴姆勒、通用電氣、洛克希德·馬丁和西門子在內(nèi)的眾多全球知名技術(shù)領先企業(yè),都將QNX技術(shù)應用在網(wǎng)絡路由器、車載遠程信息處理和信息娛樂系統(tǒng)、工業(yè)控制系統(tǒng)、醫(yī)療設備、安全防衛(wèi)系統(tǒng)和其他任務關(guān)鍵性和生命關(guān)鍵型應用中。
上面提到工具套件,就知道界面化的東西,核心代碼是看不到的,我們學習到的源碼內(nèi)容和知識也有限了。
2. 特點
QNX是一個分布式、可擴展、遵從POSIX規(guī)范的類Unix硬實時微內(nèi)核操作系統(tǒng)。
QNX為微內(nèi)核的架構(gòu),微內(nèi)核只提供進程調(diào)度、進程間通信、底層網(wǎng)絡通信和中斷處理四種服務。驅(qū)動程序、協(xié)議棧、文件系統(tǒng)、應用程序等都在微內(nèi)核之外內(nèi)存受保護的安全的用戶空間內(nèi)運行,組件之間能避免相互影響,在遇到故障時也能重啟。
QNX是商業(yè)類Unix實時操作系統(tǒng),主要針對嵌入式系統(tǒng)市場。它提供用戶可控制的、優(yōu)先級驅(qū)動的、急者優(yōu)先搶占的調(diào)度方式。QNX 內(nèi)核自身開銷小、上下文切換快,在同樣的硬件條件下給實時應用留下更大的余地,因而它在實時控制、通信、多媒體信息處理等對時間敏感的應用領域大有用武之地。
QNX 同時也是一個可嵌入的操作系統(tǒng)。它由微內(nèi)核和一組共操作的進程構(gòu)成,具有高度可伸縮性,可靈活的剪裁。最小配置只占用幾十 KB 內(nèi)存。因此,它可以廣泛地嵌入到智能機器、智能儀器儀表、通信設備等應用中去。
2.1 POSIX
QNX是一種商用的遵從POSIX(可移植操作系統(tǒng)接口, Portable Operating SystemInterface,縮寫為POSIX, 是IEEE為要在各種UNIX操作系統(tǒng)上運行軟件,而定義API的一系列互相關(guān)聯(lián)的標準的總稱)規(guī)范的類Unix實時操作系統(tǒng),目標市場主要是面向嵌入式系統(tǒng)。
2.2 微內(nèi)核

QNX采用微內(nèi)核架構(gòu),操作系統(tǒng)中的多數(shù)功能是以許多小型的task來執(zhí)行,它們被稱為server。這樣的架構(gòu)使得用戶和開發(fā)者可以關(guān)閉不需要的功能,而不需要改變操作系統(tǒng)本身。
QNX是一個微內(nèi)核實時操作系統(tǒng),其核心僅提供4種服務:進程調(diào)度、進程間通信、底層網(wǎng)絡通信和中斷處理,其進程在獨立的地址空間運行。所有其它OS服務,都實現(xiàn)為協(xié)作的用戶進程,因此QNX核心非常小巧而且運行速度極快。
QNX的微內(nèi)核獨立自處于一個被保護的地址空間,驅(qū)動程序、網(wǎng)絡協(xié)議和應用程序處于程序空間中。
微內(nèi)核架構(gòu)的優(yōu)點:
(1). 驅(qū)動程序、網(wǎng)絡協(xié)議、文件系統(tǒng)等操作系統(tǒng)模塊和內(nèi)核相互獨立,任何模塊的故障都不會導致內(nèi)核的崩潰;
(2). 驅(qū)動程序、網(wǎng)絡協(xié)議、文件系統(tǒng)和應用程序都處于程序空間,都調(diào)用相同的內(nèi)核API,開發(fā)與調(diào)試和應用程序沒有區(qū)別;
(3). 操作系統(tǒng)功能模塊可以根據(jù)需要動態(tài)地加載或卸載,不需要編譯內(nèi)核。在高可靠性要求的情況下,可以編寫監(jiān)視模塊,對可靠性要求高的模塊進行監(jiān)視,必要的時候重新啟動或重新加載而無須重啟系統(tǒng)。高可靠性的內(nèi)核結(jié)構(gòu)使QNX具備了高可靠性嵌入式操作系統(tǒng)的本質(zhì)特征。
QNX Neutrino操作系統(tǒng)的微內(nèi)核,管理一組協(xié)作的進程,如下圖所示,這種結(jié)構(gòu)不是一種層級的組織,更像是一個團隊,因為不同的進程可以通過內(nèi)核來協(xié)調(diào)交互。QNX Neutrino充當一個“軟件總線”的角色,可以在需要的時候動態(tài)的插入和移除系統(tǒng)模塊。

2.3 IPC
進程間通信 (IPC) 是將應用程序設計為一組協(xié)作進程的關(guān)鍵。
QNX 是同類中第一個使用消息傳遞作為IPC 基本手段的商業(yè)操作系統(tǒng)。操作系統(tǒng)的強大功能、簡單性和優(yōu)雅性在很大程度上歸功于在整個系統(tǒng)中完全集成了消息傳遞方法。
在 QNX Neutrino 中,消息是從一個進程傳遞到另一個進程的字節(jié)包。操作系統(tǒng)對消息的內(nèi)容沒有任何特殊意義——消息中的數(shù)據(jù)對消息的發(fā)送者和接收者都有意義,但對其他人沒有意義。
消息傳遞不僅允許進程相互傳遞數(shù)據(jù),而且還提供了一種同步多個進程執(zhí)行的方法。當它們發(fā)送、接收和回復消息時,進程會經(jīng)歷各種“狀態(tài)變化”,這些變化會影響它們運行的時間和時間。
了解它們的狀態(tài)和優(yōu)先級后,微內(nèi)核可以盡可能高效地調(diào)度所有進程,以充分利用可用的 CPU 資源。這種單一的、一致的方法——消息傳遞——因此在整個系統(tǒng)中不斷地運行。
實時應用程序和其他關(guān)鍵任務應用程序通常需要可靠的IPC 形式,因為構(gòu)成此類應用程序的過程是如此緊密相關(guān)。QNX Neutrino 的消息傳遞設計強加的紀律有助于為應用程序帶來秩序和更高的可靠性。
2.4 內(nèi)存保護
QNX Neutrino利用MMU,在受保護的環(huán)境中實現(xiàn)了POSIX的線程模型。
針對內(nèi)存保護,有以下幾種情況:
不提供內(nèi)存保護:所有程序位于同一個地址空間,應用程序可以訪問所有空間,效率較高,但是程序指針錯誤可能造成內(nèi)核崩潰
單內(nèi)核OS提供部分內(nèi)存保護:用戶層和系統(tǒng)層進行了隔離,內(nèi)核和各種驅(qū)動、協(xié)議棧在同一個地址空間,應用程序在單獨空間。內(nèi)核模塊處于一個保護空間,效率較高,應用程序無法訪問,系統(tǒng)的穩(wěn)定性也得到提高。由于內(nèi)核模塊處于保護空間,調(diào)試會比較困難。比如Linux系統(tǒng)。
微內(nèi)核OS提供完整的內(nèi)存保護:內(nèi)核處于一個被保護的地址空間,驅(qū)動程序、網(wǎng)絡協(xié)議及應用程序等處于程序空間中。

QNX就是微內(nèi)核,使用的上面c方案,如上圖。內(nèi)存保護其實就是微內(nèi)核中的系統(tǒng)服務之間:地址空間隔離。
2.5 分布式網(wǎng)絡

網(wǎng)絡中任何機器上的任何線程都可以直接使用任何其他機器上的任何資源。從應用程序的角度來看,本地資源和遠程資源之間沒有區(qū)別——不需要在應用程序中構(gòu)建特殊設施來允許它們使用遠程資源。
用戶可以訪問網(wǎng)絡上任何地方的文件,利用任何外圍設備,并在網(wǎng)絡上的任何機器上運行應用程序(只要他們有適當?shù)臋?quán)限)。進程可以在整個網(wǎng)絡的任何地方以相同的方式進行通信。同樣,操作系統(tǒng)無所不在的消息傳遞 IPC 解釋了這種流暢、透明的網(wǎng)絡。
4.QNXNeutrino RTOS
QNX Neutrino實時操作系統(tǒng)(RTOS):內(nèi)存受保護的微內(nèi)核架構(gòu)。
QNX Neutrino實時操作系統(tǒng)架構(gòu)如下圖所示:

QNX Neutrino RTOS是功能齊全性能可靠的簡化版操作系統(tǒng),可滿足最小規(guī)格的實時嵌入系統(tǒng)的有限資源要求。其真正的微內(nèi)核操作系統(tǒng)和模塊化架構(gòu)可使客戶以較低的運行總成本創(chuàng)建高度優(yōu)化的可靠系統(tǒng)。
(1). 該系統(tǒng)建立在真正的微內(nèi)核架構(gòu)上。在這種系統(tǒng)中,所有驅(qū)動程序、應用程序、協(xié)議棧和文件系統(tǒng)都在內(nèi)核外部內(nèi)存受保護的安全的用戶空間內(nèi)運行。幾乎所有組件在出現(xiàn)故障時都能自動重啟而不會影響其他組件或內(nèi)核。
(2). 該系統(tǒng)采用模塊化結(jié)構(gòu),可允許用戶動態(tài)升級模塊、引入新功能或?qū)嵤﹩栴}修復,而無高增加停機時間和系統(tǒng)中斷的成本。
(3). 該系統(tǒng)采用多核技術(shù)和內(nèi)置透明分布處理技術(shù)。
(4). 該系統(tǒng)根據(jù)POSIX標準設計,只需通過簡單地重新編譯,就可移植既存代碼、開源UNIX、Linux和因特網(wǎng)代碼。通過標準應用程序接口,用戶能重新使用應用程序代碼。
(5). 該系統(tǒng)利用自適應分區(qū)技術(shù)確保系統(tǒng)資源滿足應用要求。
(6). 該系統(tǒng)支持x86、PowerPC和ARM平臺。
QNX Momentics工具套件(ToolSuite):基于Eclipse的靈活集成開發(fā)環(huán)境。
(1). 該工具套件包含用戶所需的所有工具,便于迅速創(chuàng)建和優(yōu)化用于QNX Neutrino實時操作系統(tǒng)的應用程序。從板卡啟動到遠程診斷,QNXMomentics工具套件為用戶提供在整個開發(fā)周期內(nèi)節(jié)省時間的工具,而且全部在單獨、使用簡便的環(huán)境中進行。
(2). 用戶可選擇自己喜歡的編程語言、主機和目標機。利用QNX Momentics工具套件,用戶可使用C、C++、嵌入式C++編程;可以在Windows或Linux主機中開發(fā)程序;并以ARM、PowerPC和x86處理器為開發(fā)目標,所有工具都取自相同的集成開發(fā)環(huán)境(IDE)。該工具套件還提供極大的靈活性,允許用戶同時混用多種編程語言和處理器架構(gòu)。
(3). 該工具套件提供了大量的優(yōu)質(zhì)高效的分析工具,以加快產(chǎn)品交付所有階段的進展。該工具套件包括許多非侵入式圖形分析工具,以幫助用戶輕松隔離并呈現(xiàn)資源的使用情況、定位瓶頸并對系統(tǒng)性能進行精確調(diào)整,包括應用程序剖析、系統(tǒng)剖析和內(nèi)存分析。
(4). 該工具套件支持所有QNXNeutrino實時操作系統(tǒng)技術(shù),包括多核技術(shù)、擴展網(wǎng)絡、閃存文件系統(tǒng)、高級圖形和透明分布處理技術(shù)等。
(5). 該工具套件中含有經(jīng)過優(yōu)化的GCC編譯器、GDB調(diào)試程序。
5.開源代碼及開源商業(yè)模式
代碼路徑:https://github.com/vocho/openqnx

README中,有編譯的方法,但是讓我安裝一個軟件,這個就是工具鏈。而這個不開源的工具鏈需要license。我搞了一通沒成功,放棄了。這不能編譯,只開放了內(nèi)核核心代碼但是不全啊!還不能編譯,誰有可以編譯的方法可以告訴我,一起學習。
審核編輯:劉清
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3747瀏覽量
133633 -
UNIX
+關(guān)注
關(guān)注
0文章
296瀏覽量
43047 -
IPC
+關(guān)注
關(guān)注
3文章
378瀏覽量
54889 -
qnx
+關(guān)注
關(guān)注
0文章
130瀏覽量
27309
原文標題:QNX入門-簡介、開源代碼、框架文檔
文章出處:【微信號:OS與AUTOSAR研究,微信公眾號:OS與AUTOSAR研究】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
AG32VF-MIPI應用場景
MOS管的應用場景
幾種LED調(diào)光協(xié)議分析及具體應用場景介紹
逐一介紹Linux各個系統(tǒng)的特點以及應用場景
Firefly集群服務器的應用場景資料介紹
QNX消息傳遞及其在線程間通信的應用
警用無人機應用場景和特點
三種近場通信技術(shù)及其特點及未來近場通信技術(shù)的應用場景
貼片Y電容的各種型號及其特點介紹
國產(chǎn)光耦繼電器的性能特點及應用場景
QNX的特點及其應用場景介紹
評論