智能駕駛底層軟件的核心是其運(yùn)行的操作系統(tǒng),該系統(tǒng)主要運(yùn)行在智能駕駛域控制器上,支持自動駕駛所需的高性能計算和高帶寬通信異構(gòu)芯片??紤]到智駕系統(tǒng)本身對安全性,實(shí)時性和可靠性的要求較高,因此,這類需求也會同步加載到其底層的操作系統(tǒng)性能和計算能力上。比如為了滿足融合感知和決策計算的要求,需要操作系統(tǒng)具備強(qiáng)大的計算能力;而為了滿足多傳感器數(shù)據(jù)的實(shí)時訪問和處理,又需要強(qiáng)大的數(shù)據(jù)吞吐量;最后,為了滿足各種算法模型的需求,高生態(tài)兼容性和擴(kuò)展性也是必須的要求。
Linux和QNX的使用區(qū)別
當(dāng)前,業(yè)內(nèi)關(guān)于智能駕駛操作系統(tǒng)內(nèi)核主要有兩條開發(fā)路徑(當(dāng)然排除一些自研類,如華為的AOS)。一種是基于純Linux原生代碼嫁接開發(fā)的操作系統(tǒng)。這一類還有衍生版本,那就是繼承了Linux豐富的開源生態(tài),基于開源強(qiáng)大的Linux宏內(nèi)核,著力增強(qiáng)其安全性和實(shí)時性,針對功能安全級別ASIL B而開發(fā)的增強(qiáng)型安全Linux操作系統(tǒng)。
另一種也是行業(yè)內(nèi)比較推崇的QNX操作系統(tǒng),該操作系統(tǒng)主要是 Blackberry Limited 提供的商用實(shí)時操作系統(tǒng),它是一個類 Unix 操作系統(tǒng)。該操作系統(tǒng)中使用的內(nèi)核是微內(nèi)核。
整體上,Linux和QNX的整體區(qū)別如下:
Linux的目標(biāo)系統(tǒng)類型是嵌入式系統(tǒng)、移動設(shè)備、個人計算機(jī)、服務(wù)器、大型計算機(jī)和超級計算機(jī)。Linux 支持的計算機(jī)架構(gòu)有 IA-32、x86-64、ARM、PowerPC 和 SPARC。它的內(nèi)核類型是Monolithic。它的原生 API 是 LINUX/POSIX。它具有 GNU GPLv2(內(nèi)核)的首選許可證。通過其子系統(tǒng)支持的非本機(jī) API 是 Mono、Java、Win16 和 Win32。Linux 支持的文件系統(tǒng)有 ext2、ext3、ext4、btrfs、ReiserFS、FAT、ISO 9660、UDF 和 NFS。
QNX的目標(biāo)系統(tǒng)類型是汽車、醫(yī)療、智能手機(jī)、消費(fèi)、工業(yè)、嵌入式系統(tǒng)和安全。QNX 支持的計算機(jī)架構(gòu)有 x86、SH-4、PowerPC、ARM 和 MIPS。它的內(nèi)核類型是微內(nèi)核。它的原生 API 是 POSIX 和 Java。它具有專有的首選許可,其子系統(tǒng)不支持非本機(jī) API。QNX 支持的文件系統(tǒng)有 QNX4FS、QNX6、ext2、FAT、ISO 9660、Joliet、NFS、CIFS、ETFS、UDF、HFS、HFS+ 和 NTFS。
這點(diǎn)上QNX則主要支持Cortex-A系列(ARMv7 或ARMv8及后續(xù)),且不規(guī)劃支持Cortex-M及R系列(特別是沒有MMU低主頻的MCU等)支持X86系列。這點(diǎn)上QNX相較于Linux來說略遜一些。
可以說,QNX 是一個符合 Posix 標(biāo)準(zhǔn)的商業(yè)實(shí)時操作系統(tǒng)。Linux 是一個未正式兼容 Posix 的通用開源操作系統(tǒng)內(nèi)核。實(shí)際上,對于開發(fā)人員來說,兩者都感覺像是 Unix。但是,考慮到智駕系統(tǒng)開發(fā)的不同需求,兩者的應(yīng)用場景也不相同。
此外,QNX操作系統(tǒng)通過萊茵認(rèn)證的基礎(chǔ)功能安全認(rèn)證IEC61508SIL3,道路車輛功能安全最高等級ISO 26262 AISL D標(biāo)準(zhǔn),醫(yī)療行業(yè)IEC62304及鐵路EN50128認(rèn)證功能安全認(rèn)證,認(rèn)證范圍包括工具鏈TCL3認(rèn)證、Neutrino微內(nèi)核、APS自適應(yīng)分區(qū)調(diào)度、libc、libm和libsupc++庫等。
因此,從如上幾個方面的對比中可以看出,Linux在適配自動駕駛汽車上還是存在一定的劣勢。從至少滿足功能安全ASIL B的角度出發(fā),QNX是能夠滿足智駕系統(tǒng)功能安全等級的,Linux卻無法滿足性能指標(biāo)。
Linux和QNX在智駕領(lǐng)域的使用現(xiàn)狀
智能汽車開發(fā)使用Linux的原因主要是基于如下原因考慮:
Linux有多種程序語言與開發(fā)工具。如gcc、cc、C++、Perl、Fortran77等。對于不同的開發(fā)平臺的接口和軟件適配度將更好。由于Linux內(nèi)核大部分是用C語言編寫,并采用可移植Unix標(biāo)準(zhǔn)應(yīng)用程序接口,支持i386、Alpha、AMD、Sparc等系統(tǒng)平臺,因此,可以很好的支持車載智能汽車等相關(guān)嵌入式設(shè)備的控制。
同時,Linux是一個真正多任務(wù)多用戶的操作系統(tǒng),開發(fā)人員可以對自己需要的資源配置需求的權(quán)限,這種方式允許多應(yīng)用程序同一時間調(diào)用操作系統(tǒng)資源且互不影響。并且,由于Linux內(nèi)的源代碼是以標(biāo)準(zhǔn)的32位計算機(jī)來做的最佳設(shè)計,因此基本可以確保其系統(tǒng)的穩(wěn)定性,不易宕機(jī)。
此外,相當(dāng)重要的一點(diǎn)是Linux內(nèi)部自帶的防火墻、入侵檢測和安全認(rèn)證等工具也能在很多情況下滿足對網(wǎng)絡(luò)安全性的需求。在處理器類別支持度上,Linux可以支持Cortex-A & M及X86系列,其支持度還是相對較為全面。
基于如上的原因,當(dāng)前智能駕駛業(yè)界內(nèi)部使用較為廣泛的還是Linux系統(tǒng)。
操作系統(tǒng) | 廠家 |
---|---|
Linux | 蔚來、小鵬、上汽大通、一汽紅旗、華人運(yùn)通、廣汽、宏景智駕 |
QNX | 滴滴、德賽西威、模式智能、國外部分OEM |
Linux在智駕設(shè)計中的安全缺陷
相對于互聯(lián)網(wǎng)行業(yè),自動駕駛領(lǐng)域內(nèi)特別關(guān)注的指標(biāo)還有功能安全。而Linux在功能安全上還顯得相當(dāng)稚嫩。主要體現(xiàn)在如下幾方面:
1、虛擬化的功能安全性
Linux采用的是Open Source/GPL2/3; Monolithic kernel。
首先,GPL是可以允許將使用的產(chǎn)品最大化的授權(quán)給用戶,確保用戶可以獲得自由運(yùn)行、復(fù)制、研究和改進(jìn)的分發(fā)產(chǎn)品。因此,對于Linux這類開源產(chǎn)品來說,允許開發(fā)社區(qū)工程師任意注入不穩(wěn)定或存在一定bug的程序代碼,可能導(dǎo)致系統(tǒng)的突然崩潰,自然無法滿足功能安全需求。
2、操作系統(tǒng)本身安全性
此外,從操作系統(tǒng)功能安全性來說,Linux這類操作系統(tǒng)相當(dāng)于基于宏內(nèi)核架構(gòu)設(shè)計而成,其硬實(shí)時性問題及開源版本分支維護(hù)問題都相當(dāng)明顯,如果不經(jīng)過深度定制和裁減,不可能滿足功能安全中的暴露度、嚴(yán)重度、可控性要求。然而,深度定制對團(tuán)隊要求卻極高,這點(diǎn)上,對于自動駕駛研發(fā)團(tuán)隊來說幾乎是不太可能。
3、圖形功能安全
Linux的圖形處理功能主要是指圖像處理軟件模塊基本是沒有相關(guān)的功能安全認(rèn)證的。因此,利用Linux在進(jìn)行圖像解析及處理過程中也無法保證其功能安全。
此外,Linux源碼多達(dá)2500萬行,一般智駕系統(tǒng)公司的項目開發(fā)團(tuán)隊不具備裁剪Linux的能力,整體鑒定難度較大,同時對軟件架構(gòu)師的要求較高,需要對Linux系統(tǒng)進(jìn)行軟件安全分析及設(shè)計過程難度就會加大。
目前業(yè)內(nèi)沒有一家使用Linux操作系統(tǒng)通過了功能安全認(rèn)證,開發(fā)Linux系統(tǒng)要達(dá)到ASIL B是行業(yè)的難點(diǎn)。主要體現(xiàn)在如下幾點(diǎn):
1、缺失流程文檔
首先,Linux系統(tǒng)軟件缺乏需求和架構(gòu)文檔,需求、架構(gòu)和設(shè)計代碼一致性無法追溯。同時,軟件缺失安全分析,包括FMEA分析,沒有識別失效模式。Linux的軟件監(jiān)控過程沒有進(jìn)行合理的ASIL分解,需要額外考慮獨(dú)立性。
2、硬實(shí)時性無法完全保證
Linux系統(tǒng)開發(fā)過程中難以保證硬實(shí)時性,代碼移植的代價較大,實(shí)時內(nèi)核無法在Linux上無法表現(xiàn)出優(yōu)越性,Linux核內(nèi)軟件也無法滿足安全性。
3、測試工作量較大
Linux整體編碼規(guī)則不合符ISO26262,特別是針對功能安全這塊需要做一定程度的裁減。代碼工作量相對較大,單元測試的工作量也比較大。
改進(jìn)Linux缺陷在智駕系統(tǒng)的設(shè)計方法
當(dāng)然市場上也有一些廠家、tier1或者tier2考慮對Linux系統(tǒng)進(jìn)行一定程度的改良。實(shí)施對Linux Guest OS進(jìn)行功能開發(fā)和安全增強(qiáng)的策略。
比如ELISA項目(https://elisa/tech/)一直在致力于如何將Linux系統(tǒng)認(rèn)證成ASILB; ,且該項目目前正在進(jìn)行中。SIL2 LinuxMP項目(http://sil2.osadl.org)也已經(jīng)開發(fā)結(jié)束,很多其他項目也有參考該項目內(nèi)的成果,包含開發(fā)工具相關(guān)的內(nèi)容,但沒有認(rèn)證成B。另外,像博世V2x項目也做過類似的研究,但是也沒有完成相應(yīng)的認(rèn)證。
總結(jié)起來,對于Linux采取的安全方法無非就是針對其基線選型、需求定義、裁減/配置、安全分析等作出不同的應(yīng)對策略。
首先,基線選型一般選擇開源社區(qū)LTS版本作為基線來源,參考業(yè)界主流的版本基線如:redhat/windriver,并根據(jù)目標(biāo)芯片的BSP支持情況作為參考,重大功能更新、漏洞更新都需要實(shí)時的進(jìn)行。同時,采用分析+評審的方法對選型的結(jié)果進(jìn)行驗證。
其次,重要的部分包括需求定義。如產(chǎn)品需求到Linux內(nèi)存分配過程中都需要優(yōu)化任務(wù)調(diào)度、進(jìn)程管理以及內(nèi)存管理,并有效定義目標(biāo)ASIL 等級、Failsafe、FTTI等。同時,恰當(dāng)?shù)倪x定SOC,具備Safety manual。外部安全機(jī)制(比如程序流監(jiān)控、數(shù)據(jù)流監(jiān)控、冗余計算、冗余存儲等)這些方面的有效實(shí)施也是非常重要的。需要采用高效的檢查方法對需求進(jìn)行驗證。當(dāng)然基于需求進(jìn)行精煉并提取有效的數(shù)據(jù)流和控制流進(jìn)行分析驗證也是Linux安全分析中比較重要的一環(huán)。
最后,涉及裁減配置兩方面內(nèi)容還有通過高效的配置工具(如OSADL Minimization tool)針對需求分析的Strace信息對內(nèi)核進(jìn)行裁減,依據(jù)最佳時間或產(chǎn)品的特性對內(nèi)核進(jìn)行配置,最后基于檢查加分析的方法對內(nèi)核進(jìn)行配置和驗證。
除開以上羅列的措施要素外,也可以將Linux當(dāng)做軟件組件來進(jìn)行軟件組件鑒定(ASIL B)的方法,但是這類鑒定對于超大型軟件代碼的鑒定不太適用,且相關(guān)的標(biāo)準(zhǔn)也還在制定過程中。
總體說來,這類改造在一定程度上可能導(dǎo)致系統(tǒng)軟件改造后無法繼續(xù)表現(xiàn)出常規(guī)Linux的優(yōu)越性。且在一定程度上會存在縮水打包Linux的軟件包的情況,該軟件包可以在任意硬件上執(zhí)行而沒有任何限制,也可以用于對Safety要求較高的應(yīng)用程序限制。
如上圖所表示的典型智駕系統(tǒng)中使用Linux作為操作系統(tǒng)在核間通信的整體過程描述。Linux的功能安全策略主要是通過在核內(nèi)或核間診斷,檢測Linux核內(nèi)空間的軟件錯誤。然后,通過搜集核間和用戶空間內(nèi)軟件錯誤,實(shí)現(xiàn)完整的診斷過程。此外,在安全島上軟件測試庫和主CPU核實(shí)現(xiàn)連續(xù)監(jiān)控潛在硬件錯誤,這些硬件錯誤可能是在上電期間或者運(yùn)行期間出現(xiàn)的,且報出錯誤給到相應(yīng)的診斷模塊。同時,安全島診斷模塊和安全主CPU核診斷過程模塊可以報告軟件錯誤給到MCU診斷模塊。
QNX應(yīng)用在智駕系統(tǒng)的優(yōu)勢分析
通常情況下,自動駕駛系統(tǒng)的功能安全等級是否能達(dá)成,從底向上可以分解為硬件驅(qū)動層、硬件抽象層、操作系統(tǒng)層面、實(shí)時調(diào)度層、核間通訊層、應(yīng)用軟件層。QNX作為另一種在智駕領(lǐng)域使用的操作系統(tǒng),其采用的Hypervisor虛擬化技術(shù)則是通過TUV萊茵認(rèn)證的道路車輛功能安全最高等級ISO 26262 ASIL D標(biāo)準(zhǔn),認(rèn)證范圍包括工具鏈TCL3認(rèn)證、Hypervisor及OS內(nèi)核、APS、Libc、libm、libsupc++、vdev及SMMU等。
下圖表示了整個軟件架構(gòu)的功能安全目標(biāo)達(dá)成情況。
其中,大部分軟件模塊通過一定的手段均能滿足功能安全目標(biāo),該操作系統(tǒng)參照Linux的基礎(chǔ)架構(gòu)進(jìn)行開發(fā),則無法滿足功能安全需求。因為無論是從功能安全對操作系統(tǒng)的基礎(chǔ)要求還是增值要求來看,都無法滿足相應(yīng)的性能指標(biāo)要求。
而另一方面,面向儀表板的QNX平臺是基于BlackBerry QNX針對汽車儀表板參考硬件的高度優(yōu)化的基于OpenGL的圖形框架構(gòu)建,并由領(lǐng)先的集群UI框架提供支持。更重要的是,QNX儀器集群平臺還提供ISO 26262 ASIL B預(yù)認(rèn)證圖形監(jiān)視器子系統(tǒng)。配合BlackBerry QNX的ISO 26262 ASIL D預(yù)認(rèn)證RTOS和工具鏈。
QNX作為ISO/SAE 21434網(wǎng)絡(luò)信息安全全球標(biāo)準(zhǔn)制定組成成員(基礎(chǔ)軟件組,惟一的操作系統(tǒng)供應(yīng)商),將在標(biāo)準(zhǔn)2021年正式發(fā)布后,通過ISO/SAE21434 CAL4 最高網(wǎng)絡(luò)信息安全等級。網(wǎng)絡(luò)信息安全模塊包括QNX SDP 7.0,Certicom(Onstar 用),larvis,黑莓Cybersecurity Service等。
那么QNX有那么多好處,如果當(dāng)前開發(fā)團(tuán)隊考慮更換Linux為QNX的話需要考慮哪些方面對對安全的何影響呢?
1、內(nèi)存保護(hù)如何實(shí)現(xiàn)?
Linux也支持進(jìn)程、線程設(shè)計,其保護(hù)策略和QNX一樣的,但沒有經(jīng)過功能安全認(rèn)證。因此,需要做應(yīng)用層“冗余存儲+校驗”來實(shí)現(xiàn)安全保護(hù),這一過程可能導(dǎo)致內(nèi)存、算力均可能翻倍。同時,需要確認(rèn)是否可以有硬件MPU(合理的OS被調(diào)用)以保證安全。
2、功能模塊分區(qū)設(shè)計如何實(shí)現(xiàn)?
Linux需要確認(rèn)進(jìn)程和線程的優(yōu)先級是否可以配置,線程對應(yīng)用層有接口,進(jìn)程設(shè)計需求有應(yīng)用層配置和接口設(shè)計。
3、軟件架構(gòu)設(shè)計是否需要重新調(diào)整?
對于操作系統(tǒng)的切換過程,實(shí)際上應(yīng)用層是不需要重構(gòu)的,但是BSP部分則需要根據(jù)QNX做相應(yīng)的性能調(diào)整。
4、任務(wù)調(diào)度或線程輪巡是否受影響?
由于Linux的任務(wù)調(diào)度是沒有經(jīng)過功能安全認(rèn)證的,其看門狗監(jiān)控任務(wù)的執(zhí)行周期也需要做進(jìn)一步的優(yōu)化。同時,也需要加強(qiáng)消息隊列的保護(hù)措施,如在進(jìn)程之間的通訊采用“讀”共享內(nèi)存和寫權(quán)限禁用的方式,制定相應(yīng)的保護(hù)措施。
5、文件系統(tǒng)和時間管理策略?
最后,所有的任務(wù)都可以以引用文件的形式實(shí)現(xiàn)。系統(tǒng)時間管理:時鐘、系統(tǒng)時間、定時器等是否完全與功能安全不相關(guān)也需要做一定程度的驗證分析。
總結(jié)
智能駕駛操作系統(tǒng)的內(nèi)核是基于標(biāo)準(zhǔn)的POSIX接口,兼容Adaptive AUTOSAR等國際主流系統(tǒng)軟件中間件,滿足智能駕駛不同應(yīng)用所需的功能安全和信息安全要求??紤]當(dāng)前主流的智駕操作系統(tǒng)能力,我們可以根據(jù)自身研發(fā)能力制定不同的策略要求,增值不同的研發(fā)手段。最終目的是應(yīng)用智駕系統(tǒng)SOC異構(gòu)硬件的單元架構(gòu)和承載功能滿足功能安全的不同要求:AI單元內(nèi)核系統(tǒng)支持QM ~ ASIL B,計算單元內(nèi)核系統(tǒng)支持QM ~ ASIL D,控制單元內(nèi)核系統(tǒng)需要支持ASIL D安全級別。
-
Linux
+關(guān)注
關(guān)注
87文章
11469瀏覽量
212901 -
智能駕駛
+關(guān)注
關(guān)注
4文章
2784瀏覽量
49726 -
qnx
+關(guān)注
關(guān)注
0文章
89瀏覽量
26560 -
域控制器
+關(guān)注
關(guān)注
0文章
272瀏覽量
2996
原文標(biāo)題:?Linux和QNX兩大操作系統(tǒng)在智駕系統(tǒng)上的提升策略
文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
什么是QNX操作系統(tǒng)
Linux與其他操作系統(tǒng)的區(qū)別
LINUX操作系統(tǒng)
實(shí)時操作系統(tǒng)和Linux分時操作系統(tǒng)有哪些區(qū)別呢
Linux操作系統(tǒng)原理及應(yīng)用
Linux與其他操作系統(tǒng)的區(qū)別
什么是QNX操作系統(tǒng)
基于QNX實(shí)時操作系統(tǒng)的圖形控制界面設(shè)計

QNX推出QNX Neutrino實(shí)時操作系統(tǒng)
QNX實(shí)時操作系統(tǒng)及應(yīng)用分析

車載操作系統(tǒng)加速汽車智能化的設(shè)計指南

評論