黃萬眾,靳玉,范炳偉
(1.華晨汽車工程研究院安全工程室,遼寧 沈陽 110141;2.華晨汽車工程研究院工程學(xué)會(huì),遼寧 沈陽 110141)
隨著汽車電子技術(shù)的發(fā)展,電子控制單元正在逐漸增加,功能也越來越復(fù)雜。汽車安全氣囊控制單元(Airbag Control Unit,下文簡(jiǎn)稱為ACU)是整個(gè)約束系統(tǒng)的中心,它能感應(yīng)車輛在正面和側(cè)面碰撞過程中發(fā)生的加速度的變化,然后控制相應(yīng)的起爆元器件。最大限度的降低車內(nèi)駕駛員與乘員受傷害程度,以達(dá)到保護(hù)車內(nèi)人員的目的。由于 ACU在整車安全中的特殊性,以往 ACU大部分都是以“黑匣子”形式直接供給主機(jī)廠使用,但現(xiàn)在各汽車廠商(以下簡(jiǎn)稱主機(jī)廠)對(duì)汽車電子控制單元掌控也越來越細(xì)化,為了節(jié)約時(shí)間降低成本,越來越多的電子控制單元開始支持刷寫功能,ACU的刷寫功能也對(duì)主機(jī)廠逐漸開放。
ACU刷寫功能指的是可以使用外部測(cè)試工具通過診斷服務(wù)手段實(shí)現(xiàn)更新控制單元應(yīng)用軟件,步驟簡(jiǎn)述如下:
(1)識(shí)別ACU;
(2)為授權(quán)的操作解鎖ACU;
(3)擦除已經(jīng)存在的應(yīng)用軟件;
(4)下載新的應(yīng)用軟件或參數(shù);
(5)驗(yàn)證已下載數(shù)據(jù)的完整性和可靠性。
通過Boot Loader更新氣囊控制單元應(yīng)用軟件,可以用于主機(jī)廠總裝車間 EOL(end-of-line)重新編程,或者用于售后維修車間。
通常情況下,一輛汽車內(nèi)有多個(gè)ECU(Electronic Control Unit ,電子控制單元,下文簡(jiǎn)稱 ECU)共享一個(gè) CAN(Controller Area Network,控制器局域網(wǎng),下文簡(jiǎn)稱CAN)總線,測(cè)試人員通過連接到 CAN總線進(jìn)行平臺(tái)診斷和下載數(shù)據(jù)。
圖1 操作環(huán)境示意圖
診斷測(cè)試工具給汽車內(nèi)ECU發(fā)送診斷請(qǐng)求,響應(yīng)評(píng)估。信息傳遞包括ECU中的故障信息,信號(hào)報(bào)告,控制例程,校準(zhǔn)值和許多其他在執(zhí)行ECU診斷用的數(shù)據(jù)類型,編程或其他數(shù)據(jù)傳輸不正常的節(jié)點(diǎn)與節(jié)點(diǎn)通信。
(1)啟動(dòng)一致性檢查,評(píng)估應(yīng)用程序是否有效,并使其保持在安全啟動(dòng)模式。
(2)提供一個(gè)安全的編程功能,更換不同版本的應(yīng)用軟件。
(3)管理所有被下載軟件的版本和類型歷史。
下表列出了 ACU刷寫應(yīng)用軟件過程中涉及的 UDS(ISO14229-1 Unified Diagnostics Services,統(tǒng)一診斷服務(wù),下文簡(jiǎn)稱UDS)服務(wù)、尋址方式以及是否需要安全權(quán)限。
表1 ACU刷寫功能相關(guān)UDS診斷服務(wù)
ACU系統(tǒng)啟動(dòng)(軟/硬件復(fù)位)之后,ACU將會(huì)檢測(cè)應(yīng)用軟件是否有效和是否有刷寫請(qǐng)求,并根據(jù)這些狀態(tài)來決定控制權(quán)在應(yīng)用軟件或Boot loader中。
ECU只支持半雙工通信。這意味著在一個(gè)時(shí)間點(diǎn)上,診斷工具和ECU之間只可能有一個(gè)方向的通信。ECU中只有一個(gè)診斷協(xié)議實(shí)例可用,這個(gè)實(shí)例同一時(shí)間只能處理一個(gè)請(qǐng)求。規(guī)定是收到任何信息將會(huì)占用這個(gè)資源直到請(qǐng)求信息結(jié)束。
通過讀取標(biāo)識(shí)信息來識(shí)別ECU,ECU硬件和軟件信息需要通過使用UDS $22服務(wù)命令讀取出來,用于確認(rèn)接下來的刷寫步驟是否被允許。
以下DID(Data Identifier,下文簡(jiǎn)稱DID)需要被讀出來用于驗(yàn)證目標(biāo)ECU和待刷寫軟件是否匹配:(注:由于不同ECU供應(yīng)商廠家的識(shí)別方式可能存在不同,因此上述DID只作為示例。)
表2 標(biāo)識(shí)信息
ACU在執(zhí)行軟件刷寫時(shí)需要通過Boot Loader對(duì)ACU進(jìn)行編程,具體內(nèi)容包括預(yù)編程,編程和后編程,下文將對(duì)其進(jìn)行詳細(xì)介紹。
預(yù)編程步驟通常是在應(yīng)用軟件下執(zhí)行的,但是當(dāng)ECU中沒有應(yīng)用軟件的時(shí)候也需要在Boot loader下執(zhí)行。
圖2 預(yù)編程步驟
5.1.1 讀取當(dāng)前激活會(huì)話模式
此命令用于確認(rèn)當(dāng)前ECU控制權(quán)歸屬,判斷控制權(quán)是處于應(yīng)用軟件還是Boot Loader,需要使用物理尋址命令。
5.1.2 進(jìn)入擴(kuò)展會(huì)話模式
ECU需要被切換到擴(kuò)展會(huì)話模式,使用UDS $10診斷會(huì)話控制服務(wù)。通常用功能尋址命令。
5.1.3 禁止DTC存儲(chǔ)
所有連接在總線上的ECU應(yīng)該停止存儲(chǔ)故障碼,因?yàn)樵谲浖螺d過程中一些信號(hào)會(huì)無效或丟失,使用UDS $85診斷故障代碼設(shè)置控制服務(wù)。通常用功能尋址命令。
5.1.4 禁止非診斷通信
ECU應(yīng)該停止軟件下載信號(hào)之外的所有通信,以使總線負(fù)擔(dān)降到最小,使用UDS $28 通信控制服務(wù)。通常用功能尋址命令。
5.1.5 切換到編程會(huì)話模式
如果ECU已經(jīng)準(zhǔn)備好可以編程,那么tester應(yīng)該發(fā)送進(jìn)入編程會(huì)話模式的請(qǐng)求。ECU會(huì)復(fù)位并進(jìn)入Boot loader模式,使用UDS $10診斷會(huì)話控制服務(wù)。需要用物理尋址命令。
在應(yīng)用軟件中,ECU接受$10服務(wù)需要滿足如下所列的前提條件:
(如果 ECU處于 Boot loader的控制下,那么這些$10診斷會(huì)話控制服務(wù)的前提條件是不需要的。)
- 空閑模式
- 內(nèi)部故障激活
- 自供電模式
- 電壓過高
- 電壓過低
- 碰撞數(shù)據(jù)存在
- 車速過高(車速應(yīng)該為0)
如果上面這些條件成立的話,會(huì)得到$22負(fù)反饋。
預(yù)編程結(jié)束后,ECU開始編程。編程是針對(duì)單一 ECU的操作,所以要用物理尋址命令。
5.2.1 解鎖ECU
為了使能編程,需要通過安全訪問服務(wù)命令解鎖ECU。5.2.2 寫入tester身份信息
Tester需要通過UDS $2E寫數(shù)據(jù)服務(wù)寫入自己的身份信息,為后續(xù)執(zhí)行相關(guān)操作賦予權(quán)限。
5.2.3 擦除存儲(chǔ)空間
在刷寫ROM之前需要先執(zhí)行擦除操作,使用UDS $31路程控制服務(wù)命令。
5.2.4 下載應(yīng)用軟件
在下載過程中,ECU把傳送的數(shù)據(jù)寫到事先定義好的ROM區(qū)域。使用UDS $34請(qǐng)求下載命令、$36傳輸數(shù)據(jù)命令和$37請(qǐng)求退出傳輸命令。
5.2.5 檢查下載的軟件
下載完成后ECU需要檢查所寫的數(shù)據(jù)是否有效(確保安全刷寫)。如果檢查結(jié)果是失敗,那么刷寫工具需要跳轉(zhuǎn)到擦除存儲(chǔ)空間步驟重新執(zhí)行刷寫步驟,使用UDS $31路程控制服務(wù)命令。
5.2.6 ECU兼容性檢查
所有數(shù)據(jù)下載完成之后,ECU需要檢查數(shù)據(jù)塊的兼容性。應(yīng)用軟件有效的狀態(tài)標(biāo)志就是在這一步設(shè)置的,使用UDS $31路程控制服務(wù)命令。
圖4 后編程步驟
5.3.1 復(fù)位應(yīng)用軟件
下載完成之后,需要發(fā)送復(fù)位命令重啟ECU,使用UDS$11 ECU復(fù)位服務(wù)命令,需要用物理尋址命令。
5.3.2 切換到擴(kuò)展會(huì)話模式
ECU需要切換到擴(kuò)展會(huì)話模式,使用$10診斷會(huì)話控制服務(wù)命令,通常用功能尋址命令。
5.3.3 使能非診斷通信
為了進(jìn)入正常模式,需要使能所有ECU的正常通信,使用$28通信控制服務(wù)命令,通常用功能尋址命令。
5.3.4 使能DTC存儲(chǔ)
正常通信被使能之后,所有故障碼的處理也要被恢復(fù)正常,使用UDS $85 DTC設(shè)置控制服務(wù)命令,通常用功能尋址命令。
5.3.5 讀取當(dāng)前會(huì)話模式
刷寫完成后,需要確認(rèn)控制權(quán)處于應(yīng)用軟件還是 Boot loader軟件。如果控制權(quán)在應(yīng)用軟件,那么意味著本次刷寫成功了。如果控制權(quán)在Boot loader,那么意味著本次刷寫失敗了,需要用物理尋址命令。
隨著汽車電子技術(shù)和軟件技術(shù)應(yīng)用的逐漸普及,軟件刷寫功能將應(yīng)用到更多的ECU中,雖然增加了需要主機(jī)廠管控的軟件種類,但對(duì)于一個(gè)整車項(xiàng)目開發(fā)工作而言,軟件刷寫節(jié)約了ECU開發(fā)時(shí)間,同時(shí)也降低了相應(yīng)的開發(fā)成本,大大促進(jìn)了整車項(xiàng)目的開發(fā)工作進(jìn)度。
參考文獻(xiàn)
[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].