出品:汽車(chē)電(diàn)子(zǐ)與軟件(jiàn)
#01 CP與FOTA
FOTA(Firmα÷λware Over-The-Air)是(shì©↓)一(yī)種通(tōng)過無線網絡遠(yuǎn)程更新車(chē)輛(liàng)中的(±£ de)軟件(jiàn)的(de)技(jì)術(shù)。
随著(zhe)安全要(yào)求的(de)不&σ(bù)斷提升以及分(fēn)布式、互聯¥λ♣ 功能(néng)帶來(lái)的(de)軟件(jiàn)複雜(zá)性日(rì)益增加,車ε↔γ≈(chē)輛(liàng)系統需要(yào)頻(pín)繁保持最新狀态。為(wèi)↔了(le)減少(shǎo)因軟件(jiàn)更新而帶來(lái)的(de)耗時(σ∑↑shí)和(hé)重複前往維修廠(chǎngγ₩™)的(de)麻煩,應通(tōng)過FO♠αφ♣TA技(jì)術(shù)向車(chē)輛(liàng)推送軟件(jiàn)更新。CP AUTOSAR對(duì)FO"£TA的(de)支持主要(yào)體(tǐ)現(xiàn)在以下(xi←∏à)幾個(gè)方面:
- 軟件(jiàn)包管理(lǐ):CP AUTOSAR提供了(le)一(yī)套豐α®♣δ富的(de)軟件(jiàn)包管理(lǐ)功能(néng),以支持FOTA。這(zhè)些≠± (xiē)功能(néng)包括軟件(jiàn)包的(de)下(xià)載、驗證、存儲和(hé)安←₩σ裝。車(chē)輛(liàng)可(kě)以通(tγ"σλōng)過無線網絡接收到(dào)新的(de)軟件(jiàn)包,并使用(♣ yòng)CP AUTOSAR提供的(de)安全機(jī)♠ 制(zhì)進行(xíng)驗證,以确保軟件(jiàn)包δ×的(de)完整性和(hé)可(kě)靠性。驗證通(tōng)過後,軟件(j±★♠iàn)包可(kě)以被存儲在車(chē)輛(li ÷≈≠àng)的(de)存儲器(qì)中,準備進行(xíng)更新。δ'↕
-&nbsφp;更新過程執行(xíng):CP AUTOSAR定義了(le)FOTA更新過程的(de)執¶α×行(xíng)流程。這(zhè)包括檢測新的(de)軟件(jiàn)包、下(x®§•ià)載軟件(jiàn)包、安裝軟件(j♣₩iàn)包以及更新後的(de)驗證等步驟。在更新過程中,∞ CP AUTOSAR提供了(le)數(shù)據完整性和(hé)安全性的(d'←e)保障,以确保軟件(jiàn)包的(de)正确性和(hé)可(kě)靠性∞™ 。
≈ 不(bù)過,CP AUTOSAR自(zì)δ β 身(shēn)是(shì)不(bù)直接支持OTA的(de)。這(zh₹€è)意味著(zhe)要(yào)更新在CP AUTδ®OSAR上(shàng)運行(xíng)的(de")應用(yòng)程序,就(jiù)必須更新整個(gè)ECU的(de)<代碼。通(tōng)過其他(tā)控制(zhì)器(qì)對(duì)運行★≈(xíng)CP AUTOSAR的(de)控制(zhì)器(qì)©♠↕進行(xíng)更新,并不(bù)被視(shì)為(wèi)CP AUTOSAR自(✘∏≤πzì)身(shēn)的(de)OTA功能(néng)。
#02 FOTA簡介
FOTA引入了(leλ<)一(yī)種通(tōng)用(yòng)機(jī)制(zhì),允許在車(chē)輛(liànδ★±g)運行(xíng)時(shí)更新ECU(電(diàn)子(zǐ)控制(zhì)εε單元)軟件(jiàn)。當當前ECU軟件(jiànσβ)正在執行(xíng)且功能(néng)完全₩≤σ正常時(shí),新的(de)ECU軟件(jiàn)應在後台進行(xíng)打包準備。在安裝過程中β↓,必須驗證新軟件(jiàn)的(de)真實性和(hé)完整性。一('≠☆yī)旦驗證通(tōng)過,ECU應能(néng)啓用(yòng)新的(d ♣®≠e)軟件(jiàn)版本。不(bù)過,軟件(jiàn)的(de)啓€< <用(yòng)需要(yào)ECU進入一(yī)種特殊模式,因此在車(cπ¥hē)輛(liàng)行(xíng)駛過程中不(bù)得(de)啓動或執行(&xíng)新軟件(jiàn)的(de)啓用(yòng)操作(ΩΩzuò)。啓用(yòng)新軟件(jiàn)應在确保車(chē)輛(liàng)安全的( &÷de)狀态下(xià)進行(xíng),比如(rú)車(ch§ē)輛(liàng)靜(jìng)止、發 α ∏動機(jī)熄火(huǒ)且已施加駐車(chē)制(zhì)動時(shí)。
如(rú)果在×®★啓用(yòng)新軟件(jiàn)的(de)過程中或之後發現(xiàn)異常或錯(cuò)σ÷∏誤,ECU應具備內(nèi)部回滾功能(néng),¥α$↕即能(néng)夠恢複到(dào)之前的(de)軟件(<∑✘πjiàn)版本。這(zhè)意味著(zhe)之前的(dλ₹₩$e)軟件(jiàn)會(huì)保留在E₹×≠CU上(shàng),并可(kě)以随時(shí)重新啓用(yòng)。  ↕$α;
不(bù)同的(de)無線技↕♠©←(jì)術(shù)(UMTS、LTE、藍(lán)牙、WiFi、5G∞€§)可(kě)用(yòng)于将車(chē)輛(liàng)連接到(dào)後端/雲系統,以提供₩♦ ™将軟件(jiàn)下(xià)載到(dào)車×™σ"(chē)輛(liàng)的(de)能(néng)力±ε ♣。通(tōng)過CAN、CAN-FD、Flexray或汽車(chē)以太網等車(chē)輛(lià≥£>ng)總線,将新軟件(jiàn)分(fēn)發到(dào)需要(yào)αε更新的(de)目标ECU。
如≤↔(rú)今,大(dà)多(duō)數(shù)EC¶∑ U都(dōu)具備更新升級功能(néng)。通(tōng)常,這(zhè)種軟件(ji★αα≠àn)更新的(de)實現(xiàn)接口采用(yφ×∑òng)閃存引導加載程序的(de)形式,并且支持通(tōng)¥過OTA技(jì)術(shù)更新主ECU↑©₽¶。可(kě)以通(tōng)過将軟件(jiàn)更新任務從(cóng)外(¥♦wài)部診斷儀發送到(dào)已連接的(de)車(chē)載ECU(作(zuò)為(wèi)OTε←A-Master)上(shàng),來(lái)實現(xiàn)無線的(de)軟件(j±γ€∏iàn)更新。從(cóng)目标ECU的(de)角度來(lái)看(kàn)¥'✘,無論是(shì)通(tōng)過傳統的→≠★↕(de)診斷儀還(hái)是(shì)通(tōng₹§)過OTA-Master進行(xíng)更新,整個(gè)過程都(dō÷λ→u)十分(fēn)便捷。
這(zhè)種方法涉及幾個(gè)重要(✘★ yào)方面,需要(yào)在實施過程中仔細考慮(以下(xià)針對™↓α(duì)單分(fēn)區(qū)升級方案):
首先,從(cóng)功能(néng)←∞ 角度來(lái)看(kàn),在整個(gè)軟件(jiàn)更♣β新過程中,目标ECU将無法正常運行(xíng),這(zhè)通(tλ©ōng)常意味著(zhe)整個(gè)車(chē)輛(liàn♣g)在軟件(jiàn)更新期間(jiān)會(huì)處于不(bù)可(kě)用(yòng)狀态¶☆↑。其次,在分(fēn)布式電(diàn)子(zǐ§σε<)電(diàn)氣架構中,由于多(duō)個(gè)ECU需要(yàγδ✘o)在一(yī)次更新活動中同步更新,與單獨更新一(yī)個(gè)ECU相(xiàng)比,車(₩₩chē)輛(liàng)的(de)不(bù)可(kě)用(yòng★₽βπ)時(shí)間(jiān)可(kě)能(néng)會(huì)更長( ₩•αcháng)。
再者,如(rú)果在安裝新軟件(j®♥♥ iàn)的(de)過程中或之後出現(xiàn)問(wèσ✘↕n)題,雖然可(kě)以通(tōng)過OTA主控端啓動α↑并重新安裝之前的(de)軟件(jiàn)來(lái)進行(xíng)修複,但(dα∞àn)這(zhè)一(yī)操作(zuò)會(huì)進一♠₹ Ω(yī)步延長(cháng)車(chē)輛(lià★♣±ng)的(de)不(bù)可(kě)用(yòng)時(shí)間(jiān≈λ),并有(yǒu)可(kě)能(néng☆&>)導緻ECU功能(néng)完全失效。
此外(wài),如(rú)果需要(yào)進行(x© §íng)軟件(jiàn)回滾,那(nà)麽與更新相(xiàng)關✘©的(de)所有(yǒu)依賴ECU也(yě)必須同步進行(xíng)回滾操作(zuò)。≠§
最後,采用(yòng)這(zhè)種方法時(shí),我們還(hái)需要(yào)特别注意電βδ™<(diàn)池的(de)剩餘容量,以确保更新過程的(de)順利進行(xíng)。✔÷©
#03 FOTA流程
↓±FOTA的(de)整體(tǐ)更新過程可(kě)分(fēn)為(wφ¶èi)幾個(gè)階段,可(kě)以參考如(©απrú)下(xià)圖示:

1. U✔ ☆•pdate
ε→ 術(shù)語“(FOTA)update”用↓ (yòng)于表示 ECU 的(de)整個(gè)更新過¥Ω程(如(rú)果是(shì)其他(tā)依賴 ECU 更新,則表示多(duō)個(gè) ✔♠∞ ECU)。它包含下(xià)面描述的(de)所有(yǒu)任務,例如(rú)d♠♥πβownload, installation, vδ♠>£erification, activation₩↑等。如(rú)有(yǒu)必要(yào),可(kě)以将回滾功能(néng)視(shì)為(wèi )更新過程的(de)一(yī)部分(fēnδ★₽δ)。2. Download ÷→
下(xià)載鏡≈¶'像是(shì)指将FOTA目标ECU的(de)完整更新所需的(de)"÷§ECU軟件(jiàn)、數(shù)據和(hé)配置從(cóng)§☆☆"後端服務器(qì)傳輸到(dào)FOTA主節點,即FOTA的(dγ>e)Master ECU。3. Installation &nbsπ♣>p;
α↕€Installation是(shì)指将待δλ更新的(de)ECU軟件(jiàn)從(cóng)FO≈γ TA主節點ECU轉移到(dào)FOTA目标ECU。由于一(yī)次将整個(gè)E±"δ≈CU軟件(jiàn)完全傳輸到(dào)FOTA目标ECU并不(bù)方便,因此該過程是&®γ∏(shì)使用(yòng)數(shù)據塊實現(xiàn)的(dΩα e)。當沒有(yǒu)更多(duō)塊要(₩™δ÷yào)傳輸到(dào)FOTA目标ECU并且所®Ω•有(yǒu)塊都(dōu)已成功寫入內(nèi)存堆棧時→ (shí),安裝過程就(jiù)完成了(le)。此外(wài),安裝→£★過程還(hái)包括FOTA目标ECU內(n•αèi)的(de)flash驅動程序将軟件(jiàn)實際寫入非活動目标分(δ↑≠fēn)區(qū)。
4≤∏. Verification
V±↔↑erification驗證過程是(shì)要(yào)确保更新的(de)ECU÷λ≈軟件(jiàn)的(de)正确性。這(zhè)隻會(huì)影(yǐ>↑ng)響相(xiàng)應FOTA目标ECU中的(dδφe)普通(tōng)ECU軟件(jiàn)(例如("✘→→rú)鏡像或者差異化(huà)更新)。5. Activat •ion
Activation激活過程是(sh♣ ®ì)ECU引導分(fēn)區(qū)的(de)實際啓±∑α動操作(zuò)。對(duì)于采用(yòng)不(bù)可(kě)切換內(nèi)存架構的("÷de)ECU,比如(rú)那(nà)些(xiē)使用(yòng)外(wài↔δγδ)部閃存或固定多(duō)分(fēn)區(qū)內(nèi)存的(de)ECU,這(§♠zhè)個(gè)過程還(hái)涉及到(dào)從(cóng)臨時("¶shí)存儲(例如(rú)外(wài)部閃存)到(dào)內←₹(nèi)部閃存的(de)複制(zhì)。一(yī)旦确認了(le)前一(yī)個(gèε↔<)ECU軟件(jiàn)版本的(de)備份,激活過程®₽即告完成。新安裝的(de)軟件(jiàn)必須在車(chē)輛(liàng)§σ處于安全狀态時(shí)才能(néng)最終激活,開(kāi)發者有(y✔≥ǒu)責任确保車(chē)輛(liàng)在這(zhè)種安全狀态下(xià×¥☆)進行(xíng)操作(zuò)。6.↔÷ Rollback
在回滾過程中,必須恢複之前 ₽運行(xíng)軟件(jiàn)的(de)所有(yǒu)E ™φ•CU和(hé)用(yòng)戶數(shù)據。回滾完成後,ECU軟件(jiàn↓↑€)和(hé)用(yòng)戶數(shù)據必須與整個(gè)更新過程開(λβ©✘kāi)始之前沒有(yǒu)差異。 &nbsγφ¶<p;#04 FOTA技(jì)術(shù)架構
整體(tǐ) FOTA 架構設計(jì)如(rú)上 ₹σ(shàng)圖所示,包括:
- <>FOTA Target ECU
它接收從(cóng) FOTA Master刷寫的(de) ECU 軟件(jiàn),并将軟件β← (jiàn)寫入到(dào)內(nèi)存堆棧(實際£ ₽的(de) ECU 軟件(jiàn)燒錄過程);
- FOTA Master ECU
緩存所有(yǒu)新的(de) EC∏ ≥U 軟件(jiàn)工(gōng)件(jiàn),以發送δ&'¶到(dào) FOTA 目标 ECU;
- 後端服務器(qì)
為(wèi) FOTA Mast✔ ₩δer ECU 提供要(yào)安裝到(dào) FOTA Target ECU 的(de)鏡像$$;
1. FOTA Target ECU
由于FOTA處理(lǐ)程序規範目σ✘ 前仍在發展階段,尚未涵蓋和(hé)明(míng)确定義所有(yǒu)功能(nén♣×Ωg),因此現(xiàn)階段将其視(shì)為(wèi)CDD。如(rú)果未來(lái)FOTA的(de)功α≥能(néng)集增長(cháng)到(dào£)足夠複雜(zá),足以構成一(yī)個(gè)獨立的(de)BSW模塊時♣<γ(shí),AUTOSAR可(kě)能(néng)會(huì)考慮定義FOTA€"π BSW模塊。 由于 AUTOSAR Dcm 模塊實現(xiàn)了(le)U∑ DS診斷協議(yì),因此直接提供了(le)許多(du®σ₽ō)有(yǒu)用(yòng)的(de)功能(néng)以實現>ε€(xiàn)FOTA功能(néng)。對(duì)于FOTA程序,可(kě) §>以有(yǒu)如(rú)下(xià)的(de)功能(néng)實現(xiàn):
- 會(hπ¶∏uì)話(huà)處理(lǐ)
- 安 >↕σ全訪問(wèn)
- 身(shēn)份驗證
- 服π¥務處理(lǐ)(用(yòng)戶工(gōε♦ng)作(zuò)),例如(rú):
0x22/✘±β$0x2E Read/WriteDataBy♥σ∑Identifier
&® ¥nbsp; 0x31 路(lù)由控制(zhì)
0x34 RD/0x36 TD/0x3¥★7 TE(請(qǐng)求下(xià)載/傳輸數(s±÷×₽hù)據/傳輸退出)
&n< ☆£bsp; 錯(cuò)誤處理(lǐ)
檢查更新升級條件(jiàn₽∏§)
重置/重啓 ECU
Nv Data在AUTOSAR中,NvM模塊主要(yào)負責管理(lΩαǐ)數(shù)據閃存,包括用(yòng)戶數✔ε (shù)據、标定數(shù)據、錯(cuò)誤記錄、快(kuài)照★&(zhào)以及ECU軟件(jiàn)的(de)其他(tā)運行(xíng)時(shí)數↕Ω<(shù)據。這(zhè)些(xiē)數(shù)據會(huì)被組織成§'↑≥所謂的(de)NvDataBlock。NvM模塊提供了(le)功能(néng)接口,允許讀€'Ω(dú)取、寫入或删除這(zhè)些(xiē)數(sε×hù)據塊。
為(wèi)了(le)遷移或修改Nε÷≥§vData,應當使用(yòng)NvM模塊提供的(de)功能(néσ♦λ÷ng),而不(bù)是(shì)直接操作(zuò≥λΩ♥)數(shù)據閃存。這(zhè)是(shì)因為(wèi)FOTA(固件(j☆εiàn)空(kōng)中升級)的(de)Maπ↕≥ster和(hé)Target端都(dōu)不(bù)應直接與數(shù)據閃存交€ §互,以防止數(shù)據受到(dào)幹擾、阻塞或損壞。
如(rú)果數(shù)據發生(shēng)變化(★★huà),例如(rú)影(yǐng)響到(dào)NvData₩×或用(yòng)戶數(shù)據的(de)遷移,這(zγ₩±hè)些(xiē)變化(huà)需要(yào)由實施者進行(xíng)處理"¥(lǐ)。
然而,φ↑ 為(wèi)了(le)安全地(dì)存儲與FOTA進程相(xiàng)關的(d→γ¥≈e)信息(如(rú)當前FOTA進程狀态、FOTA處理(lǐ)程序上(shàng)次☆≠成功寫入的(de)內(nèi)存地(dì)址等),并确保這(zhè)些(xi÷÷>ē)信息在中斷期間(jiān)能(néng)夠持續存在,應使用(yò±φ₽ng)NvM模塊來(lái)處理(lǐ)這(zhè)些•♥♦(xiē)(FOTA特定的(de))用(y₩₽òng)戶數(shù)據。
2. FOTA Master (UCM-Ma©δ✘ster)
FOTA Target E®★CU 需要(yào)與相(xiàng)應的(de)λΩ®♥主節點通(tōng)信,以便接收 FOTA 鏡像數(shù¥ )據。此 Master 實例必須存儲車(chē)輛(liàng)網絡中所有∑"≥(yǒu)相(xiàng)關 ECU 的(de)鏡像數(shù)據,數(shù)據量突≤✔"然不(bù)會(huì)少(shǎo)。通(tπ÷≤₩ōng)常,Classic Platform所針對(duì)的(de)嵌入式ECU在γ♠™內(nèi)存、存儲及計(jì)算(suàn)能(néng)力上(shàng)資源較為(®'wèi)有(yǒu)限。因此,一(yī)種可(kě±)行(xíng)的(de)方案是(shì)将F₹≈OTA Master實例的(de)職責轉移到♣>(dào)資源更豐富的(de)AP平台上(shàng≤♣)的(de)ECU中。
<•♦與 FOTA Target ECU 通(tōng)信的(de)∏∞↔實現(xiàn)目前由更新和(hé)配置管理(lǐ)模塊(UCM,Updat×φe And Configuration Manageme×∑₩ nt)完成。這(zhè)将産生(shēng)以下(xià)邏輯體($λ βtǐ)系結構:

3. Backend
#05 FOTA內(nèi)部狀态
±>♦FOTA Handler 模塊需要(yào)在處理(lǐ) FOTA 鏡像期φ✘♦間(jiān)處理(lǐ)并指示所有(yǒu)不(bù)同的(de)狀态。這(zhè)還(↓©"σhái)包括恢複中斷(例如(rú)由于駕駛周期更改)或暫停(例如(rú)通(tōng)≥α過更高(gāo)優先級的(de)診斷請(qǐng)求)。為(wèi)了(lσ★e)将此信息提供給啓動和(hé)觸發 FOTA 程序的♥εδ(de) FOTA Master,應實現(xiàn)診斷服務,從(cλ®óng) FOTA Target 的(de)角度提供和(hé)更新安裝程序的(de)當前狀π" 态。這(zhè)些(xiē)不(bù)同的(de)狀态應通(tōng)過以下↕$ ★(xià)狀态來(lái)反映:
- IDLE ECU啓動程序後FOTA Handler的(d£♠e)初始狀态
- INIT FOTA處理(lǐ)程序已初始化(huà≤π€↑),Dcm已設置為(wèi)正确狀态(在Dcm FOTA會(huì)話(huà₹¥)中,已授予安全訪問(wèn)權限)。
→< - READY 所有(yǒu)FOTA數(shù)據塊均已完成安裝,可(kě)以觸發激活程序。
- PROCESSING FOTA Handler由Dcm調用(yòng)觸發,因為(wèi)新塊已被接收并正&δ©在處理(lǐ)。
- WAIT ™↕∏ FOTA處理(lǐ)程序已成功處理(lǐ)最後一(yī)個(gè)↕ ☆接收到(dào)的(de)數(shù)據塊,返回了(le)Dcm函數(shù)返回值,并正在等待下←☆(xià)一(yī)個(gè)數(shù)據塊。
-&nb<→≈sp;VERIFY 自(zì)行(xíng)設定如(rú)何驗證數(s↕ε¶hù)據包,CP對(duì)這(zhè)方面沒有(yǒu)具體(tǐ) ∞的(de)約定。
- ACTIVATE FOTA安裝已完成,并從(cóng)FOTA Master收到(dào)相(xΩ©₽☆iàng)應的(de)工(gōng)作(zuò)指令,該指令指示下(xià)一(yīφ☆Ω)次啓動過程中的(de)分(fēn)區(qū)切換。&nbβ↑'sp;
&nb≠≤εsp;- ERROR 可(kě)以反饋Target的(de)錯(cuò)誤狀态,根據實際情況自(λ αzì)已進行(xíng)定義,CP對(duì)這(zhè)方面沒有©↓(yǒu)具體(tǐ)的(de)約定。 &nbs☆ ∑p;
上(shàng)述φ÷±±所有(yǒu)狀态應有(yǒu)助于保持FOTA Target狀态,從(cóng)而保持整§'φ®個(gè)FOTA更新過程的(de)确定性、可(kě)靠性和(hé)可(kě)恢複性。 ₩這(zhè)将導緻一(yī)個(gè)狀态機(jī)來(lái)處₩♣§理(lǐ)FOTA更新,如(rú)圖所示:

#06 小(xiǎo) 結
AUT∏♦OSAR CP中的(de)FOTA流程是(shì)一(yī✔→)種在運行(xíng)時(shí)更新ECU軟件(©☆jiàn)的(de)機(jī)制(zhì),它通(tōng)過無線£ ♦技(jì)術(shù)将新軟件(jiàn)下(xià)載到(dào)車(chē)輛(liàn g)上(shàng),并在後台進行(xíng)安裝和(hé)驗證,以¶×✘減少(shǎo)車(chē)輛(liàng)停機(j'ī)時(shí)間(jiān)并提高(gāo)軟件(jiàn)更新效率。FOTA技(jì)術('&πshù)架構包括FOTA目标ECU、FOTA主機(jī÷♥)和(hé)後端等組件(jiàn),通(tōng)過一(y β$>ī)系列步驟實現(xiàn)軟件(jiàn)的(de)下(xià)載、安裝、激活和(hé)®≤ 回滾等功能(néng)。內(nèi)部狀态機(jī)則管&×↓理(lǐ)FOTA過程中的(de)各種狀态轉換,确保軟件(jiàn)更新的(de)可(kě)靠≥±♥性和(hé)安全性。