陶媛媛,杜 彬,田 彬
(陜西重型汽車有限公司汽車工程研究院,陜西 西安 710200)
汽車電子領(lǐng)域的ECU(Electronic Control Unit,電子控制單元)大多為普通單片機(jī),其BootLoader(簡(jiǎn)稱BT)主要負(fù)責(zé)應(yīng)用程序的升級(jí)。隨著智能網(wǎng)聯(lián)汽車時(shí)代的不斷發(fā)展,ECU軟件可以通過OBD(On Board Diagnostics,車載診斷系統(tǒng))接口,利用總線通信,將升級(jí)包傳輸給BootLoader進(jìn)行寫Flash操作,完成程序升級(jí),也可以通過OTA(Over the Air Technology,空中下載技術(shù))進(jìn)行遠(yuǎn)程程序升級(jí)。
在程序升級(jí)過程中,可能會(huì)出現(xiàn)一些問題,導(dǎo)致應(yīng)用軟件或數(shù)據(jù)不能正常使用,如程序更新流程意外終止,軟件數(shù)據(jù)包與ECU不匹配等,此時(shí)會(huì)影響到車輛功能的正常使用,降低整車性能。為防止出現(xiàn)問題時(shí)ECU的基本功能失效,本文采用一種基于車載以太網(wǎng)的數(shù)據(jù)備份刷寫策略,實(shí)現(xiàn)恢復(fù)上一版本軟件和數(shù)據(jù)的功能,解決ECU功能異常問題,提升車載控制器性能。
備份刷寫的方案實(shí)現(xiàn)主要包括Flash區(qū)域劃分和不同情況下的數(shù)據(jù)備份流程。
為了實(shí)現(xiàn)異常情況的數(shù)據(jù)備份升級(jí),該策略要求ECU的Flash區(qū)域容量至少為應(yīng)用程序的2倍,將Flash區(qū)域劃分為兩塊完全獨(dú)立的空間,NA(Normal Area)和SA(Spare Area),NA為軟件正常運(yùn)行的區(qū)域,SA為NA程序和數(shù)據(jù)的備份區(qū)域。以Infineon TC299芯片為例,BootLoader、NA和SA軟件數(shù)據(jù)的內(nèi)存分配如圖1所示。
圖1 軟件數(shù)據(jù)內(nèi)存分配方案
應(yīng)用程序運(yùn)行在NA區(qū),SA區(qū)作為NA區(qū)的備份,可以將軟件和數(shù)據(jù)從SA區(qū)回滾到NA區(qū)。此方案不受硬件的限制,并且應(yīng)用程序設(shè)計(jì)時(shí)無需考慮位置無關(guān)代碼的設(shè)計(jì),不受硬件或編譯器的限制,通用性強(qiáng)。
Flash的NA區(qū)和SA區(qū)均是獨(dú)立的區(qū)域,可以存儲(chǔ)完整的APP程序,根據(jù)備份刷寫方式,將數(shù)據(jù)備份流程分為自動(dòng)回滾和手動(dòng)回滾,以下分別針對(duì)這兩種方式詳細(xì)介紹備份流程。
1.2.1 自動(dòng)回滾
自動(dòng)回滾方案適用于升級(jí)意外中斷情況,加入自動(dòng)回滾后,每次上電或復(fù)位,系統(tǒng)先運(yùn)行BootLoader程序,判斷程序更新標(biāo)志位是否有效,若無效,則在NA區(qū)運(yùn)行APP程序;若有效,則執(zhí)行BT刷寫流程。進(jìn)入BT刷寫流程,判斷NA區(qū)軟件數(shù)據(jù)標(biāo)志位APP_NA_Flag是否有效,若有效,則先將NA區(qū)數(shù)據(jù)備份到SA區(qū),然后擦除NA區(qū)數(shù)據(jù),下載NA區(qū)刷寫文件,刷寫升級(jí)完成后將APP_NA_Flag置為有效,運(yùn)行APP程序;若APP_NA_Flag無效,則判斷APP_SA_Flag是否有效,若無效,則停留在BootLoader程序中,若有效,則將SA數(shù)據(jù)拷貝到NA區(qū),然后執(zhí)行擦除NA區(qū)以及后續(xù)步驟,最后運(yùn)行APP程序,具體流程如圖2所示。
圖2 自動(dòng)回滾流程
程序升級(jí)出現(xiàn)中斷時(shí),ECU持續(xù)監(jiān)測(cè)總線報(bào)文,若5s內(nèi)總線無任何操作,APP_NA_Flag置0,為無效,ECU會(huì)產(chǎn)生復(fù)位,斷電或上位機(jī)的復(fù)位請(qǐng)求也可以使ECU產(chǎn)生復(fù)位。重新上電或復(fù)位后,系統(tǒng)從BootLoader程序開始運(yùn)行,由于上一次的升級(jí)被中斷,此時(shí)系統(tǒng)會(huì)按照自動(dòng)備份回滾流程,將SA區(qū)域的程序數(shù)據(jù)回滾至NA區(qū),實(shí)現(xiàn)數(shù)據(jù)恢復(fù)。
1.2.2 手動(dòng)回滾
手動(dòng)回滾適用于控制器可以正常更新軟件數(shù)據(jù),但當(dāng)前更新版本為測(cè)試版本或者出現(xiàn)功能問題需要恢復(fù)到上一個(gè)軟件版本的情況,此時(shí),新的應(yīng)用程序和數(shù)據(jù)已經(jīng)被成功刷寫到NA區(qū),程序可以正常運(yùn)行在NA區(qū)。
手動(dòng)回滾流程如下:上位機(jī)設(shè)置手動(dòng)回滾,執(zhí)行刷寫流程,收到啟動(dòng)手動(dòng)回滾例程請(qǐng)求后,將手動(dòng)回滾標(biāo)志位FlashMode置1,執(zhí)行復(fù)位,復(fù)位后檢查手動(dòng)回滾標(biāo)志位FlashMode有效,判斷APP_SA_Flag是否有效,若有效,則將SA區(qū)的數(shù)據(jù)備份回滾到NA區(qū),若無效,則系統(tǒng)重啟。手動(dòng)回滾成功后NA區(qū)有效,復(fù)位后BootLoader將引導(dǎo)運(yùn)行NA區(qū)軟件,具體流程圖如圖3所示。
圖3 手動(dòng)回滾流程
搭建臺(tái)架測(cè)試環(huán)境,通過車載以太網(wǎng)DoIP協(xié)議的Boot-Loader刷寫流程,驗(yàn)證控制器程序備份回滾機(jī)制。
對(duì)本次設(shè)計(jì)的備份刷寫方案進(jìn)行測(cè)試。給控制器ECU上電,將BootLoader引導(dǎo)程序刷寫進(jìn)控制器中,然后通過通信設(shè)備將控制器下位機(jī)與電腦端的上位機(jī)進(jìn)行通信連接,完成程序的升級(jí)更新。
測(cè)試的軟硬件環(huán)境及工具如表1和圖4所示。
圖4 測(cè)試環(huán)境
表1 軟硬件測(cè)試工具
本次測(cè)試基于控制器車載以太網(wǎng)DoIP協(xié)議,在電腦端用上位機(jī)模擬診斷儀對(duì)控制器ECU進(jìn)行BT刷寫,同時(shí)通過Wireshark抓包的方式記錄BootLoader刷寫流程log,對(duì)測(cè)試log進(jìn)行分析,驗(yàn)證自動(dòng)回滾和手動(dòng)回滾機(jī)制。
為保證ECU能正常工作,控制器需要自動(dòng)開啟回滾功能,自動(dòng)回滾功能的開啟需要滿足兩個(gè)條件。
1)程序更新過程中遇到問題,如舊程序擦除成功后升級(jí)流程中斷,完整性校驗(yàn)或兼容性校驗(yàn)失敗,檢測(cè)到內(nèi)存溢出報(bào)出錯(cuò)誤等。
2)遇到問題后5s內(nèi)未收到任意診斷報(bào)文。
以完整性校驗(yàn)不通過為例,如圖5所示,應(yīng)用程序已刷寫至ECU中,通過31服務(wù)檢查編程完整性時(shí)得到否定響應(yīng),CRC校驗(yàn)失敗,自動(dòng)啟動(dòng)回滾流程,將SA區(qū)的程序拷貝至NA區(qū),進(jìn)行備份程序的刷寫,刷寫成功后someip報(bào)文正常收發(fā),自動(dòng)回滾完成。
圖5 完整性校驗(yàn)失敗后自動(dòng)回滾
手動(dòng)回滾功能的開啟需要手動(dòng)設(shè)置回滾標(biāo)志位,程序刷新完成后,遇到應(yīng)用功能錯(cuò)誤、軟件版本錯(cuò)誤或程序測(cè)試完成后需要對(duì)控制器進(jìn)行恢復(fù)等情況時(shí),開啟手動(dòng)回滾功能使控制器中程序回滾到上一版本。
以軟件版本不正確為例,如圖6所示,程序刷寫成功后,判斷軟件版本錯(cuò)誤,需開啟手動(dòng)回滾功能,ECU在收到啟動(dòng)回滾例程請(qǐng)求:31 01 F5 1A后,設(shè)置手動(dòng)回滾標(biāo)志位FlashMode為1,執(zhí)行手動(dòng)回滾操作,手動(dòng)回滾成功后控制器回到上一版本的程序,報(bào)文可正常收發(fā)。
圖6 軟件版本不正確后手動(dòng)回滾
測(cè)試結(jié)果表明:本文設(shè)計(jì)的程序備份升級(jí)方案,能夠根據(jù)不同的情況實(shí)現(xiàn)自動(dòng)回滾和手動(dòng)回滾功能,保證控制器應(yīng)用功能正常。
本文基于車載控制器BootLoader設(shè)計(jì)了一種數(shù)據(jù)備份刷寫方案,并搭建測(cè)試環(huán)境記錄測(cè)試數(shù)據(jù)進(jìn)行分析驗(yàn)證。結(jié)果表明:該方案可以實(shí)現(xiàn)自動(dòng)回滾和手動(dòng)回滾功能,能夠解決ECU的功能異常問題,極大提高了控制器的穩(wěn)定性。