


















【摘要】針對空中下載(OTA)升級失敗時單片系統(SoC)電子控制單元(ECU)無法進行軟件回滾的問題,提出了一種A/B系統升級技術,通過讀取ECU中雜項(MISC)分區信息,將程序下載至備份分區,并通過設計A/B系統的優先級來選擇激活分區,進行安裝啟動或安裝失敗時軟件回滾,同時,設計了A/B系統的差分升級技術。經搭建系統測試,采用該技術的控制器在升級失敗后可進行軟件回滾,驗證了回滾技術的可行性、有效性及穩定性。
關鍵詞:空中下載 MISC分區 A/B系統 軟件回滾 差分升級
中圖分類號:U461" "文獻標志碼:A" "DOI: 10.20104/j.cnki.1674-6546.20230204
Research on Upgrading Technology of A/B System Based on Vehicle
SoC Controller
Zhou Heng, Liu Yuchi, Kong Xiangming, Zhou Shiying, Yu Shiyang, Liu Yuhong
(Global Ramp;D Center, China FAW Corporation Limited, Changchun 130013)
【Abstract】The A/B system upgrading technology is proposed to solve the problem that the System on Chip (SoC) Electronic Control Unit (ECU) cannot roll back the software when the Over-The-Air (OTA) upgrading failed. The technology downloads the program to the backup slot by reading the MISC of ECU slot information, and starts the installation by designing the priority level of the A/B system to select the active partition or rolls back the software in case of upgrading failed. At the same time, the differential graded technology of A/B system is designed. The ECU using this technology can perform software rollback when upgrading fails ,and the feasibility, effectiveness and stability of rolling back software technology are verified by building a test environment.
Key words: Over-The-Air (OTA), MISC Slot, A/B system, Software rolling back, Differential graded
【引用格式】 周恒, 劉禹池, 孔祥明, 等. 基于單片系統控制器的A/B系統升級技術研究[J]. 汽車工程師, 2024(11): 1-6.
ZHOU H, LIU YC , KONG X M, et al. Research on Upgrading Technology of A/B System Based on Vehicle SOC Controller[J].Automotive Engineer, 2024(11): 1-6.
1 前言
伴隨著汽車的智能化和網聯化發展,整車搭載的控制器數量與日俱增,車載軟件更加復雜、迭代速度更快,傳統的線下更新或維修的成本及管理難度越來越高,因此,整車制造商通過無線網絡對汽車控制器進行下載更新的需求愈發強烈,空中下載(Over-The-Air,OTA)功能成為車載軟件更新的必然趨勢[1-3]。
目前常見的OTA升級架構是云端服務器端通過車載通信終端(Telematics BOX,T-BOX)將升級包下載至網關,由網關對網絡架構中的以太網節點和控制器局域網絡(Controller Area Network,CAN)節點的控制器進行升級[4-5]。陳祖銳等[6]提出將升級程序直接刷寫在應用程序分區中的升級技術,其局限性在于,應用程序升級失敗后,原分區中的程序已被擦除,控制器將始終處于引導加載程序(Bootloader)中無法正常工作。陶媛媛等[7]針對以太網控制器采用備份區設計方案,程序升級失敗回滾時,備份區程序將被復制到正常區域運行,程序復制過程導致升級時間較長。嚴娟等[8]針對網關自升級,將閃存(Flash)分為兩個功能完全相同且互為備份的區域,升級時只針對其中一個區域進行升級,升級失敗則利用另一個區域進行回滾,但并未說明具體的升級流程及差分升級技術。
本文提出一種A/B系統升級技術:針對分區管理問題,設計雜項(Miscellaneous,MISC)分區記錄A/B系統的屬性信息,升級時選擇對應的系統分區進行刷寫升級,并設計系統屬性信息的優先級;重新設計升級包下載、安裝啟動及失敗回滾程序,優化差分升級時升級包還原與A/B系統刷寫間的關系。
2 A/B系統控制器分區
2.1 硬件存儲分區
傳統控制器只有一套分區存儲當前執行的系統,而A/B系統控制器一般有兩套分區(Slot A和Slot B)[9],激活分區(Active Slot)存放當前執行的系統,備份分區(Backup Slot)存放回滾備用的系統,兩套系統可以獨立工作(用戶數據只有一份,為兩套系統共用)。其中,Slot是A/B系統的一個邏輯概念,同一存儲設備上處于同一個系統的分區集合稱為Slot。
傳統控制器與A/B系統控制器在存儲空間上的區別如圖1所示,各分區具體功能如表1、表2所示。
2.2 升級方式
單片系統(System on Chip,SoC)控制器包含一個主系統、一個Recovery系統,升級時將數據包下載到Cache分區,下載完成后向MISC分區寫入指令,表明下次啟動時進入Recover模式并使用該升級包進行升級,重啟Bootloader讀取指令后進入Recovery系統,使用下載的數據包更新主系統并重新啟動。激活(active)屬性選擇激活分區運行,收到升級任務時,將數據包直接下載到備份分區安裝,更新啟動信息(Slot_Info)屬性,控制器重啟后對本次升級的數據包進行校驗,校驗通過后,運行新程序完成升級。
2.3 MISC分區定義
A/B系統存在兩套系統分區,控制器啟動時Bootloader需讀取MISC分區中的Slot_Info,識別激活分區并引導啟動應用程序,此啟動信息將在應用程序的升級包驗證、下載刷新及軟件回滾時進行必要的更新。MISC分區屬性信息結構如圖2所示,各屬性信息功能如表3、表4所示。
3 關鍵技術
3.1 GPT分區及屬性
全局唯一標識分區表(GUID Partition Table,GPT)[10]將用戶數據區域(User Data Area)的存儲介質劃分為多個區域,即系統分區(SW Partitions),并通過分區表(Partition Table)對系統分區進行維護。在分區表中,每個條目保存一個系統分區的起始地址、大小等屬性信息,通過讀取系統分區能獲取分區信息,進而對分區進行升級操作或屬性修改。本文采用嵌入式多媒體卡(embedded Multi Media Card,eMMC)存儲器的GPT分區,其結構如圖3所示。
3.2 差分升級
差分升級(即增量更新)[11]通過將數據文件的舊版本與新版本進行差分,得到升級部分的補丁,即差分包;用戶下載差分包后,系統利用差分算法將舊版本數據與差分包進行組合,得到新版本的數據文件對目標分區進行升級,差分升級原理如圖4所示。
4 A/B系統升級技術
4.1 刷寫流程
程序下載刷寫過程中,Bootloader會通過讀取MISC分區中的Slot_Info屬性判斷Slot A和Slot B是否具備active屬性,若具備則定位到active屬性的Slot設置successful屬性,若均不具備,則設置Slot A為acitve屬性,retry_count=3。然后利用升級包對備份分區進行升級,設置Slot_Info屬性,將A/B系統屬性中active屬性進行交換,完成升級包刷寫。升級包下載刷寫流程如圖5所示,刷寫過程中的Slot_Info變化如圖6所示。
4.2 升級啟動流程
升級包刷寫完成重啟時,Bootloader會通過GPT分區讀取MISC分區中的Slot_Info屬性,選擇優先級高的分區加載啟動,啟動流程如圖7所示,定義啟動優先級由高到低如表5所示。如果激活分區和備份分區的優先級一致,默認將Slot A設定為active且設retry_count=3后啟動。控制器啟動成功后,Bootloader修改Slot_Info中的successful屬性信息,屬性變化如圖8所示。一旦升級成功(刷寫和驗證均成功),不允許回滾。
4.3 A/B系統差分升級
A/B系統的差分升級使用當前分區作為原始文件,不需要額外的存儲空間保存原始包,加快了升級過程,但需確保當前分區在運行期間未被修改過。在還原數據時,將差分的鏡像(image)按塊還原后直接寫入備份分區,再計算哈希(Hash)值判斷合法性,其升級流程如圖10所示。
5 開發測試與驗證
5.1 測試系統
A/B系統升級技術測試環境主要分為微處理器單元(Micro Processor Unit,MPU)系統和上位機診斷系統,系統測試框圖及設備分別如圖11、圖12所示。更新模塊(Updater)屬于用戶層(UserSpace),與上位機進行交互,中間軟件層(Middleware)包括引導控制模塊(BootCtrl)、刷寫模塊(Flush)、供電模塊(Power),內核層(KnernelSpcae)的eMMC驅動(eMMC Driver)用于加載升級時的內存信息,eMMC包含A/B系統分區相關信息,兩個系統之間通過以太網口通信,上位機診斷系統可以觸發獲取當前MPU的版本號、傳輸升級包、進行升級等動作。
5.2 存儲空間配置
本文以IMX8X的eMMC內存為例介紹存儲空間的分區,其分區結構如表6所示。
5.3 測試方案設計
針對A/B系統與傳統系統升級技術的差異點,設計測試時,需重點考慮升級異常條件下程序回滾功能有效性、A/B系統雙分區運行穩定性及差分升級穩定性等,測試類型分為正常系和異常系。
測試時,首先通過搭建的測試系統驗證單控制器升級回滾情況,測試通過后,將已開發的A/B系統控制器安裝到實車上,并利用已上線運營的OTA整套升級系統布置多控制器升級包,驗證實車環境下失敗程序的回滾功能。
5.4 驗證結果
根據上述測試內容和方法,利用搭建的測試系統和實車測試得到驗證結果,如表7所示。每項測試內容至少需要正向測試50次,每次結果均滿足要求時方可認定該項功能正常。
測試結果表明:利用MISC分區管理A/B系統的屬性信息,解決了升級啟動分區選擇問題;針對升級包刷寫問題,提出了升級包選擇分區下載技術,保證升級包刷寫有效性,同時設計了升級啟動流程,控制器能夠安全啟動并在升級失敗時進行回滾,實現控制器A/B系統升級。
6 結束語
本文提出一種A/B系統升級技術,優化了升級包的下載刷寫、安裝啟動流程及A/B系統差分升級流程。通過對測試系統及實車不同控制器進行大量升級測試,驗證了控制器A/B系統升級穩定性和回滾時系統分區切換的有效性,控制器升級失敗后的回滾成功率為100%,解決了因OTA升級失敗導致車輛控制器功能失效的問題。
參考文獻
[1]" "田端祥, 段暉, 陳潔, 等. 遠程升級技術在汽車智能網聯系統中的運用[J]. 內燃機與配件, 2022(5): 214-216.TIAN D X, DUAN H, CHEN J, et al. Application of Remote Upgrade Technology in Automobile Intelligent Network System[J]. Internal Combustion Engine amp; Parts, 2022(5): 214-216.
[2]" "武翔宇, 趙德華, 郝鐵亮. 淺談汽車OTA的現狀與未來發展趨勢[J]. 汽車實用技術, 2019(3): 214-216.WU X Y, ZHAO D H, HAO T L. Analysis on Current Situation and Future Development Trend of Vehicle OTA[J]. Automobile Applied Technology, 2019(3): 214-216.
[3]" "姜楠, 姜姍姍, 韓小鵬. 汽車在線升級系統(OTA)開發淺析[J]. 時代汽車, 2021(21): 11-12.JIANG N, JIANG S S, HAN X P. The Analysis of Online Updates[J]. Auto Time, 2021(21): 11-12.
[4]" "卜凡濤, 劉木林, 劉曉曄. 一種汽車控制器OTA功能方案[J]. 汽車電器, 2022(9): 67-68.BU F T, LIU M L, LIU X Y. An OTA Function Scheme of A Car Controller[J]. Auto Electric Parts, 2022(9): 67-68.
[5]" "李立安, 趙幗娟, 任廣樂. OTA實現方案及汽車端設計分析[J]. 汽車實用技術, 2020(14): 16-19.LI L A, ZHAO G J, REN G L. OTA Implementation Plan and the Vehicle Design Analysis[J]. Automobile Applied Technology, 2020(14): 16-19.
[6]" "陳祖銳, 廖振偉, 谷城, 等. 基于UDSonCAN的Bootloader設計[J]. 汽車零部件, 2022(9): 36-39.CHEN Z R, LIAO Z W, GU C, et al. Bootloader Design Based on UDSonCAN[J]. Automobile Parts, 2022(9): 36-39.
[7]" "陶媛媛, 杜彬, 田彬. 基于車載控制器BootLoader的數據備份刷寫軟件方案實現[J]. 汽車電器, 2022(9): 39-41.TAO Y Y, DU B, TIAN B. Implementation of Data Backup Flashing Based on Boot Loader of Vehicle Controller[J]. Auto Electric Parts, 2022(9): 39-41.
[8]" "嚴娟, 張玉川, 楊鵬翔, 等. 基于以太網OTA遠程升級的研究[J]. 上海汽車, 2020(3): 15-18+27.YAN J, ZHANG Y C, YANG P X, et al. The Study on OTA Remote Updating of Ethernet[J]. Shanghai Auto, 2020(3): 15-18+27.
[9]" "曹玉保. 基于雙備份的兆易創新GD32程序升級方案研究[J]. 中國集成電路, 2021(增刊1): 23-26.CAO Y B, Research on Scheme to Upgrade Program of GigaDevice GD32 Based on Double Backup[J]. China Integrated Circuit, 2021(S1): 23-26.
[10] 陳培德, 吳建平, 劉宏杰, 等. MBR磁盤轉換為GPT磁盤的研究與實現[J]. 計算機技術與發展, 2022(7): 99-104.CHEN P D, WU J P, LIU H J, et al. Research and Implementation of MBR Disk Conversion to GPT Disk[J]. Computer Technology and Development, 2022(7): 99-104.
[11] 陳德富, 周旭文, 邱寶象, 等. 一種輕量級的在線差分升級策略設計[J]. 工業控制計算機, 2022(9): 29-30+32.CHEN D F, ZHOU X W, QIU B X, et al. Design of Lightweight Online Differential Update Strategy[J]. Industrial Control Computer, 2022(9): 29-30+32.
(責任編輯 白 夜)
修改稿收到日期為2024年7月23日。