李娟 劉鑫 張玉敏 張海紅



摘要:智能汽車對(duì)于汽車電子控制單元(ECU)的升級(jí)非常頻繁,需要從汽車中拆出ECU更新升級(jí)軟件,該種操作會(huì)增加拆裝風(fēng)險(xiǎn)和軟件升級(jí)成本。基于統(tǒng)一診斷服務(wù)(UDS)的操作系統(tǒng)啟動(dòng)加載程序升級(jí)方法能夠解決以上難題,利用UDS的上位機(jī)通過控制器局域網(wǎng)絡(luò)總線連接升級(jí),可以避免從智能汽車上拆卸ECU,為后續(xù)軟件更新提供方便。該種升級(jí)方法也使軟件的燒錄流程統(tǒng)一規(guī)范,可以兼容不同ECU設(shè)備,方便不同廠商之間共同調(diào)試。
關(guān)鍵詞:操作系統(tǒng)啟動(dòng)加載程序;統(tǒng)一診斷服務(wù)協(xié)議;控制器局域網(wǎng)絡(luò)總線
中圖分類號(hào):TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):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)啟動(dòng)加載程序(BootLoader)提供可靠的保障。智能汽車通過CAN總線來部署實(shí)現(xiàn)軟件升級(jí),是一項(xiàng)低成本、高效、操作簡單且被廣泛利用的技術(shù)。
UDS統(tǒng)一診斷服務(wù)由ISO-14229系列標(biāo)準(zhǔn)定義[1],是完善的國際標(biāo)準(zhǔn)協(xié)議。主機(jī)廠商和零部件生產(chǎn)商都會(huì)按照這種統(tǒng)一的標(biāo)準(zhǔn)進(jìn)行生產(chǎn)。采用統(tǒng)一的診斷服務(wù),使軟件開發(fā)和硬件生產(chǎn)更加高效,能夠降低生產(chǎn)開發(fā)周期。UDS也具有完善的安全服務(wù)流程,CAN具有可靠性的數(shù)據(jù)完整性機(jī)制。基于CAN和UDS服務(wù)的BootLoader升級(jí)方法使軟件升級(jí)更新具有快速、可靠、易用、安全等特點(diǎn)。
2 BootLoader相關(guān)的UDS服務(wù)
2.1 診斷類型
雖然有很多服務(wù),但是一般常用的有15種左右[2]。BootLoader一般涉及的診斷服務(wù)有0x10診斷會(huì)話控制,切換會(huì)話模式,0x11ECU復(fù)位操作。0x27解鎖,用于解鎖ECU安全限制。0x3E保持會(huì)話。0x2E數(shù)據(jù)的寫入操作,診斷儀通過這個(gè)服務(wù)寫入數(shù)據(jù)到ECU。0x22數(shù)據(jù)讀取,主要讀取ECU上面的內(nèi)部數(shù)據(jù)。0x31例程控制、觸發(fā)ECU執(zhí)行操作。0x34請(qǐng)求下載,診斷儀向ECU燒寫軟件前的確認(rèn)信息。0x36數(shù)據(jù)傳輸,來給ECU燒寫數(shù)據(jù)。0x37請(qǐng)求退出。0x85啟動(dòng)或者暫停DTC,0x28打開或者關(guān)閉CAN報(bào)文,0x85和0x28主要用于BootLoader燒寫程序過程中減少帶寬負(fù)載。
2.2 診斷會(huì)話
會(huì)話模式是汽車診斷很重要的狀態(tài)機(jī)。每種會(huì)話形式,對(duì)應(yīng)著差異的SID執(zhí)行限制。常用的會(huì)話模式有三種,默認(rèn)會(huì)話、編程會(huì)話、擴(kuò)展會(huì)話[3]。ECU啟動(dòng)位于默認(rèn)會(huì)話。ECU從默認(rèn)切換到擴(kuò)展,但是不能從默認(rèn)跳轉(zhuǎn)到編程。必須通過擴(kuò)展切換到編程。
在BootLoader加載過程中會(huì)話的切換很重要。ECU開機(jī)后,啟動(dòng)Boot程序,通過判斷軟件更新的標(biāo)志位,決定是否更新操作。不更新的話,會(huì)判斷App段代碼是否有效,然后執(zhí)行App段代碼。App段代碼執(zhí)行進(jìn)入默認(rèn)會(huì)話。需要一些讀寫操作時(shí)需要進(jìn)入到擴(kuò)展會(huì)話。刷寫軟件時(shí),需要進(jìn)入到編程會(huì)話。這時(shí)則有App地址段進(jìn)入到Boot地址段代碼,并切換編程狀態(tài),然后回復(fù)診斷儀(Tester)編程會(huì)話正響應(yīng),診斷儀本身具備UDS協(xié)議,可以擴(kuò)展軟件更新功能。
2.3 UDS服務(wù)
1)0x10診斷會(huì)話控制
ECU開機(jī)會(huì)進(jìn)入到默認(rèn)方式中,診斷儀需要進(jìn)行BootLoader的85、28服務(wù)操作,需要擴(kuò)展會(huì)話。診斷儀發(fā)送10 03使ECU進(jìn)入到擴(kuò)展會(huì)話。其中子服務(wù) 01表示默認(rèn)、02表示編程、03表示擴(kuò)展。
0x11ECU復(fù)位服務(wù)
11服務(wù)的主要目的是使ECU的某些操作生效,需要重啟ECU。所以通過11服務(wù)來重啟ECU。重啟后ECU會(huì)進(jìn)入到默認(rèn)會(huì)話形式。