李娟 劉鑫 張玉敏 張海紅
摘要:智能汽車對于汽車電子控制單元(ECU)的升級非常頻繁,需要從汽車中拆出ECU更新升級軟件,該種操作會增加拆裝風(fēng)險和軟件升級成本?;诮y(tǒng)一診斷服務(wù)(UDS)的操作系統(tǒng)啟動加載程序升級方法能夠解決以上難題,利用UDS的上位機通過控制器局域網(wǎng)絡(luò)總線連接升級,可以避免從智能汽車上拆卸ECU,為后續(xù)軟件更新提供方便。該種升級方法也使軟件的燒錄流程統(tǒng)一規(guī)范,可以兼容不同ECU設(shè)備,方便不同廠商之間共同調(diào)試。
關(guān)鍵詞:操作系統(tǒng)啟動加載程序;統(tǒng)一診斷服務(wù)協(xié)議;控制器局域網(wǎng)絡(luò)總線
中圖分類號:TP311? ? ? 文獻標(biāo)識碼:A
文章編號:1009-3044(2021)27-0129-03
Abstract: Smart cars frequently upgrade their electronic control units (ECUs). The ECU needs to be removed from the car to update the software. This operation increases the risk of disassembly and installation and the cost of software upgrades. The upgrade method of operating system boot loader based on Unified Diagnostic Service (UDS) can solve the above problems. Upgrade the upper computer using the UDS through the controller local area network bus connection. Removing the ECU from the smart car can be avoided. Provide convenience for subsequent software updates. This upgrade method also makes the software burning process a unified standard. It can be compatible with different ECU devices to facilitate joint debugging between different manufacturers
Key words: BootLoader; UDS agreement; CAN
1 背景
隨著智能汽車的逐步推廣和使用,汽車的各方面功能在不斷增加,軟件的更新周期開始變得越來越短,軟件燒錄的成本開始增高。控制器局域網(wǎng)絡(luò)總線(CAN)作為汽車通信的主要方式,具有完善的通信標(biāo)準(zhǔn),也為UDS服務(wù)和操作系統(tǒng)啟動加載程序(BootLoader)提供可靠的保障。智能汽車通過CAN總線來部署實現(xiàn)軟件升級,是一項低成本、高效、操作簡單且被廣泛利用的技術(shù)。
UDS統(tǒng)一診斷服務(wù)由ISO-14229系列標(biāo)準(zhǔn)定義[1],是完善的國際標(biāo)準(zhǔn)協(xié)議。主機廠商和零部件生產(chǎn)商都會按照這種統(tǒng)一的標(biāo)準(zhǔn)進行生產(chǎn)。采用統(tǒng)一的診斷服務(wù),使軟件開發(fā)和硬件生產(chǎn)更加高效,能夠降低生產(chǎn)開發(fā)周期。UDS也具有完善的安全服務(wù)流程,CAN具有可靠性的數(shù)據(jù)完整性機制?;贑AN和UDS服務(wù)的BootLoader升級方法使軟件升級更新具有快速、可靠、易用、安全等特點。
2 BootLoader相關(guān)的UDS服務(wù)
2.1 診斷類型
雖然有很多服務(wù),但是一般常用的有15種左右[2]。BootLoader一般涉及的診斷服務(wù)有0x10診斷會話控制,切換會話模式,0x11ECU復(fù)位操作。0x27解鎖,用于解鎖ECU安全限制。0x3E保持會話。0x2E數(shù)據(jù)的寫入操作,診斷儀通過這個服務(wù)寫入數(shù)據(jù)到ECU。0x22數(shù)據(jù)讀取,主要讀取ECU上面的內(nèi)部數(shù)據(jù)。0x31例程控制、觸發(fā)ECU執(zhí)行操作。0x34請求下載,診斷儀向ECU燒寫軟件前的確認信息。0x36數(shù)據(jù)傳輸,來給ECU燒寫數(shù)據(jù)。0x37請求退出。0x85啟動或者暫停DTC,0x28打開或者關(guān)閉CAN報文,0x85和0x28主要用于BootLoader燒寫程序過程中減少帶寬負載。
2.2 診斷會話
會話模式是汽車診斷很重要的狀態(tài)機。每種會話形式,對應(yīng)著差異的SID執(zhí)行限制。常用的會話模式有三種,默認會話、編程會話、擴展會話[3]。ECU啟動位于默認會話。ECU從默認切換到擴展,但是不能從默認跳轉(zhuǎn)到編程。必須通過擴展切換到編程。
在BootLoader加載過程中會話的切換很重要。ECU開機后,啟動Boot程序,通過判斷軟件更新的標(biāo)志位,決定是否更新操作。不更新的話,會判斷App段代碼是否有效,然后執(zhí)行App段代碼。App段代碼執(zhí)行進入默認會話。需要一些讀寫操作時需要進入到擴展會話。刷寫軟件時,需要進入到編程會話。這時則有App地址段進入到Boot地址段代碼,并切換編程狀態(tài),然后回復(fù)診斷儀(Tester)編程會話正響應(yīng),診斷儀本身具備UDS協(xié)議,可以擴展軟件更新功能。
2.3 UDS服務(wù)
1)0x10診斷會話控制
ECU開機會進入到默認方式中,診斷儀需要進行BootLoader的85、28服務(wù)操作,需要擴展會話。診斷儀發(fā)送10 03使ECU進入到擴展會話。其中子服務(wù) 01表示默認、02表示編程、03表示擴展。
0x11ECU復(fù)位服務(wù)
11服務(wù)的主要目的是使ECU的某些操作生效,需要重啟ECU。所以通過11服務(wù)來重啟ECU。重啟后ECU會進入到默認會話形式。