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