作者介紹:張大俠,一汽大眾資深攻城獅。主要從事汽車(chē)診斷刷新方面的工作,在UDS診斷、車(chē)載以太網(wǎng)等方面都有獨(dú)到的見(jiàn)解,對(duì)這塊感興趣的朋友,請(qǐng)關(guān)注張大俠個(gè)人公眾號(hào):汽車(chē)ECU網(wǎng)絡(luò)診斷技術(shù)。
ISO-14229-1在定義了所有的UDS診斷服務(wù)之后,還用了一章內(nèi)容描述了基于這些診斷服務(wù)給ECU刷寫(xiě)軟件的流程。14229寫(xiě)得很詳細(xì),內(nèi)容較多,我在這里就講一下核心的一些步驟,具體細(xì)節(jié)如有需要或感興趣可以去看規(guī)范原文。
ECU的軟件可以從Application和Boot的角度區(qū)分,如下圖所示:
![]()
ECU Power-On之后首先會(huì)進(jìn)入Boot Manager,然后Boot Manager會(huì)對(duì)Application進(jìn)行Check,如果Application沒(méi)問(wèn)題,則進(jìn)入Application正常運(yùn)行,如果Application有問(wèn)題(比如軟件與硬件兼容問(wèn)題),則會(huì)進(jìn)入Reprogramming Software(也叫Bootloader),等待用戶(hù)寫(xiě)入正確的軟件。在Application中的時(shí)候,也可以通過(guò)轉(zhuǎn)換Session的命令,進(jìn)入到Bootloader中進(jìn)行軟件的重新刷寫(xiě)。也就是說(shuō),刷軟件的過(guò)程就是在Bootloader中進(jìn)行的。14229建議Boot Software不應(yīng)該被更改,或至少是不應(yīng)該被輕松地更改。
1 Pre-Programming
2 Programming
3 Post-Programming
從名字上也大概可以猜到它們都是做些什么了。
1 Pre-Programming
![]()
Step 1:進(jìn)入Extended Session
Step 2:使用31服務(wù)執(zhí)行檢查編程條件的Routine,如條件不滿(mǎn)足(比如車(chē)速過(guò)高等),則退出刷寫(xiě)。
Step 3:使用85服務(wù)關(guān)閉DTC的存儲(chǔ)
Step 4:使用28服務(wù)關(guān)閉與診斷無(wú)關(guān)的報(bào)文,將節(jié)約出來(lái)的通信資源用于刷寫(xiě)軟件,提升刷寫(xiě)速度。
2 Programming
![]()
Step 1:進(jìn)入Programming Session
Step 2:使用27服務(wù)進(jìn)行安全訪問(wèn)
Step 3:寫(xiě)入指紋信息,即標(biāo)記寫(xiě)軟件人的身份
Step 4:執(zhí)行31服務(wù),刪除存儲(chǔ)空間
Step 5:按照我在以前的文章里寫(xiě)的,調(diào)用34,36,37服務(wù)完成數(shù)據(jù)的寫(xiě)入。
Step 6:執(zhí)行31服務(wù),檢查剛剛寫(xiě)入的數(shù)據(jù)塊是否正確,典型的就是執(zhí)行Checksum驗(yàn)證。如果還有數(shù)據(jù)塊要寫(xiě),則再跳回Step 5,如果沒(méi)有,則進(jìn)入Step 7。
Step 7:寫(xiě)入所有數(shù)據(jù)塊之后,一個(gè)完整的軟件也就寫(xiě)好了,此時(shí)需要ECU檢查一下這個(gè)軟件是否可用,比如軟硬件兼容問(wèn)題。
3 Post-Programming
![]()
這個(gè)過(guò)程非常簡(jiǎn)單,我直接引用14229的圖了,在軟件刷寫(xiě)并且驗(yàn)證完成之后,只需要執(zhí)行11命令進(jìn)行重啟或者10命令回到Default Session就可以了。
本文對(duì)14229中定義的流程進(jìn)行了簡(jiǎn)化,但是主干部分幾乎一致。畢竟完整地解釋規(guī)范的確工作量太大,業(yè)余時(shí)間沒(méi)有那么多。如有疑問(wèn)或建議,歡迎留言評(píng)論。
![]()