軟件定義的汽車
與20年前的數(shù)據(jù)中心類似,傳統(tǒng)汽車是經(jīng)典的“硬件隔離軟件”架構(gòu),。每一輛量產(chǎn)車有50+軟件供應(yīng)商,,要讓這么多軟件模塊安全可靠地在同一輛車上運行,傳統(tǒng)的方法是讓每一個供應(yīng)商把軟件封裝在自己的計算機硬件里面,。這些供應(yīng)商封裝提供的計算機叫作ECU,。每個ECU里面有一套完整的芯片、存儲,、操作系統(tǒng)與應(yīng)用軟件,,ECU之間只通過簡單的實時網(wǎng)絡(luò)傳輸信息,從而達成隔離不同供應(yīng)商軟件的目的,。今天每一輛汽車有100~150個ECU,,其軟件的復(fù)雜性已經(jīng)很難管理。
因而,,以Tesla為代表的“造車新勢力”開始采用以軟件為中心的架構(gòu),,新一代智能汽車也不再有100+ECU,而是擁有一臺到幾臺通用計算機,。供應(yīng)商的軟件作為模塊運行在這些計算機上,,隔離不同供應(yīng)商模塊的不再是硬件與網(wǎng)絡(luò),而是軟件容器,,這就是“軟件定義的汽車”,。而以軟件為中心的新架構(gòu)對下一代汽車的基礎(chǔ)軟件,包括其核心操作系統(tǒng),,提出了新的要求,。
智能汽車操作系統(tǒng)之爭
目前,智能汽車正在從ECU向“軟件定義”過渡,,車企不能一步到位,,走到每輛車只有一臺超級計算機的架構(gòu),,只能過渡到每輛車3~4個“域計算機”(也稱“域控制器”),其中有兩個很重要的域:ADAS域與座艙域,。
ADAS域計算機管理著汽車自動駕駛的傳感器,、AI推理、決策與控制,。
座艙域計算機管理著汽車座艙的控制與用戶交互體驗,。
這兩個域的操作系統(tǒng)并不相同。在座艙域中,,車企一般使用的是Android系統(tǒng),,或者是剪裁版的Linux,以保證大量應(yīng)用程序的兼容性,。座艙里的Linux與Android系統(tǒng)使用開源的底層操作系統(tǒng),有巨大的開發(fā)者社區(qū),。其上層的應(yīng)用App可以是開源或閉源的,。
在ADAS域中,車企一般使用商業(yè)的實時操作系統(tǒng),,如QNX與VxWorks等,。ADAS的底層操作系統(tǒng)一般不開源,而應(yīng)用雖然有開源的,,如Autoware與百度的Apollo,,但是絕大部分算法、傳感器集成以及推理應(yīng)用都是不開源的,。
當(dāng)然,,這兩個域的操作系統(tǒng)也有重疊的地方。例如,,座艙域中顯示駕駛數(shù)據(jù)的屏幕(車速,、自動駕駛信息)一般是用QNX,以保證實時的數(shù)據(jù)讀寫,。在座艙內(nèi),,對Android、Linux與QNX的需求還產(chǎn)生了專門的Hypervisor虛擬化解決方案,,如OpenSynergy,,能讓幾個操作系統(tǒng)用虛擬化的方式運行在同一個硬件計算機上。
因而,,未來“軟件定義的汽車”有很大幾率會從幾個域進一步進化為一個超級計算機,。這個計算機需要一整套操作系統(tǒng)與中間件服務(wù),去為座艙,、自動駕駛等各種車內(nèi)應(yīng)用服務(wù),。想要實現(xiàn)這個操作系統(tǒng),,主要有以下兩條路徑。
以目前座艙使用的Linux為基礎(chǔ)改造,。一方面是把Linux繼續(xù)剪裁,;另一方面是在Linux上增加對實時任務(wù)的支持。盡管Linux本身不是一個實時操作系統(tǒng),,也不是為嵌入式設(shè)備設(shè)計的,,這條路徑有相當(dāng)大的難度,但Linux已經(jīng)有了龐大的開發(fā)者社區(qū)與應(yīng)用生態(tài),。這里比較有代表性的是Linux基金會旗下的Automotive Grade Linux (AGL),。AGL有近百個成員公司,包含了世界上主要的主機廠商與一級供應(yīng)商,。
開發(fā)嶄新的下一代實時操作系統(tǒng),。一個有力的競爭者是Linux基金會旗下的seL4。seL4是一個基于微內(nèi)核的實時操作系統(tǒng),,它的一個主要特點是經(jīng)過形式化驗證,,能保證內(nèi)核的安全穩(wěn)定性。但seL4目前只有內(nèi)核,,中間件與應(yīng)用生態(tài)建設(shè)仍然有很長的路,。好消息是汽車行業(yè)的地平線、蔚來汽車,、理想汽車,、Second State最近都加入了seL4基金會,共建生態(tài),。
我們注意到,,未來汽車操作系統(tǒng)的明顯趨勢是開源的。這意味著開發(fā)者試驗與進入汽車生態(tài)的門檻會越來越低,。
在智能汽車火熱的中國市場中,,有技術(shù)實力的汽車軟件公司也都在向自研操作系統(tǒng)努力。它們都是從基于Linux的座艙系統(tǒng)(如前述的AGL)往實時車控操作系統(tǒng)演進,。其中比較有代表性的是以下幾家,。
阿里與上汽合資的斑馬智行于2021年7月獲得30億元的增資,主要用于基于開源的AliOS的汽車操作系統(tǒng)開發(fā),。
華為于2021年發(fā)布了開源微內(nèi)核的鴻蒙操作系統(tǒng),,業(yè)界普遍認為是可以用在未來汽車上的。
鎂佳在2021年5月融資一億美元,,用于汽車操作系統(tǒng)與應(yīng)用商店的研發(fā),。
中科創(chuàng)達是國內(nèi)領(lǐng)先的汽車軟件應(yīng)用開發(fā)商,其高層在最近的訪談中反復(fù)強調(diào)了公司要做操作系統(tǒng)的決心,。
加之前面提到的seL4基金會成員地平線,、蔚來,、理想、Second State,,中國廠商目前在汽車操作系統(tǒng)的兩個主要方向都有布局,,正走在世界智能汽車操作系統(tǒng)領(lǐng)域的前列。
軟件生態(tài)與容器
放眼智能汽車的生態(tài)圈,,今天的座艙與ADAS兩個域計算機都是以整體解決方案的方式售賣給整車廠,。對于整車廠來說,這兩個重要域計算機是黑盒,。域計算機的供應(yīng)商,,而不是整車廠,正在掌控著這兩個域的相關(guān)軟硬件生態(tài),。例如,,ADAS激光雷達的選型、座艙語音識別的算法選擇都是由域計算機供應(yīng)商決定的,。這與今天的汽車生態(tài)格格不入,,也不是整車廠能夠長期接受的方案。而未來,,如果軟件定義的汽車發(fā)展到每輛車只有一臺超級計算機,對這臺計算機的操作系統(tǒng)與軟件生態(tài)的控制權(quán),,更是整車廠不能放棄的,。
這里的挑戰(zhàn)是,整車廠或者域供應(yīng)商,,如何在一個開放的計算平臺上安全高效地集成多個下游供應(yīng)商與開發(fā)者寫的軟件,?其實,這個問題在“軟件定義的數(shù)據(jù)中心”已經(jīng)有了很好的解決方向:使用軟件容器隔離各個供應(yīng)商寫的模塊,。
云原生數(shù)據(jù)中心用Docker這類軟件容器實現(xiàn)隔離,。汽車廠商也一直在試圖使用Docker這樣的軟件容器。
豐田汽車以及多個整車廠都已經(jīng)試驗過在車上的Linux系統(tǒng)上運行Docker,。
實時操作系統(tǒng)VxWorks在2019年正式推出了Docker與Kubernetes(以下簡稱K8s)的支持,。
QNX也在多個技術(shù)會議上表達了支持Docker的意愿。但是,,在云原生數(shù)據(jù)中心大量使用的Docker與K8s并不能從根本上滿足汽車上軟件容器的需求,。它們太慢,太重,,也不能滿足實時性的需求,。市場上急需一個更好的解決方案。
新一代的輕量級軟件沙盒/容器技術(shù),,如支持多種編程語言與多種操作系統(tǒng)/硬件的WebAssembly Runtime,,是在汽車這種邊緣設(shè)備上實現(xiàn)軟件隔離的很好選擇,。WebAssembly直接從操作系統(tǒng)的線程啟動,并不需要模擬一個自己的操作系統(tǒng)環(huán)境,,在啟動時間上可以比Docker這類解決方案快100倍以上,。
基于WebAssembly的軟件容器也需要自己的管理與編排工具。這里主要有兩個思路,。
利用K8s在云原生成熟的生態(tài),,將K8s改造為能編排邊緣設(shè)備上WebAssembly容器的工具。輕量級的K8s工具,,如KubeEdge,、SuperEdge與OpenYurt,已經(jīng)在邊緣設(shè)備上應(yīng)用,。
用數(shù)據(jù)流處理框架,,在傳感器的數(shù)據(jù)流之中實時啟動容器與第三方應(yīng)用。目前基于ROS的自動駕駛解決方案,,如ERDOS與Autoware,,都可以走這個方案。工業(yè)應(yīng)用的實時流處理框架,,如YoMo,,也可以用來調(diào)度WebAssembly容器。云原生計算基金會(CNCF)的正式托管項目WasmEdge也已經(jīng)實現(xiàn)了與YoMo和ERDOS 的適配,。
WebAssembly Runtime抽象了底層的硬件與操作系統(tǒng),,開發(fā)者就能用現(xiàn)代的編程語言與框架,如Rust,,寫出高性能,、可移植的汽車應(yīng)用。
開發(fā)者的機會
軟件定義的數(shù)據(jù)中心產(chǎn)生了“云原生”的使用場景,,賦能了大量開發(fā)者,。軟件定義的汽車也會讓第三方開發(fā)者更容易進入汽車。對于廣大開發(fā)者來說,,軟件定義的汽車的意義在于把汽車變成一個開放的計算平臺,。標(biāo)準(zhǔn)化的硬件、開源的操作系統(tǒng),、開源的容器與運行沙盒,,都會大大降低開發(fā)者參與汽車應(yīng)用開發(fā)的門檻。
未來整車廠的核心能力將不再是引擎與變速箱,,也不再是整合幾個一級供應(yīng)商的部件,,而是像今天的公有云或者手機廠一樣,整合軟件開發(fā)者的生態(tài),為用戶提供最好的軟件體驗,。
新程序員們,,軟件定義的汽車時代已經(jīng)來臨了,你們準(zhǔn)備好了嗎,?