?

基于實時操作系統的車載ECU 雙分區軟件空中下載升級技術

2023-12-08 04:18梁貴友張建平周時瑩
汽車工程學報 2023年6期
關鍵詞:異面備份分區

周 恒, 梁貴友, 柳 旭, 張建平, 周時瑩, 王 騰, 馬 骉

(中國第一汽車集團有限公司 智能網聯開發院,長春 130013)

隨著汽車智能化、網聯化的發展,OTA功能已成為智能網聯汽車發展的必然趨勢[1-3]。常見OTA升級架構是云服務器端通過TBOX 將升級包下載至車端緩存,由升級主控節點對網絡架構中控制器按照刷寫流程進行升級更新[4-5]。陳祖銳等[6]采用將升級程序直接刷寫在應用程序分區的升級技術,其局限性在于當應用程序升級失敗后,原分區里的程序已被擦除導致沒有程序可正常運行,控制器將始終處于引導加載程序(Boot Loader)中無法正常工作。針對沒有可執行的回滾程序問題,王棟梁等[7]采用在網關內部Flash 中存儲當前版本的技術,當升級失敗時網關會調用Flash 中的軟件再次進行刷寫,此技術只針對RTOS傳統實時操作系統的控制,并且存在網關內存空間大且回滾邏輯繁瑣的缺點。嚴娟等[8]針對網關自升級將Flash 劃分為兩個相同區域,兩者功能上完全一樣互為備份,升級時只針對其中一個區域進行升級,失敗時利用另一個區域進行回滾,但是只針對Linux、QNX 和安卓等智能操作系統的控制器,RTOS 傳統控制器并沒有此類升級技術。

因此,針對現有RTOS 控制器只有1個分區[9],且升級失敗造成無程序可回滾的問題,提出了一種雙分區升級技術[10-11]??紤]控制器內存空間大小不同,設計了同面啟動和異面啟動升級技術。

該技術具有以下貢獻:

(1)針對如何管理分區的問題,設計了啟動信息用于標識雙分區屬性信息,選擇對應的分區進行刷寫升級、啟動或回滾;

(2)在原芯片的基礎上通過外擴存儲器實現同面啟動的雙分區升級技術,避免了芯片重新選型及硬件設計,減少了開發的工作量;

(3)設計了一種新的升級包選擇下載、安裝啟動及回滾的異面啟動雙分區升級技術,優化了升級包制作和刷寫流程,可以快速實現分區切換和軟件回滾。

1 雙分區定義

1.1 存儲空間分區

雙分區控制器除了引導加載程序分區外,一般需要激活分區(Active Slot)存放當前執行應用程序,備份分區(Backup Slot)存放回滾舊版本程序,此外,還需要一個啟動信息(Slot Info)分區,用于存儲激活分區和備份分區的相關屬性信息,硬件存儲空間如圖1所示。

1.2 控制器啟動方式

引導加載程序需要根據啟動信息來判斷當前激活分區并引導啟動對應的應用程序。該啟動信息將在應用程序的有效性判斷、下載刷新完成或版本回滾時進行必要的狀態切換。啟動信息關鍵屬性見表1。

表1 啟動信息關鍵屬性

1.3 升級包的組成

對于純軟件實現雙分區的控制器,一般會有兩個起始地址不同的應用程序分區,升級時需要兩個功能相同但起始地址不同的應用程序。將兩個不同地址的應用程序通過編譯合并后,生成一個大小為兩個程序分區的文件用于控制器的選取升級,如圖2所示。

圖2 雙分區升級包組成

2 雙分區升級技術

2.1 同面啟動升級技術

同面啟動升級技術要求每次下載刷新及啟動始終在片內Flash 的激活分區進行,設計的升級技術流程如下。

(1)控制器默認出廠設置時激活分區和備份分區的軟件版本一致。

(2)控制器收到主控節點發送的0x31 01 FF 00擦除程序區指令時[13],需先對比激活分區和備份分區程序版本號,如果不一致則需將激活分區中的程序復制到備份分區中。外擴存儲器升級包下載流程如圖3所示。

圖3 外擴存儲器升級包下載流程

(3)升級包下載刷新到激活分區后,啟動信息屬性信息更新,控制器會先判斷激活分區程序有效性,如果激活分區程序有效,啟動激活分區程序,并上報本次OTA任務升級成功。

(4)當激活分區程序無效或安裝失敗時,利用備份分區程序復制到激活分區實現軟件版本回滾,升級流程及啟動信息屬性更新變化如圖4所示。

圖4 同面啟動升級流程

2.2 異面啟動升級技術

異面啟動是目前主流升級技術,控制器內存空間滿足雙分區要求,主要分為基于SWAP AB 和基于非SWAP AB的雙分區升級技術。

2.2.1 基于SWAP AB技術的下載流程

SWAP AB 技術是指利用地址重映射技術[13-15]將激活分區和備份分區的物理內存地址進行互換,保證了激活分區的地址始終保持固定,所以升級的重點在于如何管理下載刷新和分區切換,設計的升級下載流程如下。

(1)主控節點根據0x34 請求下載服務的起始地址和字節數,將升級包下載刷新到備份分區。

(2)當升級包下載完成且校驗通過后,啟動信息屬性更新。

(3)控制器在進行重啟或升級失敗回滾時,利用SWAP AB 技術將備份分區地址與激活分區地址互換,其下載流程如圖5所示。

圖5 基于SWAP AB技術升級包下載流程

2.2.2 基于非SWAP AB技術的下載流程

所謂非SWAP AB 技術是指控制器硬件上不支持兩個物理內存地址的互換,而且控制器的激活分區和備份分區起始地址不同,所以設計的升級技術下載流程如下。

(1)由于控制器激活分區是Slot A 還是Slot B只有控制器可知,所以主控節點內必須包含兩個內存地址的升級包,升級包制作過程如圖2所示。

(2)在主控節點發送0x31 01 FF 00 擦除指令前,控制器需將啟動信息中備份分區的起始地址發給主控節點,由此確保擦除程序是備份分區程序。

(3)擦除成功后,由主控節點判斷選擇哪部分程序屬于備份分區并進行下載刷新。

(4)當升級包下載完成且校驗通過后,重啟或升級失敗進行軟件回滾時,啟動信息中激活分區和備份分區狀態互換,下載刷新過程及啟動信息狀態變化如圖6所示。

2.2.3 異面啟動升級流程

升級包刷新成功后再判定激活分區程序有效性,如果激活分區中程序有效,則從激活分區啟動執行;如果程序初次判定無效,再次嘗試判斷,當重復次數達到最大時說明程序無效,需要進行程序回滾。

在進行程序回滾時,控制器需先判斷備份分區中的程序有效性,當判定無效次數達到最大時,則回滾失敗,控制器功能失效;如果備份分區中程序有效,更新啟動信息屬性并啟動回滾后的激活分區程序。具體異面啟動升級流程如圖7所示。

圖7 異面啟動升級流程

3 測試與驗證

3.1 測試系統

雙分區升級技術測試環境主要分為ECU和上位機診斷儀系統[16-17],系統框圖及實物分別如圖8~9所示。兩系統之間通過USB1、USB2接口進行數據傳輸模擬主控節點刷新下載,其中,ECU側有一個KEY 按鍵控制LED 的閃爍,用于指示app的運行情況。其中,USB1 用于引導加載程序的升級,USB2用于app中的通信。

圖8 雙分區升級測試框圖

圖9 雙分區升級測試實物

采用STM32H7 系列芯片驗證升級技術,其內部Nor Flash的存儲空間分區配置見表2。

表2 存儲空間分區配置表

3.2 測試驗證方案

針對雙分區與傳統分區升級技術的差異點,設計測試用例時需要重點考慮升級異常時程序回滾功能的有效性、雙分區運行的穩定性等,測試類型主要分為正常系和異常系,主要測試用例及方法見表3。

表3 測試用例及方法

測試時先通過搭建的測試系統驗證單控制器升級回滾情況,通過后將開發的雙分區升級控制器安裝到實車上,利用目前上線運營的OTA整套升級系統,以及布置多控制器升級包來驗證實車環境下失敗程序回滾功能。

3.3 驗證結果

根據上述測試內容和方法,利用搭建的系統及實車測試驗證結果(表4),每項測試內容至少需要正向測試50 次,且每次測試結果都滿足要求才能證明該項功能正常。

表4 雙分區升級技術測試內容及結果

測試結果表明,利用啟動信息進行分區管理,解決了升級啟動分區選擇問題;針對外擴存儲器不能啟動執行的問題,提出軟件復制備份的回滾機制,實現了雙分區升級技術;針對異面啟動中升級包下載的問題,提出備份分區信息讀取選擇下載技術,解決了下載的升級包與分區不對應的問題。因此,上述技術解決了整個雙分區OTA升級流程中的技術難題,實現了RTOS控制器雙分區升級。

4 結論

本文提出了車載ECU 雙分區升級技術,介紹了同面啟動和異面啟動的升級刷寫流程,通過開發測試系統驗證了該技術的有效性,得到的結論如下。

(1)對比異面啟動升級中的兩種技術,發現具有SWAP AB 技術的芯片實現雙分區升級技術的開發較簡單,升級包傳輸時間更少,同時也減少了主控節點的判斷邏輯。目前,多數芯片都支持SWAP AB 技術,建議推廣使用基于SWAP AB 的異面啟動升級技術以實現控制器雙分區升級。

(2)同面啟動升級中升級前備份或回滾時需要程序進行復制,導致升級過程時間比較長,帶給用戶體驗不如異面啟動升級技術,但是其優點在于可基于原芯片實現雙分區升級技術,無需重新選型開發。

(3)通過對測試系統及實車不同控制器進行大量的升級測試,驗證了控制器雙分區升級系統的穩定性和回滾時分區切換的有效性,同時得出控制器升級失敗的回滾成功率為100%。因此,該技術的應用從根本上解決了因OTA升級失敗而導致車輛控制器功能失效的問題。

猜你喜歡
異面備份分區
“備份”25年:鄧清明圓夢
上海實施“分區封控”
求解異面直線夾角問題的兩個路徑
創建vSphere 備份任務
浪莎 分區而治
六種方法破解高考異面直線所成的角
舊瓶裝新酒天宮二號從備份變實驗室
空間角的求法舉隅
“三步法”求解異面直線所成的角
基于SAGA聚類分析的無功電壓控制分區
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合