冉旭晴
(上海北匯信息科技有限公司,上海 嘉定 201800)
“智能化、網(wǎng)聯(lián)化、電動(dòng)化、共享化”已成為汽車(chē)產(chǎn)業(yè)變革的必然趨勢(shì),汽車(chē)產(chǎn)品逐步由傳統(tǒng)代步機(jī)械工具向新一代具備感知和決策能力的智能終端轉(zhuǎn)變?!八幕弊兏镖厔?shì)的需求使得汽車(chē)的電子電氣架構(gòu)由分布式處理器架構(gòu)逐步向域控制器架構(gòu)和中央計(jì)算平臺(tái)架構(gòu)演變,汽車(chē)軟件將成為定義整車(chē)功能的關(guān)鍵[1]。而車(chē)內(nèi)的域控制器承擔(dān)了新四化的主要功能,電子架構(gòu)也大多采用MPU/SOC+MCU方案,如智能網(wǎng)聯(lián)域控制器、智能座艙域控制器、智能駕駛域控制器等,域控之間的通信也主要使用車(chē)載以太網(wǎng)。針對(duì)域控制器的升級(jí)軟件大小往往是幾百M(fèi)B甚至幾GB,使用傳統(tǒng)的診斷服務(wù)實(shí)現(xiàn)軟件傳輸與更新,無(wú)法有效利用以太網(wǎng)總線帶寬,對(duì)產(chǎn)線升級(jí)或者OTA升級(jí)的效率都會(huì)產(chǎn)生影響。針對(duì)大體量的軟件升級(jí),已有OEM使用一種新型升級(jí)方案,基于SOA與一種文件傳輸協(xié)議實(shí)現(xiàn)域控制器的軟件升級(jí)。
UDS協(xié)議是診斷服務(wù)的標(biāo)準(zhǔn)規(guī)范,規(guī)定了診斷服務(wù)的具體命令[2]。使用UDS服務(wù)刷寫(xiě)是目前更新汽車(chē)控制器軟件的主要方案。針對(duì)域控制器,主要使用DoIP+UDS協(xié)議來(lái)實(shí)現(xiàn)刷寫(xiě)方案。DoIP(Diagnostic communication over Internet Protocol)是一種基于互聯(lián)網(wǎng)協(xié)議的診斷?;谠撛\斷協(xié)議,主機(jī)廠和售后工程可以對(duì)車(chē)輛進(jìn)行診斷、刷新等操作[3]。在此種方案中,DoIP用來(lái)傳輸診斷數(shù)據(jù),通過(guò)UDS的0x34/0x38、0x36、0x37診斷服務(wù)實(shí)現(xiàn)升級(jí)軟件的控制與傳輸,文件的傳輸主要通過(guò)0x36服務(wù)。如圖1所示,DoIP的報(bào)頭長(zhǎng)度為8個(gè)字節(jié),另外在凈荷中有4個(gè)字節(jié)用來(lái)表示邏輯地址,在0x36傳輸數(shù)據(jù)過(guò)程中,UDS中的SID+blockSequenceCounter占據(jù)兩個(gè)字節(jié),所以每次傳輸一次數(shù)據(jù),有14個(gè)字節(jié)的占用。
圖1 DoIP報(bào)文結(jié)構(gòu)
另外一方面,由于協(xié)議分層,域控制器收到TCP數(shù)據(jù)后,需要將數(shù)據(jù)分配給DoIP協(xié)議棧處理,再分配給UDS協(xié)議棧處理,每個(gè)層級(jí)都需要給相應(yīng)的ACK,如圖2所示,DoIP數(shù)據(jù)傳輸時(shí)域控制器需要響應(yīng)DoIP 0x8002報(bào)文(使用簡(jiǎn)化版DoIP時(shí)不需要),在UDS層收到診斷請(qǐng)求后,需要回復(fù)肯定響應(yīng),Tester才能繼續(xù)發(fā)送診斷數(shù)據(jù)。
圖2 數(shù)據(jù)傳輸分層
基于以上兩點(diǎn),DoIP+UDS的方案受到報(bào)頭長(zhǎng)度、協(xié)議分配處理、協(xié)議響應(yīng)影響數(shù)據(jù)傳輸效率,無(wú)法有效利用以太網(wǎng)總線帶寬。
在軟件定義汽車(chē)的時(shí)代,越來(lái)越多的OEM選擇基于SOA架構(gòu)開(kāi)發(fā)軟件。SOA是從遵循服務(wù)導(dǎo)向原則的可重用服務(wù)中構(gòu)建復(fù)雜軟件系統(tǒng)的方法[4],即面向服務(wù)的架構(gòu);目前在汽車(chē)行業(yè)實(shí)現(xiàn)SOA架構(gòu)的主要有SOME/IP與DDS兩種協(xié)議;軟件更新可以在SOA架構(gòu)下采取新的方案;已有OEM使用一種實(shí)現(xiàn)了SOA架構(gòu)的協(xié)議與一種文件傳輸協(xié)議,來(lái)實(shí)現(xiàn)域控制器的軟件升級(jí)。以下簡(jiǎn)稱(chēng)“SOA協(xié)議”和“文件傳輸協(xié)議”。
主要的流程如圖3所示,由主節(jié)點(diǎn)來(lái)發(fā)起升級(jí)任務(wù),此流程主要在車(chē)內(nèi)進(jìn)行。主節(jié)點(diǎn)首先通過(guò)SOA協(xié)議給從節(jié)點(diǎn)建立升級(jí)任務(wù),再將升級(jí)包通過(guò)文件傳輸協(xié)議發(fā)送給從節(jié)點(diǎn),同時(shí)通過(guò)SOA協(xié)議控制升級(jí)流程;文件傳輸協(xié)議基于可靠TCP傳輸協(xié)議,在傳輸數(shù)據(jù)過(guò)程中,利用TCP傳輸數(shù)據(jù)的可靠性與速度,無(wú)其他上層協(xié)議的報(bào)頭占用,無(wú)上層協(xié)議的轉(zhuǎn)換,可以實(shí)現(xiàn)升級(jí)包的穩(wěn)定、可靠、快速傳輸,并且流程簡(jiǎn)單。相比使用診斷服務(wù)實(shí)現(xiàn)升級(jí),此流程簡(jiǎn)潔高效,能快速實(shí)現(xiàn)升級(jí)軟件的目的。
圖3 基于SOA協(xié)議升級(jí)流程簡(jiǎn)介
基于SOA與文件傳輸協(xié)議的域控制器升級(jí)測(cè)試,主要分為主節(jié)點(diǎn)測(cè)試與從節(jié)點(diǎn)測(cè)試。針對(duì)從節(jié)點(diǎn)升級(jí)測(cè)試,主要分為以下幾個(gè)部分:①正向流程測(cè)試;②狀態(tài)跳轉(zhuǎn)測(cè)試;③故障碼測(cè)試;④場(chǎng)景測(cè)試。測(cè)試內(nèi)容如表1所示。
表1 從節(jié)點(diǎn)測(cè)試用例分類(lèi)
針對(duì)主節(jié)點(diǎn)升級(jí)測(cè)試,主要分為以下幾部分:①主節(jié)點(diǎn)自升級(jí)測(cè)試;②流程控制測(cè)試;③故障處理測(cè)試;④場(chǎng)景測(cè)試。測(cè)試內(nèi)容如表2所示。
表2 主節(jié)點(diǎn)用例測(cè)試分類(lèi)
使用Vector的CANoe+VN56xx來(lái)開(kāi)發(fā)測(cè)試用例與執(zhí)行測(cè)試,加上基本外設(shè),如程控電源等,可以快速搭建好測(cè)試環(huán)境,如圖4所示。在自動(dòng)化測(cè)試中,使用CANoe仿真主節(jié)點(diǎn),主要實(shí)現(xiàn)的是SOA協(xié)議與文件傳輸協(xié)議兩個(gè)模塊功能:①仿真CANoe作為主節(jié)點(diǎn),發(fā)送SOA協(xié)議請(qǐng)求給DUT,來(lái)控制升級(jí)流程;②仿真CANoe作為文件傳輸協(xié)議Server,收到DUT的請(qǐng)求后,將升級(jí)包發(fā)送給DUT。測(cè)試腳本框圖如圖5所示。
圖4 測(cè)試環(huán)境
圖5 測(cè)試腳本框圖
CANoe仿真主節(jié)點(diǎn)給從節(jié)點(diǎn)建立升級(jí)任務(wù)后,從節(jié)點(diǎn)請(qǐng)求升級(jí)包路徑,仿真主節(jié)點(diǎn)響應(yīng)升級(jí)包路徑,從節(jié)點(diǎn)使用文件傳輸協(xié)議獲取升級(jí)包。仿真主節(jié)點(diǎn)使用文件傳輸協(xié)議發(fā)送升級(jí)包,在傳輸過(guò)程中可以使用SOA協(xié)議周期讀取傳輸進(jìn)度,等待傳輸完成后,仿真主節(jié)點(diǎn)發(fā)送安裝請(qǐng)求,在安裝過(guò)程中周期讀取安裝進(jìn)度。圖6是傳輸升級(jí)文件階段的測(cè)試報(bào)告,從報(bào)告中可以查看具體的升級(jí)流程,并能查看文件傳輸進(jìn)度,圖7是測(cè)試數(shù)據(jù)的示例。文件傳輸完成后,則通過(guò)SOA協(xié)議控制安裝升級(jí)包,如圖8所示。通過(guò)測(cè)試腳本,將升級(jí)流程簡(jiǎn)化為報(bào)告,幫助測(cè)試人員將精力從大量的數(shù)據(jù)中抽出,集中在測(cè)試流程的分析上。
圖6 建立任務(wù)與傳輸過(guò)程測(cè)試報(bào)告
圖7 一種“文件傳輸協(xié)議”傳輸數(shù)據(jù)
圖8 安裝升級(jí)包測(cè)試報(bào)告
軟件帶動(dòng)著汽車(chē)技術(shù)的革新,引領(lǐng)汽車(chē)產(chǎn)品差異化發(fā)展潮流,正逐漸成為汽車(chē)信息化、智能化發(fā)展的基礎(chǔ)和核心[5]。同時(shí),越來(lái)越復(fù)雜的軟件對(duì)軟件開(kāi)發(fā)、測(cè)試都帶來(lái)巨大的挑戰(zhàn),安全、可靠、高效的軟件更新是軟件持續(xù)優(yōu)化迭代的重要保障。在汽車(chē)軟件研發(fā)階段中,軟件更新功能可靠性與穩(wěn)定性,需要通過(guò)設(shè)計(jì)測(cè)試用例并通過(guò)測(cè)試實(shí)施,確保軟件更新功能滿(mǎn)足需求。本文介紹基于SOA與文件傳輸協(xié)議的域控制器升級(jí)測(cè)試方案,其在汽車(chē)電子領(lǐng)域已廣為接受并采用。