公眾號(hào)前面幾篇文章,筆者已經(jīng)對(duì)FOTA、SOTA、信息安全等內(nèi)容進(jìn)行了系統(tǒng)性的綜述。從本期開始,筆者將開設(shè)技術(shù)專欄,分別對(duì)上述主題展開更詳細(xì)、深入的介紹,以饗讀者,也期望在和同行的交流中碰撞出更四射的火花。 首先推出的是FOTA技術(shù)專欄,專欄第一篇文章,筆者將介紹整車部分控制器FOTA技術(shù)實(shí)現(xiàn)所需仰賴的底層技術(shù)之一:UDS刷寫。 UDS刷寫簡(jiǎn)述 UDS(Unified Diagnostic Services,統(tǒng)一診斷服務(wù))刷寫,指的是基于應(yīng)用層協(xié)議(ISO 14229)和網(wǎng)絡(luò)層協(xié)議(與通信物理層相關(guān),如面對(duì)CAN總線的ISO 15765-2)定義的控制器軟件升級(jí)流程。 UDS刷寫應(yīng)用對(duì)象一般為采用ETH/CAN/LIN等總線通訊的車載傳統(tǒng)控制器。車載傳統(tǒng)控制器主芯片以MCU為主,MCU上主要運(yùn)行嵌入式實(shí)時(shí)操作系統(tǒng)。UDS刷寫主要是通過診斷上位機(jī)(Tester)給車載傳統(tǒng)控制器發(fā)送定義好的診斷服務(wù)命令實(shí)現(xiàn)。 與車載傳統(tǒng)控制器相對(duì)應(yīng)的是存在高算力芯片的控制器,民間常稱之為智能控制器。此類控制器一般存在雙分區(qū)結(jié)構(gòu)且具有滿足POSIX標(biāo)準(zhǔn)的操作系統(tǒng)(一般為Android、QNX或Linux等),其軟件升級(jí)流程一般自主實(shí)現(xiàn),本文介紹的UDS刷寫技術(shù)暫不適用此類控制器。 UDS線下刷寫的應(yīng)用歷史已有幾十年,最典型的應(yīng)用場(chǎng)景是在4S店。帥氣的技師們扛著電腦或者專用的診斷儀對(duì)車輛控制器進(jìn)行軟件升級(jí)便是UDS線下刷寫的最生動(dòng)體現(xiàn)。在這一場(chǎng)景中,電腦或診斷儀作為上位機(jī),通過車輛OBD口接入整車網(wǎng)絡(luò)總線,并將升級(jí)包(一般為hex,s19格式)按主機(jī)廠定義的的刷寫流程對(duì)車輛控制器進(jìn)行刷寫。 UDS線上刷寫的應(yīng)用伴隨著FOTA技術(shù)的成熟而得到不斷推廣。在FOTA的通用技術(shù)架構(gòu)下,一般由FOTA的升級(jí)主控(升級(jí)Master)作為上位機(jī),升級(jí)主控從云端下載升級(jí)包,并按照固定的刷寫流程或者升級(jí)包中配置的刷寫流程,對(duì)車輛上的對(duì)手件進(jìn)行刷寫。 UDS刷寫無論線下還是線上,都離不開控制器中Bootloader以及UDS協(xié)議的支持,在正式介紹UDS刷寫流程之前,筆者先簡(jiǎn)介上述兩部分內(nèi)容。 Bootloader Bootloader稱為引導(dǎo)加載程序,是軟件執(zhí)行的第一步,無論是否使用操作系統(tǒng),Bootloader都是必須執(zhí)行的。 我們?nèi)粘^k公電腦中的Windows系統(tǒng)是由BIOS引導(dǎo)啟動(dòng)的,BIOS開機(jī)自檢并分配資源后,將Bootloader 讀到系統(tǒng)的內(nèi)存中。隨后Bootloader獲取電腦控制權(quán),將指針帶到系統(tǒng)內(nèi)核,開始啟動(dòng)操作系統(tǒng)。 上文介紹的車載傳統(tǒng)控制器啟動(dòng)過程同樣離不開Bootloader的幫助。Bootloader初始化硬件設(shè)備,建立內(nèi)存空間映射圖,將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在控制器軟件升級(jí)過程中,Bootloader進(jìn)入編程會(huì)話后會(huì)擦除指定地址的程序,并寫入新的程序,從而實(shí)現(xiàn)控制器的軟件升級(jí),后文會(huì)詳細(xì)闡述該過程。 UDS協(xié)議 UDS協(xié)議就是ISO 14229標(biāo)準(zhǔn)的別名,全稱為統(tǒng)一診斷服務(wù)的應(yīng)用層協(xié)議,標(biāo)準(zhǔn)規(guī)范了基于Bootloader的刷寫過程。各家主機(jī)廠均是基于UDS協(xié)議制定企業(yè)的診斷刷寫規(guī)范,在控制器的SOR階段會(huì)一同釋放給供應(yīng)商。 對(duì)于各控制器的供應(yīng)商而言,刷寫流程的統(tǒng)一簡(jiǎn)化了開發(fā)復(fù)雜度。UDS協(xié)議可在不同的汽車網(wǎng)絡(luò)通信(例如CAN、LIN、 Flexray、 Ethernet 和 K-line)上實(shí)現(xiàn),最常用的為UDSonCAN和UDSonIP(DoIP)兩種。下圖為ISO 14229中各車內(nèi)總線實(shí)現(xiàn)UDS協(xié)議的網(wǎng)絡(luò)模型圖。 以UDSonCAN舉例, CAN總線協(xié)議是汽車內(nèi)最常使用的總線協(xié)議,每幀僅有8字節(jié),ISO 15765-2解決了ISO 11898協(xié)議中定義的經(jīng)典CAN數(shù)據(jù)鏈路層與ISO 14229協(xié)議中定義的應(yīng)用層數(shù)據(jù)長(zhǎng)度不一致的問題。ISO 15765-2中定義的內(nèi)容包括網(wǎng)絡(luò)層和傳輸層的協(xié)議,包括尋址方式(物理尋址、功能尋址),組包方式、協(xié)議控制信息、流量控制以及時(shí)間控制。 UDS協(xié)議是一種交互協(xié)議,呈現(xiàn)一問一答的通信方式,提供了26種服務(wù),各服務(wù)在報(bào)文中通過SID(Service Identifier,診斷服務(wù)ID)來區(qū)分。在UDS刷寫流程中,主要應(yīng)用的服務(wù)如下表所示。 22/2E讀寫DID的服務(wù)主要是為了讀取版本號(hào)、VIN等信息,同時(shí)寫入諸如指紋、VIN碼等相關(guān)信息(OEM自定義);10/27/11/3E等服務(wù)是基礎(chǔ)診斷和通信相關(guān)服務(wù),作用是切換系統(tǒng)的會(huì)話模式、安全模式解鎖、重啟ECU以及保持鏈接活躍; 85/28服務(wù)主要是為了暫停其他控制器網(wǎng)絡(luò)報(bào)文的發(fā)送和DTC的設(shè)置,使得刷寫條件和網(wǎng)絡(luò)帶寬能達(dá)到最佳的狀態(tài); 31/34/36/37則是數(shù)據(jù)下載相關(guān)服務(wù),負(fù)責(zé)數(shù)據(jù)下載的請(qǐng)求、傳輸和退出。 UDS刷寫流程 會(huì)話模式是診斷領(lǐng)域非常重要的一個(gè)狀態(tài)機(jī),不同的會(huì)話模式是用來區(qū)分診斷服務(wù)執(zhí)行權(quán)限。UDS協(xié)議定義了三種會(huì)話模式:默認(rèn)會(huì)話、編程會(huì)話、擴(kuò)展會(huì)話,不同的會(huì)話模式可以相互切換。在Application中可使用默認(rèn)會(huì)話模式和擴(kuò)展會(huì)話模式。在Bootloader中可使用默認(rèn)會(huì)話模式和刷新會(huì)話模式。 會(huì)話切換流程如下圖所示,主要通過0x10服務(wù)在三種會(huì)話模式之間切換。 UDS刷寫流程包括三部分:預(yù)編程階段、主編程階段和后編程階段,如下圖所示。其中,白色框步驟為功能尋址,藍(lán)色框步驟為物理尋址。各家主機(jī)廠會(huì)根據(jù)實(shí)際情況對(duì)方案進(jìn)行微調(diào)。其中Client為升級(jí)客戶端,往往由診斷儀或FOTA master擔(dān)任。Server指的是升級(jí)控制器端。 一、預(yù)編程階段此階段是刷寫前的網(wǎng)絡(luò)準(zhǔn)備工作,主要內(nèi)容包括(1)檢查升級(jí)前置條件;(2)提高刷寫網(wǎng)絡(luò)速度;(3)禁止其他ECU的網(wǎng)絡(luò)報(bào)文并關(guān)閉DTC設(shè)置。 1、Client功能尋址發(fā)送0x10服務(wù)將所有控制器切換至擴(kuò)展會(huì)話模式,以支持0x85服務(wù)和0x28服務(wù); 2、Client物理尋址發(fā)送0x31服務(wù)至Server,判斷當(dāng)前是否滿足升級(jí)的前置條件,如點(diǎn)火狀態(tài),車速等判斷; 3、Client功能尋址發(fā)送0x85和0x28服務(wù),禁用CAN總線上各Server的網(wǎng)絡(luò)報(bào)文和DTC設(shè)置; 4、Client通過0x22服務(wù)讀取控制器的DID數(shù)據(jù); 5、Client在會(huì)話過程中通過0x3E服務(wù)保持與Server的會(huì)話模式 二、主編程階段此階段是控制器的刷寫主流程,在Bootloader的編程會(huì)話模式下進(jìn)行,步驟如下: 1、Client功能尋址發(fā)送0x10服務(wù)將待刷寫的Server切換到編程會(huì)話模式; 2、Client通過0x2E服務(wù)將指紋寫入Server,例如本次刷寫人的身份; 3、Client通過0x27服務(wù)向Server求安全模式的seed,并根據(jù)約定的算法得到key,Server驗(yàn)證通過后解鎖安全模式。安全模式的作用是以防電控單元被意外地擦除或未經(jīng)授權(quán)地刷新; 4、Client通過0x31服務(wù)擦除Server指定地址段的程序; 5、Client通過0x34服務(wù)請(qǐng)求數(shù)據(jù)下載,Server回復(fù)一次0x36服務(wù)傳輸數(shù)據(jù)的Block的最多字節(jié)數(shù); 6、如果0x34服務(wù)得到了正確響應(yīng),Client就開始使用0x36服務(wù)啟動(dòng)數(shù)據(jù)傳輸。下載的數(shù)據(jù)是連續(xù)的,可使用34-36-36…-37命令實(shí)現(xiàn)。如果數(shù)據(jù)不連續(xù),則需要重新進(jìn)行0x34服務(wù); 7、所有的0x36服務(wù)完成后,Client通過0x37服務(wù)請(qǐng)求退出傳輸; 8、Client通過0x31服務(wù)不同的子功能對(duì)程序的完整性和一致性進(jìn)行驗(yàn)證; 9、校驗(yàn)完成后0x11服務(wù)對(duì)Server復(fù)位。 三、后編程階段1、Client通過0x10服務(wù)恢復(fù)控制器的默認(rèn)會(huì)話; 2、Client通過0x14服務(wù)清除Server中的故障碼,整個(gè)刷寫流程結(jié)束。 多路并行刷寫 當(dāng)前FOTA升級(jí)的一般策略是串行升級(jí),即每個(gè)控制器升級(jí)完成后再對(duì)下一個(gè)控制器進(jìn)行升級(jí),單一時(shí)間只對(duì)一個(gè)控制器進(jìn)行升級(jí)。如任務(wù)中有多個(gè)車輛控制器需要升級(jí),則會(huì)對(duì)本次任務(wù)的升級(jí)時(shí)長(zhǎng)和車輛電瓶電量提出挑戰(zhàn)。如果能夠在FOTA中并行刷寫多個(gè)控制器,充分利用總線帶寬,可減少OTA升級(jí)時(shí)長(zhǎng),實(shí)現(xiàn)整車的快速升級(jí)。 因此,并行刷寫在FOTA的應(yīng)用引起了各家主機(jī)廠的關(guān)注。產(chǎn)線的線下診斷儀刷寫其實(shí)已實(shí)現(xiàn)了并行刷寫,優(yōu)勢(shì)在于可縮減產(chǎn)線的工位數(shù),并提高生產(chǎn)效率。當(dāng)前并行刷寫常用的做法為上位機(jī)開啟多個(gè)刷寫線程。不同總線間的并行刷寫相對(duì)容易實(shí)現(xiàn),如同時(shí)對(duì)CAN總線上的控制器和車載以太網(wǎng)上的控制器在同一時(shí)間進(jìn)行刷寫,總線之間的干擾并不大。 而對(duì)連接在同一網(wǎng)關(guān)下,不同路CAN上的兩個(gè)控制器進(jìn)行刷寫,如Body CAN和Info CAN上的控制器并行刷寫。上位機(jī)開啟多個(gè)線程并且打開多個(gè)CAN通道 ,可通過通道號(hào)的不同對(duì)每個(gè)控制器進(jìn)行識(shí)別,防止報(bào)文傳輸過程中不同控制器的報(bào)文相互沖突造成的報(bào)文混亂問題,實(shí)現(xiàn)了一上位機(jī)對(duì)多控制器的CAN報(bào)文傳輸。 與此同時(shí),雖然開辟更多的RAM去處理診斷指令可以使得刷寫速率更快,但是資源開銷問題也不容小視。尤其當(dāng)總線轉(zhuǎn)換時(shí),傳輸層和網(wǎng)絡(luò)層的資源開銷也會(huì)上升。上位機(jī)的RAM資源的消耗,處理能力足夠與否,都需要O主機(jī)廠按實(shí)際情況和需求評(píng)估。 小結(jié) 本期簡(jiǎn)單介紹了UDS刷寫的基礎(chǔ)知識(shí),下一期,F(xiàn)OTA技術(shù)專欄將會(huì)介紹智能控制器常用的升級(jí)方式,A/B升級(jí)(汽車OTA領(lǐng)域的標(biāo)桿企業(yè)ABup,其英文名稱前兩個(gè)字母寓意也來源于此)。 往期精彩: FOTA信息安全,一篇看不懂的綜述 SOTA技術(shù)概述 車聯(lián)網(wǎng)信息安全概述 |
|