出品:汽車電子與軟件
#01 CP與FOTA
FOTA(Firmware Over-The-Air)是一種通過無線網(wǎng)絡(luò)遠(yuǎn)程更新車輛中的軟件的技術(shù)。
隨著安全要求的不斷提升以及分布式、互聯(lián)功能帶來的軟件復(fù)雜性日益增加,車輛系統(tǒng)需要頻繁保持最新狀態(tài)。為了減少因軟件更新而帶來的耗時(shí)和重復(fù)前往維修廠的麻煩,應(yīng)通過FOTA技術(shù)向車輛推送軟件更新。CP AUTOSAR對(duì)FOTA的支持主要體現(xiàn)在以下幾個(gè)方面:
- 軟件包管理:CP AUTOSAR提供了一套豐富的軟件包管理功能,以支持FOTA。這些功能包括軟件包的下載、驗(yàn)證、存儲(chǔ)和安裝。車輛可以通過無線網(wǎng)絡(luò)接收到新的軟件包,并使用CP AUTOSAR提供的安全機(jī)制進(jìn)行驗(yàn)證,以確保軟件包的完整性和可靠性。驗(yàn)證通過后,軟件包可以被存儲(chǔ)在車輛的存儲(chǔ)器中,準(zhǔn)備進(jìn)行更新。
- 更新過程執(zhí)行:CP AUTOSAR定義了FOTA更新過程的執(zhí)行流程。這包括檢測(cè)新的軟件包、下載軟件包、安裝軟件包以及更新后的驗(yàn)證等步驟。在更新過程中,CP AUTOSAR提供了數(shù)據(jù)完整性和安全性的保障,以確保軟件包的正確性和可靠性。
不過,CP AUTOSAR自身是不直接支持OTA的。這意味著要更新在CP AUTOSAR上運(yùn)行的應(yīng)用程序,就必須更新整個(gè)ECU的代碼。通過其他控制器對(duì)運(yùn)行CP AUTOSAR的控制器進(jìn)行更新,并不被視為CP AUTOSAR自身的OTA功能。
#02 FOTA簡(jiǎn)介
FOTA引入了一種通用機(jī)制,允許在車輛運(yùn)行時(shí)更新ECU(電子控制單元)軟件。當(dāng)當(dāng)前ECU軟件正在執(zhí)行且功能完全正常時(shí),新的ECU軟件應(yīng)在后臺(tái)進(jìn)行打包準(zhǔn)備。在安裝過程中,必須驗(yàn)證新軟件的真實(shí)性和完整性。一旦驗(yàn)證通過,ECU應(yīng)能啟用新的軟件版本。不過,軟件的啟用需要ECU進(jìn)入一種特殊模式,因此在車輛行駛過程中不得啟動(dòng)或執(zhí)行新軟件的啟用操作。啟用新軟件應(yīng)在確保車輛安全的狀態(tài)下進(jìn)行,比如車輛靜止、發(fā)動(dòng)機(jī)熄火且已施加駐車制動(dòng)時(shí)。
如果在啟用新軟件的過程中或之后發(fā)現(xiàn)異?;蝈e(cuò)誤,ECU應(yīng)具備內(nèi)部回滾功能,即能夠恢復(fù)到之前的軟件版本。這意味著之前的軟件會(huì)保留在ECU上,并可以隨時(shí)重新啟用。
不同的無線技術(shù)(UMTS、LTE、藍(lán)牙、WiFi、5G)可用于將車輛連接到后端/云系統(tǒng),以提供將軟件下載到車輛的能力。通過CAN、CAN-FD、Flexray或汽車以太網(wǎng)等車輛總線,將新軟件分發(fā)到需要更新的目標(biāo)ECU。
如今,大多數(shù)ECU都具備更新升級(jí)功能。通常,這種軟件更新的實(shí)現(xiàn)接口采用閃存引導(dǎo)加載程序的形式,并且支持通過OTA技術(shù)更新主ECU??梢酝ㄟ^將軟件更新任務(wù)從外部診斷儀發(fā)送到已連接的車載ECU(作為OTA-Master)上,來實(shí)現(xiàn)無線的軟件更新。從目標(biāo)ECU的角度來看,無論是通過傳統(tǒng)的診斷儀還是通過OTA-Master進(jìn)行更新,整個(gè)過程都十分便捷。
這種方法涉及幾個(gè)重要方面,需要在實(shí)施過程中仔細(xì)考慮(以下針對(duì)單分區(qū)升級(jí)方案):
首先,從功能角度來看,在整個(gè)軟件更新過程中,目標(biāo)ECU將無法正常運(yùn)行,這通常意味著整個(gè)車輛在軟件更新期間會(huì)處于不可用狀態(tài)。其次,在分布式電子電氣架構(gòu)中,由于多個(gè)ECU需要在一次更新活動(dòng)中同步更新,與單獨(dú)更新一個(gè)ECU相比,車輛的不可用時(shí)間可能會(huì)更長。
再者,如果在安裝新軟件的過程中或之后出現(xiàn)問題,雖然可以通過OTA主控端啟動(dòng)并重新安裝之前的軟件來進(jìn)行修復(fù),但這一操作會(huì)進(jìn)一步延長車輛的不可用時(shí)間,并有可能導(dǎo)致ECU功能完全失效。
此外,如果需要進(jìn)行軟件回滾,那么與更新相關(guān)的所有依賴ECU也必須同步進(jìn)行回滾操作。
最后,采用這種方法時(shí),我們還需要特別注意電池的剩余容量,以確保更新過程的順利進(jìn)行。
#03 FOTA流程
FOTA的整體更新過程可分為幾個(gè)階段,可以參考如下圖示:
1. Update
術(shù)語“(FOTA)update”用于表示 ECU 的整個(gè)更新過程(如果是其他依賴 ECU 更新,則表示多個(gè) ECU)。它包含下面描述的所有任務(wù),例如download, installation, verification, activation等。如有必要,可以將回滾功能視為更新過程的一部分。2. Download
下載鏡像是指將FOTA目標(biāo)ECU的完整更新所需的ECU軟件、數(shù)據(jù)和配置從后端服務(wù)器傳輸?shù)紽OTA主節(jié)點(diǎn),即FOTA的Master ECU。3. Installation
Installation是指將待更新的ECU軟件從FOTA主節(jié)點(diǎn)ECU轉(zhuǎn)移到FOTA目標(biāo)ECU。由于一次將整個(gè)ECU軟件完全傳輸?shù)紽OTA目標(biāo)ECU并不方便,因此該過程是使用數(shù)據(jù)塊實(shí)現(xiàn)的。當(dāng)沒有更多塊要傳輸?shù)紽OTA目標(biāo)ECU并且所有塊都已成功寫入內(nèi)存堆棧時(shí),安裝過程就完成了。此外,安裝過程還包括FOTA目標(biāo)ECU內(nèi)的flash驅(qū)動(dòng)程序?qū)④浖?shí)際寫入非活動(dòng)目標(biāo)分區(qū)。
4. Verification
Verification驗(yàn)證過程是要確保更新的ECU軟件的正確性。這只會(huì)影響相應(yīng)FOTA目標(biāo)ECU中的普通ECU軟件(例如鏡像或者差異化更新)。5. Activation
Activation激活過程是ECU引導(dǎo)分區(qū)的實(shí)際啟動(dòng)操作。對(duì)于采用不可切換內(nèi)存架構(gòu)的ECU,比如那些使用外部閃存或固定多分區(qū)內(nèi)存的ECU,這個(gè)過程還涉及到從臨時(shí)存儲(chǔ)(例如外部閃存)到內(nèi)部閃存的復(fù)制。一旦確認(rèn)了前一個(gè)ECU軟件版本的備份,激活過程即告完成。新安裝的軟件必須在車輛處于安全狀態(tài)時(shí)才能最終激活,開發(fā)者有責(zé)任確保車輛在這種安全狀態(tài)下進(jìn)行操作。6. Rollback
在回滾過程中,必須恢復(fù)之前運(yùn)行軟件的所有ECU和用戶數(shù)據(jù)?;貪L完成后,ECU軟件和用戶數(shù)據(jù)必須與整個(gè)更新過程開始之前沒有差異。#04 FOTA技術(shù)架構(gòu)
整體 FOTA 架構(gòu)設(shè)計(jì)如上圖所示,包括:
- FOTA Target ECU
它接收從 FOTA Master刷寫的 ECU 軟件,并將軟件寫入到內(nèi)存堆棧(實(shí)際的 ECU 軟件燒錄過程);
- FOTA Master ECU
緩存所有新的 ECU 軟件工件,以發(fā)送到 FOTA 目標(biāo) ECU;
- 后端服務(wù)器
為 FOTA Master ECU 提供要安裝到 FOTA Target ECU 的鏡像;
1. FOTA Target ECU
由于FOTA處理程序規(guī)范目前仍在發(fā)展階段,尚未涵蓋和明確定義所有功能,因此現(xiàn)階段將其視為CDD。如果未來FOTA的功能集增長到足夠復(fù)雜,足以構(gòu)成一個(gè)獨(dú)立的BSW模塊時(shí),AUTOSAR可能會(huì)考慮定義FOTA BSW模塊。 由于 AUTOSAR Dcm 模塊實(shí)現(xiàn)了UDS診斷協(xié)議,因此直接提供了許多有用的功能以實(shí)現(xiàn)FOTA功能。對(duì)于FOTA程序,可以有如下的功能實(shí)現(xiàn):
- 會(huì)話處理
- 安全訪問
- 身份驗(yàn)證
- 服務(wù)處理(用戶工作),例如:
0x22/0x2E Read/WriteDataByIdentifier
0x31 路由控制
0x34 RD/0x36 TD/0x37 TE(請(qǐng)求下載/傳輸數(shù)據(jù)/傳輸退出)
錯(cuò)誤處理
檢查更新升級(jí)條件
重置/重啟 ECU
Nv Data在AUTOSAR中,NvM模塊主要負(fù)責(zé)管理數(shù)據(jù)閃存,包括用戶數(shù)據(jù)、標(biāo)定數(shù)據(jù)、錯(cuò)誤記錄、快照以及ECU軟件的其他運(yùn)行時(shí)數(shù)據(jù)。這些數(shù)據(jù)會(huì)被組織成所謂的NvDataBlock。NvM模塊提供了功能接口,允許讀取、寫入或刪除這些數(shù)據(jù)塊。
為了遷移或修改NvData,應(yīng)當(dāng)使用NvM模塊提供的功能,而不是直接操作數(shù)據(jù)閃存。這是因?yàn)镕OTA(固件空中升級(jí))的Master和Target端都不應(yīng)直接與數(shù)據(jù)閃存交互,以防止數(shù)據(jù)受到干擾、阻塞或損壞。
如果數(shù)據(jù)發(fā)生變化,例如影響到NvData或用戶數(shù)據(jù)的遷移,這些變化需要由實(shí)施者進(jìn)行處理。
然而,為了安全地存儲(chǔ)與FOTA進(jìn)程相關(guān)的信息(如當(dāng)前FOTA進(jìn)程狀態(tài)、FOTA處理程序上次成功寫入的內(nèi)存地址等),并確保這些信息在中斷期間能夠持續(xù)存在,應(yīng)使用NvM模塊來處理這些(FOTA特定的)用戶數(shù)據(jù)。
2. FOTA Master (UCM-Master)
FOTA Target ECU 需要與相應(yīng)的主節(jié)點(diǎn)通信,以便接收 FOTA 鏡像數(shù)據(jù)。此 Master 實(shí)例必須存儲(chǔ)車輛網(wǎng)絡(luò)中所有相關(guān) ECU 的鏡像數(shù)據(jù),數(shù)據(jù)量突然不會(huì)少。通常,Classic Platform所針對(duì)的嵌入式ECU在內(nèi)存、存儲(chǔ)及計(jì)算能力上資源較為有限。因此,一種可行的方案是將FOTA Master實(shí)例的職責(zé)轉(zhuǎn)移到資源更豐富的AP平臺(tái)上的ECU中。
與 FOTA Target ECU 通信的實(shí)現(xiàn)目前由更新和配置管理模塊(UCM,Update And Configuration Management)完成。這將產(chǎn)生以下邏輯體系結(jié)構(gòu):
3. Backend
#05 FOTA內(nèi)部狀態(tài)
FOTA Handler 模塊需要在處理 FOTA 鏡像期間處理并指示所有不同的狀態(tài)。這還包括恢復(fù)中斷(例如由于駕駛周期更改)或暫停(例如通過更高優(yōu)先級(jí)的診斷請(qǐng)求)。為了將此信息提供給啟動(dòng)和觸發(fā) FOTA 程序的 FOTA Master,應(yīng)實(shí)現(xiàn)診斷服務(wù),從 FOTA Target 的角度提供和更新安裝程序的當(dāng)前狀態(tài)。這些不同的狀態(tài)應(yīng)通過以下狀態(tài)來反映:
- IDLE ECU啟動(dòng)程序后FOTA Handler的初始狀態(tài)
- INIT FOTA處理程序已初始化,Dcm已設(shè)置為正確狀態(tài)(在Dcm FOTA會(huì)話中,已授予安全訪問權(quán)限)。
- READY 所有FOTA數(shù)據(jù)塊均已完成安裝,可以觸發(fā)激活程序。
- PROCESSING FOTA Handler由Dcm調(diào)用觸發(fā),因?yàn)樾聣K已被接收并正在處理。
- WAIT FOTA處理程序已成功處理最后一個(gè)接收到的數(shù)據(jù)塊,返回了Dcm函數(shù)返回值,并正在等待下一個(gè)數(shù)據(jù)塊。
- VERIFY 自行設(shè)定如何驗(yàn)證數(shù)據(jù)包,CP對(duì)這方面沒有具體的約定。
- ACTIVATE FOTA安裝已完成,并從FOTA Master收到相應(yīng)的工作指令,該指令指示下一次啟動(dòng)過程中的分區(qū)切換。
- ERROR 可以反饋Target的錯(cuò)誤狀態(tài),根據(jù)實(shí)際情況自已進(jìn)行定義,CP對(duì)這方面沒有具體的約定。
上述所有狀態(tài)應(yīng)有助于保持FOTA Target狀態(tài),從而保持整個(gè)FOTA更新過程的確定性、可靠性和可恢復(fù)性。這將導(dǎo)致一個(gè)狀態(tài)機(jī)來處理FOTA更新,如圖所示:
#06 小 結(jié)
AUTOSAR CP中的FOTA流程是一種在運(yùn)行時(shí)更新ECU軟件的機(jī)制,它通過無線技術(shù)將新軟件下載到車輛上,并在后臺(tái)進(jìn)行安裝和驗(yàn)證,以減少車輛停機(jī)時(shí)間并提高軟件更新效率。FOTA技術(shù)架構(gòu)包括FOTA目標(biāo)ECU、FOTA主機(jī)和后端等組件,通過一系列步驟實(shí)現(xiàn)軟件的下載、安裝、激活和回滾等功能。內(nèi)部狀態(tài)機(jī)則管理FOTA過程中的各種狀態(tài)轉(zhuǎn)換,確保軟件更新的可靠性和安全性。