黃萬眾,靳玉,范炳偉
(1.華晨汽車工程研究院安全工程室,遼寧 沈陽 110141;2.華晨汽車工程研究院工程學會,遼寧 沈陽 110141)
隨著汽車電子技術的發展,電子控制單元正在逐漸增加,功能也越來越復雜。汽車安全氣囊控制單元(Airbag Control Unit,下文簡稱為ACU)是整個約束系統的中心,它能感應車輛在正面和側面碰撞過程中發生的加速度的變化,然后控制相應的起爆元器件。最大限度的降低車內駕駛員與乘員受傷害程度,以達到保護車內人員的目的。由于 ACU在整車安全中的特殊性,以往 ACU大部分都是以“黑匣子”形式直接供給主機廠使用,但現在各汽車廠商(以下簡稱主機廠)對汽車電子控制單元掌控也越來越細化,為了節約時間降低成本,越來越多的電子控制單元開始支持刷寫功能,ACU的刷寫功能也對主機廠逐漸開放。
ACU刷寫功能指的是可以使用外部測試工具通過診斷服務手段實現更新控制單元應用軟件,步驟簡述如下:
(1)識別ACU;
(2)為授權的操作解鎖ACU;
(3)擦除已經存在的應用軟件;
(4)下載新的應用軟件或參數;
(5)驗證已下載數據的完整性和可靠性。
通過Boot Loader更新氣囊控制單元應用軟件,可以用于主機廠總裝車間 EOL(end-of-line)重新編程,或者用于售后維修車間。
通常情況下,一輛汽車內有多個ECU(Electronic Control Unit ,電子控制單元,下文簡稱 ECU)共享一個 CAN(Controller Area Network,控制器局域網,下文簡稱CAN)總線,測試人員通過連接到 CAN總線進行平臺診斷和下載數據。

圖1 操作環境示意圖
診斷測試工具給汽車內ECU發送診斷請求,響應評估。信息傳遞包括ECU中的故障信息,信號報告,控制例程,校準值和許多其他在執行ECU診斷用的數據類型,編程或其他數據傳輸不正常的節點與節點通信。
(1)啟動一致性檢查,評估應用程序是否有效,并使其保持在安全啟動模式。
(2)提供一個安全的編程功能,更換不同版本的應用軟件。
(3)管理所有被下載軟件的版本和類型歷史。
下表列出了 ACU刷寫應用軟件過程中涉及的 UDS(ISO14229-1 Unified Diagnostics Services,統一診斷服務,下文簡稱UDS)服務、尋址方式以及是否需要安全權限。

表1 ACU刷寫功能相關UDS診斷服務
ACU系統啟動(軟/硬件復位)之后,ACU將會檢測應用軟件是否有效和是否有刷寫請求,并根據這些狀態來決定控制權在應用軟件或Boot loader中。
ECU只支持半雙工通信。這意味著在一個時間點上,診斷工具和ECU之間只可能有一個方向的通信。ECU中只有一個診斷協議實例可用,這個實例同一時間只能處理一個請求。規定是收到任何信息將會占用這個資源直到請求信息結束。
通過讀取標識信息來識別ECU,ECU硬件和軟件信息需要通過使用UDS $22服務命令讀取出來,用于確認接下來的刷寫步驟是否被允許。
以下DID(Data Identifier,下文簡稱DID)需要被讀出來用于驗證目標ECU和待刷寫軟件是否匹配:(注:由于不同ECU供應商廠家的識別方式可能存在不同,因此上述DID只作為示例。)

表2 標識信息
ACU在執行軟件刷寫時需要通過Boot Loader對ACU進行編程,具體內容包括預編程,編程和后編程,下文將對其進行詳細介紹。
預編程步驟通常是在應用軟件下執行的,但是當ECU中沒有應用軟件的時候也需要在Boot loader下執行。

圖2 預編程步驟
5.1.1 讀取當前激活會話模式
此命令用于確認當前ECU控制權歸屬,判斷控制權是處于應用軟件還是Boot Loader,需要使用物理尋址命令。
5.1.2 進入擴展會話模式
ECU需要被切換到擴展會話模式,使用UDS $10診斷會話控制服務。通常用功能尋址命令。
5.1.3 禁止DTC存儲
所有連接在總線上的ECU應該停止存儲故障碼,因為在軟件下載過程中一些信號會無效或丟失,使用UDS $85診斷故障代碼設置控制服務。通常用功能尋址命令。
5.1.4 禁止非診斷通信
ECU應該停止軟件下載信號之外的所有通信,以使總線負擔降到最小,使用UDS $28 通信控制服務。通常用功能尋址命令。
5.1.5 切換到編程會話模式
如果ECU已經準備好可以編程,那么tester應該發送進入編程會話模式的請求。ECU會復位并進入Boot loader模式,使用UDS $10診斷會話控制服務。需要用物理尋址命令。
在應用軟件中,ECU接受$10服務需要滿足如下所列的前提條件:
(如果 ECU處于 Boot loader的控制下,那么這些$10診斷會話控制服務的前提條件是不需要的。)
- 空閑模式
- 內部故障激活
- 自供電模式
- 電壓過高
- 電壓過低
- 碰撞數據存在
- 車速過高(車速應該為0)
如果上面這些條件成立的話,會得到$22負反饋。
預編程結束后,ECU開始編程。編程是針對單一 ECU的操作,所以要用物理尋址命令。
5.2.1 解鎖ECU
為了使能編程,需要通過安全訪問服務命令解鎖ECU。5.2.2 寫入tester身份信息
Tester需要通過UDS $2E寫數據服務寫入自己的身份信息,為后續執行相關操作賦予權限。
5.2.3 擦除存儲空間
在刷寫ROM之前需要先執行擦除操作,使用UDS $31路程控制服務命令。
5.2.4 下載應用軟件
在下載過程中,ECU把傳送的數據寫到事先定義好的ROM區域。使用UDS $34請求下載命令、$36傳輸數據命令和$37請求退出傳輸命令。
5.2.5 檢查下載的軟件
下載完成后ECU需要檢查所寫的數據是否有效(確保安全刷寫)。如果檢查結果是失敗,那么刷寫工具需要跳轉到擦除存儲空間步驟重新執行刷寫步驟,使用UDS $31路程控制服務命令。
5.2.6 ECU兼容性檢查
所有數據下載完成之后,ECU需要檢查數據塊的兼容性。應用軟件有效的狀態標志就是在這一步設置的,使用UDS $31路程控制服務命令。

圖4 后編程步驟
5.3.1 復位應用軟件
下載完成之后,需要發送復位命令重啟ECU,使用UDS$11 ECU復位服務命令,需要用物理尋址命令。
5.3.2 切換到擴展會話模式
ECU需要切換到擴展會話模式,使用$10診斷會話控制服務命令,通常用功能尋址命令。
5.3.3 使能非診斷通信
為了進入正常模式,需要使能所有ECU的正常通信,使用$28通信控制服務命令,通常用功能尋址命令。
5.3.4 使能DTC存儲
正常通信被使能之后,所有故障碼的處理也要被恢復正常,使用UDS $85 DTC設置控制服務命令,通常用功能尋址命令。
5.3.5 讀取當前會話模式
刷寫完成后,需要確認控制權處于應用軟件還是 Boot loader軟件。如果控制權在應用軟件,那么意味著本次刷寫成功了。如果控制權在Boot loader,那么意味著本次刷寫失敗了,需要用物理尋址命令。
隨著汽車電子技術和軟件技術應用的逐漸普及,軟件刷寫功能將應用到更多的ECU中,雖然增加了需要主機廠管控的軟件種類,但對于一個整車項目開發工作而言,軟件刷寫節約了ECU開發時間,同時也降低了相應的開發成本,大大促進了整車項目的開發工作進度。
參考文獻
[1] ISO 14229-1:Road Vehicles-Unified diagnostic services(UDS) [S].
[2] ISO 15765-2:Road Vehicles-Diagnostics on Controller Area Net wo-rks (CAN) - Part2:Network layer services[S].
[3] ISO 15765-3:Road Vehicles-Diagnostics on Controller Area Net wo-rks (CAN) -Part3:Implementation of Unified diagnostics servi-ces(UDS on CAN)[S].