隨著汽車(chē)中軟件發(fā)揮的作用越來(lái)越重要,軟件定義汽車(chē)已經(jīng)是行業(yè)內(nèi)的共識(shí)。汽車(chē)行業(yè)的發(fā)展極有可能最終像手機(jī)產(chǎn)業(yè)一樣,基礎(chǔ)硬件差異會(huì)越來(lái)越小,關(guān)鍵在于汽車(chē)給用戶(hù)的體驗(yàn)的多樣性,以及汽車(chē)產(chǎn)品在不同場(chǎng)景下滿(mǎn)足用戶(hù)需求的程度。而這種體驗(yàn)的差異性在很大程度上是由汽車(chē)的軟件來(lái)決定的。當(dāng)汽車(chē)中軟件代碼行數(shù)成正比不斷增長(zhǎng),隨之而來(lái)的是軟件工程復(fù)雜度指數(shù)級(jí)增長(zhǎng)和軟件故障概率的提升。車(chē)輛無(wú)論是遇到軟件故障還是更新,如果每次更新都要去4S店,效率將非常低下,線(xiàn)下售后運(yùn)營(yíng)負(fù)荷也將沉重,既難以滿(mǎn)足智能汽車(chē)更新迭代的需求,也使得用戶(hù)體驗(yàn)很差。
OTA的出現(xiàn),完美的解決了軟件頻繁更新的問(wèn)題,通過(guò)OTA技術(shù)則可以通過(guò)遠(yuǎn)程快速完成缺陷的修復(fù),避免了持續(xù)數(shù)月的進(jìn)廠(chǎng)召回帶來(lái)的風(fēng)險(xiǎn)。通過(guò)OTA升級(jí),可以不斷給用戶(hù)開(kāi)啟新功能,不斷優(yōu)化產(chǎn)品體驗(yàn),進(jìn)行快速迭代,吸引客戶(hù)。通過(guò)OTA,可以幫助車(chē)企節(jié)省因?yàn)檐浖毕輲?lái)的召回成本,節(jié)省大量的金錢(qián)和時(shí)間。但與此同時(shí),OTA也帶來(lái)了新的挑戰(zhàn),由于車(chē)載ECU眾多,網(wǎng)絡(luò)復(fù)雜,一旦車(chē)輛與外界建立通信,原本封閉的網(wǎng)絡(luò)更容易受到入侵的可能性,建立一整套安全防護(hù)體系是OTA的重要課題。
OTA設(shè)計(jì)要求
OTA設(shè)計(jì)主要從安全、時(shí)間、版本管理、異常處理等方面綜合考慮,具體為:
1、升級(jí)安全是OTA的最基礎(chǔ)的要求。車(chē)輛上ECU的軟件運(yùn)行狀況直接會(huì)影響到車(chē)輛上的人員的生命安全。從升級(jí)包制作,發(fā)布,下載,分發(fā),刷寫(xiě)等環(huán)節(jié),OTA需要從云,網(wǎng)絡(luò),車(chē)端來(lái)保證安全。在云端通過(guò)證書(shū),簽名和加密機(jī)制保證升級(jí)包的不會(huì)隨意被制作和發(fā)布,升級(jí)包內(nèi)容不會(huì)被惡意獲取。通過(guò)可靠的物理鏈路和安全傳輸協(xié)議來(lái)保證網(wǎng)絡(luò)傳輸安全。通過(guò)汽車(chē)的功能域隔離,劃分不同ASIL等級(jí),通過(guò)冗余設(shè)計(jì)保證整車(chē)的功能可靠性,通過(guò)安全啟動(dòng)來(lái)保證可信的軟件在ECU上加載啟動(dòng)運(yùn)行。
2、版本管控對(duì)于OTA來(lái)說(shuō)很重要,因?yàn)檐?chē)輛上ECU眾多,不同ECU有不同版本的軟件,不同車(chē)型ECU的需求有不同,版本也存在差異。版本的升級(jí)路徑管理,需要能夠全面準(zhǔn)確進(jìn)行管控。
3、整車(chē)升級(jí)進(jìn)行車(chē)載ECU刷寫(xiě)時(shí),特別涉及動(dòng)力域傳統(tǒng)ECU的刷寫(xiě),是通過(guò)CAN網(wǎng)絡(luò)進(jìn)行安裝包的分發(fā)。由于CAN傳輸速率很低(實(shí)際典型的速率為500Kb/s),并且CAN總線(xiàn)負(fù)載率通常要控制在30%以?xún)?nèi),因此在帶寬允許的情況下,盡可能采取并行刷寫(xiě)模式,選取刷寫(xiě)時(shí)間最長(zhǎng)的節(jié)點(diǎn)優(yōu)先處理等設(shè)計(jì)原則減少OTA升級(jí)時(shí)長(zhǎng)。
4、防變磚等異常處理。在OTA傳輸過(guò)程中,外界干擾或者其他因素導(dǎo)致刷寫(xiě)異?;蛘咧袛?,車(chē)載ECU必須支持軟件回滾、斷點(diǎn)續(xù)傳、丟失重傳等處理機(jī)制。
OTA方案架構(gòu)
一般而言,OTA方案架構(gòu),如下圖所示。
OTA云平臺(tái),主要包括了OTA云端的升級(jí)模型管理,升級(jí)包管理,升級(jí)任務(wù),升級(jí)策略以及日志管理的功能。OTA云端的設(shè)計(jì)要求是物理上實(shí)現(xiàn)租戶(hù)隔離的云平臺(tái),能夠支持多種協(xié)議下升級(jí)接入,支持多車(chē)型、多品牌、多種類(lèi)型ECU軟件版本管理,升級(jí)包制作,升級(jí)模型定義和升級(jí)策略和規(guī)則配置。能夠支持批量升級(jí)任務(wù)的調(diào)度和分發(fā)。能夠提供適配層與TSP平臺(tái)和OEM的IT系統(tǒng)進(jìn)行集成。性能上能否實(shí)現(xiàn)100萬(wàn)以上車(chē)輛升級(jí)并發(fā),差分效率能夠不小于90%,可靠性能否實(shí)現(xiàn)3個(gè)9的要求和7*24小時(shí)的系統(tǒng)連續(xù)服務(wù)。
升級(jí)模型是用于定義目標(biāo)升級(jí)設(shè)備模型的基本信息和設(shè)備模型所具備的升級(jí)能力支持情況的功能。在整車(chē)升級(jí)中,因?yàn)樯婕暗杰?chē)型與ECU的配套關(guān)系,因此升級(jí)模型一般能夠體現(xiàn)一個(gè)車(chē)型下各個(gè)零部件ECU的依賴(lài)關(guān)系,例如多個(gè)零部件ECU直接軟件包配套關(guān)系和升級(jí)順序控制,對(duì)于升級(jí)任務(wù)在設(shè)備側(cè)的準(zhǔn)確完整執(zhí)行非常重要。此外,升級(jí)模型還包含了升級(jí)規(guī)則的定義。升級(jí)規(guī)則可以用于描述升級(jí)流程中,用于允許升級(jí)能否繼續(xù)進(jìn)行的判定條件。在整車(chē)升級(jí)中,一般包括了一款車(chē)型在升級(jí)下載前,下載中,安裝前,和安裝中的判定規(guī)則配置。
軟件包是用于升級(jí)使用的程序或配置。軟件包包含有設(shè)備軟件修復(fù)的缺陷或者要加入的新功能,更新前和更新后需要做哪些驗(yàn)證檢查邏輯等,都會(huì)被打包到這個(gè)文件里。軟件包一般都是由設(shè)備軟件供應(yīng)商提供的,會(huì)通過(guò)特定渠道,發(fā)布給OTA服務(wù)方。在整車(chē)升級(jí)中,OTA 分為兩類(lèi),一種是 FOTA(Firmware-over-the-air,固件在線(xiàn)升級(jí)),指的是給一個(gè)零部件的ECU閃存下載完整的固件 鏡像 ,或者修補(bǔ)現(xiàn)有固件、更新閃存。而固件之外的軟件更新,就是 SOTA(Software-over-the-air,軟件在線(xiàn)升級(jí))。例如,車(chē)機(jī)屏應(yīng)用程序和車(chē)載地圖的升級(jí),都屬于 SOTA 的范疇。這兩種文件形態(tài),都屬于軟件包管理的范疇,通過(guò)軟件包分類(lèi)進(jìn)行區(qū)分。軟件包管理允許軟件包能夠基于軟件包版本進(jìn)行分版本的存儲(chǔ)和管理,并維護(hù)軟件類(lèi)型,全量與差分等屬性。
升級(jí)包是在升級(jí)任務(wù)中,用于真正下載和安裝部署的文件。升級(jí)包可以是設(shè)備軟件供應(yīng)商發(fā)布的軟件包文件,也可以是經(jīng)過(guò)OTA平臺(tái)完成了打包處理的文件。常見(jiàn)的升級(jí)包制作處理包括文件壓縮合并,生成特定的文件描述信息,文件簽名和加密處理。許多物聯(lián)網(wǎng)設(shè)備和車(chē)輛設(shè)備的閃存都比較小,升級(jí)包需要要能在嵌入式設(shè)備的小內(nèi)存中完成安裝。因此,升級(jí)包會(huì)盡可能地壓縮大小。為了保證效率和成功率,OTA平臺(tái)在升級(jí)包制作中提供了差分生成的離線(xiàn)和在線(xiàn)工具。升級(jí)差分包之前,通過(guò)比較新舊版本之間的差異,生成差異文件。差分更新的核心技術(shù)是各家OTA供應(yīng)商掌握的字節(jié)差分算法。
升級(jí)任務(wù)是OTA平臺(tái)用于執(zhí)行和監(jiān)測(cè)一組設(shè)備的升級(jí)活動(dòng)的集合。升級(jí)任務(wù)可針對(duì)特定范圍的設(shè)備,使用相應(yīng)的升級(jí)包和升級(jí)策略,進(jìn)行升級(jí)任務(wù)創(chuàng)建,下發(fā),監(jiān)測(cè),狀態(tài)維護(hù)等整組活動(dòng)的管理。升級(jí)任務(wù)的監(jiān)測(cè)功能,提供了對(duì)一組升級(jí)活動(dòng)中,升級(jí)任務(wù)狀態(tài),進(jìn)度和結(jié)果的反饋。按照升級(jí)任務(wù)狀態(tài)的狀態(tài),主要包含了成功,失敗,升級(jí)中等設(shè)備的數(shù)量和各個(gè)狀態(tài)下的比例。升級(jí)任務(wù)的控制功能,提供了對(duì)一組升級(jí)活動(dòng)中,升級(jí)任務(wù)的啟動(dòng),停止,暫停,恢復(fù),重啟,撤銷(xiāo)等操作能力,實(shí)際上是維護(hù)了任務(wù)狀態(tài)機(jī)的狀態(tài)變遷干預(yù)能力。
升級(jí)策略是升級(jí)活動(dòng)中的用于描述任務(wù)特征和目標(biāo)設(shè)備升級(jí)行為的配置。升級(jí)主要會(huì)涉及到下載和安裝兩個(gè)階段,升級(jí)策略中,一般會(huì)包含升級(jí)包下載策略和升級(jí)包安裝的策略,以及異常情況下的處理策略。例如,在整車(chē)升級(jí)中,升級(jí)策略包括靜默升級(jí),常規(guī)升級(jí)和緊急升級(jí)的分類(lèi),也包括了升級(jí)包下載前,是否需要通知給用戶(hù)下載確認(rèn)的配置。
升級(jí)日志包括云平臺(tái)的日志,車(chē)端與云平臺(tái)通信產(chǎn)生的日志和車(chē)端升級(jí)程序搜集上來(lái)的日志。主要用于升級(jí)失敗后的分析和支撐升級(jí)運(yùn)維運(yùn)營(yíng)管理。
OTA車(chē)端主要包含通信終端和各功能域的ECU。OTA通信終端一般由TBOX負(fù)責(zé),上面運(yùn)行OTA升級(jí)管理程序和升級(jí)代理程序。其中,OTA升級(jí)管理程序OTA Manager是負(fù)責(zé)連接車(chē)輛與OTA云平臺(tái)的管理程序。它實(shí)現(xiàn)了端云的安全通信,包括協(xié)議通信鏈接管理,升級(jí)指令接收和升級(jí)狀態(tài)發(fā)送,升級(jí)包下載、升級(jí)包解密、差分包重構(gòu)等功能。升級(jí)代理Update Agent,是為了兼容不同的車(chē)內(nèi)通信網(wǎng)絡(luò)和通信協(xié)議,以及不同OEM間各品牌車(chē)型的接口差異,進(jìn)行封裝適配的部分。升級(jí)代理提供了統(tǒng)一接口,由OTA廠(chǎng)商負(fù)責(zé)實(shí)現(xiàn)接口,完成接口和業(yè)務(wù)邏輯的適配。
車(chē)端架構(gòu)按功能域劃分,分為動(dòng)力系統(tǒng)域、車(chē)身系統(tǒng)域、影音娛樂(lè)域、ADAS主動(dòng)安全域、自動(dòng)駕駛域,不同的功能域有著不同的通信網(wǎng)絡(luò)和功能安全等級(jí)設(shè)計(jì)。 。自動(dòng)駕駛域或者影音娛樂(lè)域等部分ECU存在主備分區(qū)的設(shè)計(jì),即ECU內(nèi)部用于兩片區(qū)域,一部分用于存儲(chǔ)當(dāng)前運(yùn)行的程序,一部分用于存儲(chǔ)備份程序。除第一次安裝或者設(shè)備下線(xiàn)時(shí),ECU內(nèi)部只有一份軟件外,之后更新安裝的軟件都會(huì)與上一份共存。當(dāng)前運(yùn)行的是最新的軟件,如果升級(jí)過(guò)程中發(fā)生錯(cuò)誤或者刷寫(xiě)的程序不能運(yùn)行,ECU根據(jù)OTA Manager的升級(jí)策略要求,能否自動(dòng)回滾至上一個(gè)版本的程序,防止車(chē)輛ECU變磚。
OTA場(chǎng)景策略與規(guī)則
從OEM車(chē)聯(lián)網(wǎng)運(yùn)營(yíng)角度劃分,根據(jù)車(chē)輛銷(xiāo)售前和銷(xiāo)售后不同,OTA升級(jí)場(chǎng)景一般會(huì)區(qū)分為靜默升級(jí)和非靜默升級(jí)。靜默升級(jí)主要用于銷(xiāo)售前處于庫(kù)存狀態(tài)的車(chē)輛升級(jí)。OTA云平臺(tái)通過(guò)發(fā)送遠(yuǎn)程喚醒命令,通過(guò)TBOX喚醒車(chē)輛上電,連接到平臺(tái)進(jìn)行升級(jí)任務(wù)的處理。非靜默升級(jí)主要是用于是銷(xiāo)售后車(chē)輛歸屬于車(chē)主后的升級(jí)場(chǎng)景,軟件升級(jí)變更需告知給車(chē)主,在車(chē)主知情和同意的下進(jìn)行升級(jí)。非靜默升級(jí)其中又分為普通升級(jí)和緊急升級(jí),緊急升級(jí)一般是用于特別重要安全補(bǔ)丁的推送升級(jí),車(chē)主知情但是無(wú)法拒絕。
OTA升級(jí)任務(wù)下發(fā)到車(chē)輛后,升級(jí)管理程序OTA Manager也必須判斷車(chē)輛條件是否符合。對(duì)于不符合條件的車(chē)輛,升級(jí)管理程序必須中止升級(jí)任務(wù)并上報(bào)給云平臺(tái)。在OTA架構(gòu)中,升級(jí)規(guī)則定義了各個(gè)車(chē)型在升級(jí)包下載,安裝刷寫(xiě)階段的判斷條件。升級(jí)規(guī)則會(huì)隨著云平臺(tái)上的升級(jí)任務(wù)下發(fā)到車(chē)輛。例如最低版本要求,車(chē)輛運(yùn)行狀態(tài)、車(chē)輛位置。某電動(dòng)車(chē)廠(chǎng)商的車(chē)輛在長(zhǎng)安街街心升級(jí)導(dǎo)致交通堵塞的新聞曾在互聯(lián)網(wǎng)上議論紛紛,如果在升級(jí)執(zhí)行前能否判斷車(chē)輛處于一個(gè)不適合升級(jí)的地點(diǎn),那么升級(jí)任務(wù)也不會(huì)推送給停車(chē)等候紅綠燈的車(chē)主了。一個(gè)好的OTA系統(tǒng)一定是能夠靈活的配置升級(jí)條件,并且合理準(zhǔn)確控制升級(jí)和用戶(hù)推送的系統(tǒng)。
最后,結(jié)合OEM運(yùn)營(yíng)的要求,OTA升級(jí)還需要能夠靈活定義升級(jí)的具體范圍,升級(jí)時(shí)機(jī),升級(jí)內(nèi)容,提示事項(xiàng),失敗后給用戶(hù)的失敗處理提示,提升大規(guī)模升級(jí)中的運(yùn)營(yíng)效率和運(yùn)營(yíng)體驗(yàn),持續(xù)為車(chē)主和OEM提供價(jià)值。