【摘 要】軟件定義顧名思義即通過(guò)軟件的不斷更新迭代使產(chǎn)品呈現(xiàn)出不同的功能狀態(tài),在OTA更新的方式中,ECU軟件更新功能也需要服務(wù)化,文章重點(diǎn)介紹軟件更新的服務(wù)化設(shè)計(jì)方法,可供后續(xù)技術(shù)實(shí)施參考。
【關(guān)鍵詞】軟件更新;服務(wù)接口;車輛診斷
中圖分類號(hào):U463.6 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1003-8639( 2024 )09-0044-03
Analysis of Service Application of Software Update Technology Based on ASAM Standards
WANG Bin1,CHEN Zilin2,ZHANG Longgang2,WANG Yuanbo2
(1.Dechuang Weilai Automotive Technology Co.,Ltd.,Xi′an 713700,China;2.Shaanxi Heavy-duty Automobile Co.,Ltd.,Xi′an 710200,China)
【Abstract】Software definition,as the name implies,that is,through the continuous updating of the software iteration so that the product presents a different functionality of the state,in the way of OTA update,ECU software update function also needs to be serviced,this paper focuses on the servicing design method of software update,which can be used as a reference for subsequent technology implementation.
【Key words】software update;service interface
1 技術(shù)介紹
SOVD全稱為Service-Oriented Vehicle Diagnostics,即以服務(wù)為導(dǎo)向的車輛診斷系統(tǒng)。在傳統(tǒng)更新中,本地診斷儀控制更新過(guò)程,車輛只需執(zhí)行既定的步驟便可完成軟件更新;而SOVD系統(tǒng)中采用調(diào)取API接口將控制權(quán)交給車輛,結(jié)合聯(lián)網(wǎng)車輛的OTA功能來(lái)實(shí)現(xiàn)軟件更新。
SOVD API接口支持兩類程序更新方法及相關(guān)步驟,以支持不同的軟件更新場(chǎng)景。
1.1 逐步更新軟件
通過(guò)該方法診斷儀可以控制安裝哪些更新,以及何時(shí)準(zhǔn)備和執(zhí)行更新,步驟如下。
1)獲取適用的更新。車輛向本地診斷儀提供適用的更新;診斷儀選擇安全的更新;在執(zhí)行命令時(shí),可從OTA后端查詢適用的更新,或由車輛提供OTA后端之前推送給車輛的更新列表。
2)準(zhǔn)備更新。診斷儀選擇的更新將通過(guò)從OTA后臺(tái)下載、驗(yàn)證其對(duì)車輛的適用性、將其安裝到B存儲(chǔ)器等方式準(zhǔn)備安裝;完成這一步驟后,更新即可安裝。
3)執(zhí)行更新。準(zhǔn)備好的更新包被安裝和激活。
1.2 自動(dòng)更新軟件
通過(guò)該方法ECU控制診斷儀選擇更新包的整個(gè)更新過(guò)程。在該更新方式中,ECU負(fù)責(zé)完成下載更新包、安裝和激活更新軟件包。SOVD API接口中定義了特殊的自主更新包標(biāo)識(shí)符,自主更新包用于不需要診斷儀選擇更新包的情況。
2 軟件更新接口
2.1 檢索所有更新列表
該API接口包含以下幾方面。
1)方法:GET/updates。
2)方法說(shuō)明:該方法返回實(shí)體的可用更新。
3)路徑參數(shù):該方法不支持該項(xiàng)參數(shù)。
4)查詢參數(shù):讀取實(shí)體提供的所有更新列表,見(jiàn)表1。
5)請(qǐng)求標(biāo)頭:該方法不使用該項(xiàng)參數(shù)。
6)響應(yīng)狀態(tài)代碼:讀取響應(yīng)狀態(tài)代碼200,請(qǐng)求成功。
7)響應(yīng)數(shù)據(jù)結(jié)構(gòu):屬性為項(xiàng)目,類型為字符串[],為更新軟件包標(biāo)識(shí)符。
2.2 獲取更新詳情
該API接口包含以下幾方面。
1)方法:GET/updates/{update-package-id}。
2)方法說(shuō)明:該方法為返回特定更新包的詳細(xì)信息。
3)路徑參數(shù):參數(shù)名稱update-package-id,類型為字符串,為更新包的標(biāo)識(shí)符。
4)查詢參數(shù):獲取更新的詳細(xì)信息(表2)。
5)請(qǐng)求標(biāo)頭:該方法不使用該項(xiàng)參數(shù)。
6)響應(yīng)狀態(tài)代碼:獲取更新詳情,狀態(tài)代碼200,請(qǐng)求成功。
7)響應(yīng)結(jié)構(gòu):獲取更新詳情的信息,見(jiàn)表3。
2.3 自動(dòng)安全更新
該API接口包含以下幾方面。
1)方法:PUT/updates/{update-package-id}/automated。
2)方法說(shuō)明:該方法可啟動(dòng)更新包的自動(dòng)安裝。在這種情況下,ECU和OTA平臺(tái)可完全控制更新過(guò)程,并決定何時(shí)采取哪些行動(dòng)。
3)路徑參數(shù):參數(shù)名稱update-package-id,類型為字符串,為更新包的標(biāo)識(shí)符。
4)查詢參數(shù):該方法不支持該項(xiàng)參數(shù)。
5)請(qǐng)求標(biāo)頭:該方法不使用該項(xiàng)參數(shù)。
6)響應(yīng)標(biāo)頭:響應(yīng)包括以下標(biāo)頭,用于重定向診斷儀的請(qǐng)求狀態(tài)。
位置:{base_uri}/updates/{update-package-id}/status。
7)響應(yīng)狀態(tài)代碼:自動(dòng)安裝更新響應(yīng)狀態(tài)代碼見(jiàn)表4。
2.4 準(zhǔn)備安裝更新
該API接口包含以下幾方面。
1)方法:PUT/updates/{update-package-id}/prepare。
2)方法說(shuō)明:該方法為準(zhǔn)備安裝更新包。
作為該步驟的一部分,將執(zhí)行以下任務(wù):驗(yàn)證更新包是否仍可安裝;從OTA后臺(tái)下載更新包;驗(yàn)證更新包的完整性;應(yīng)用增量;在B內(nèi)存中安裝更新。
安裝成tPefiZC6ORIALGFNk87MDiOgODONKzEwYVZoHMldhBg=功后,ECU會(huì)自動(dòng)刪除更新包。
3)路徑參數(shù):參數(shù)名稱update-package-id,類型為字符串,為更新包的標(biāo)識(shí)符。
4)查詢參數(shù):該方法不支持該項(xiàng)參數(shù)。
5)請(qǐng)求標(biāo)頭:該方法不使用該項(xiàng)參數(shù)。
6)響應(yīng)標(biāo)頭:響應(yīng)包括位置標(biāo)頭,用于重定向診斷儀的請(qǐng)求狀態(tài)。
位置:{base_uri}/updates/{update-package-id}/status。
7)響應(yīng)狀態(tài)代碼:準(zhǔn)備安裝更新響應(yīng)狀態(tài)代碼見(jiàn)表5。
2.5 執(zhí)行更新安裝
該API接口包含以下幾方面。
1)方法:PUT/updates/{update-package-id}/execute
2)方法說(shuō)明:該方法啟動(dòng)更新包的安裝和激活。
作為該步驟的一部分,將執(zhí)行以下任務(wù):驗(yàn)證更新包是否仍可安裝;在所有ECU上安裝更新;執(zhí)行特定的更新后操作;激活更新;出現(xiàn)錯(cuò)誤時(shí)回滾更新。
3)路徑參數(shù):參數(shù)名稱update-package-id,類型為字符串,為更新包的標(biāo)識(shí)符。
4)查詢參數(shù):該方法不支持該項(xiàng)參數(shù)。
5)請(qǐng)求標(biāo)頭:該方法不使用該項(xiàng)參數(shù)。
6)響應(yīng)標(biāo)頭:響應(yīng)包括位置標(biāo)頭,用于重定向診斷儀的請(qǐng)求狀態(tài)。
位置:{base_uri}/updates/{update-package-id}/status。
7)響應(yīng)狀態(tài)代碼:執(zhí)行更新安裝響應(yīng)狀態(tài)代碼見(jiàn)表6。
2.6 獲取更新?tīng)顟B(tài)
該API接口包含以下幾方面。
1)方法:GET/updates/{update-package-id}/status。
2)方法說(shuō)明:該方法返回更新的準(zhǔn)備或執(zhí)行狀態(tài)。
3)路徑參數(shù):參數(shù)名稱update-package-id,類型為字符串,是用于跟蹤更新準(zhǔn)備或執(zhí)行情況的標(biāo)識(shí)符。
4)查詢參數(shù):該方法不支持該項(xiàng)參數(shù)。
5)請(qǐng)求標(biāo)頭:該方法不使用該項(xiàng)參數(shù)。
6)響應(yīng)狀態(tài)代碼:執(zhí)行更新?tīng)顟B(tài),狀態(tài)代碼為200,請(qǐng)求成功。
7)響應(yīng)結(jié)構(gòu):獲取更新?tīng)顟B(tài)的詳細(xì)信息見(jiàn)表7~表10。
3 結(jié)束語(yǔ)
軟件更新功能服務(wù)化設(shè)計(jì)主要應(yīng)用于軟件定義汽車的設(shè)計(jì)框架中,本文圍繞軟件更新展開(kāi)了常用指令的服務(wù)接口介紹,對(duì)于軟件更新等場(chǎng)景的服務(wù)化接口還需要結(jié)合實(shí)際功能設(shè)計(jì)要求進(jìn)一步深入研究和豐富,共同推動(dòng)先進(jìn)技術(shù)的快速落地。
(編輯 楊凱麟)
作者簡(jiǎn)介王彬(1987—),男,博士,工程師,主要主導(dǎo)公司各車型的整體開(kāi)發(fā),以及電器系統(tǒng)、整車系統(tǒng)的開(kāi)發(fā)、設(shè)計(jì)、管理工作。