濰柴動(dòng)力股份有限公司 薛雷 王喜龍 劉棟 柴廣卿 婁毅杰 杜飛嬌
本文以一款具備OTA 功能的車載終端為例,針對(duì)刷寫時(shí)間長的問題,從刷寫流程開展分析,對(duì)刷寫過程耗時(shí)分項(xiàng)統(tǒng)計(jì),分析刷寫速度的影響因素與改進(jìn)方式。經(jīng)驗(yàn)證,改進(jìn)后的設(shè)備可以有效減少刷寫時(shí)間,提高刷寫效率。
控制器刷寫是發(fā)動(dòng)機(jī)下線和后市場服務(wù)常用的功能?;贑AN 的控制器刷寫是當(dāng)前商用車控制器程序升級(jí)的主要方式[1]。隨著控制器功能的不斷增加,控制器固件程序越來越大,導(dǎo)致刷寫時(shí)間也越來越長。太長的刷寫時(shí)間,會(huì)對(duì)刷寫穩(wěn)定性、效率產(chǎn)生不良影響。特別是在OTA 技術(shù)的應(yīng)用下,減少刷寫時(shí)長是產(chǎn)品應(yīng)用亟須解決的問題。
基于UDS 協(xié)議的刷寫流程中,應(yīng)用層遵循ISO15765-3、ISO14229 協(xié)議要求,網(wǎng)絡(luò)層遵循ISO15765-2 協(xié)議要求[2]。刷寫過程核心服務(wù)有:0x10-診斷會(huì)話管理、0x27-安全訪問、0x31-例程控制、0x34-請求下載、0x36-數(shù)據(jù)傳輸、0x37-傳輸退出,具體刷寫流程如圖1 所示。
圖1 控制器刷寫流程圖Fig.1 Controller swiping flow chart
刷寫過程可分為兩個(gè)階段,第一階段主要完成控制器的狀態(tài)切換,并通過安全訪問子服務(wù)中確保只有獲得授權(quán)的用戶才能對(duì)控制器進(jìn)行刷寫,提升系統(tǒng)安全性;第二階段為刷寫的具體實(shí)現(xiàn),一般按照整區(qū)擦除,分塊寫入的方式進(jìn)行。首先,控制器按照功能分區(qū)執(zhí)行整區(qū)擦除。然后執(zhí)行下載和寫入,在此過程中,控制器校驗(yàn)下載的起始地址、地址范圍等信息,校驗(yàn)通過后啟動(dòng)傳輸數(shù)據(jù),在數(shù)據(jù)傳輸刷寫完畢后,控制器對(duì)刷寫的新數(shù)據(jù)進(jìn)行校驗(yàn),以保證數(shù)據(jù)的完整性和正確性[3]。
某款終端產(chǎn)品,在產(chǎn)品應(yīng)用中測試控制器刷寫過程,完整流程總耗時(shí)5 分56 秒。耗時(shí)分布如表1 所示。
表1 刷寫過程耗時(shí)統(tǒng)計(jì)Tab.1 Time consumption statistics of brush writing process
由表1 可見,在刷寫過程中控制器擦除和數(shù)據(jù)傳輸為主要過程。其中控制器擦除速度與刷寫流程無關(guān),主要由控制器本身所決定,在本文中不做分析。
在編號(hào)6 的數(shù)據(jù)傳輸過程中,對(duì)控制器的數(shù)據(jù)接收及寫入所需時(shí)間同樣不做分析,僅考慮其在多包傳輸過程中的流控參數(shù)。控制器支持的傳輸參數(shù)如圖2 所示。
圖2 控制器的流控參數(shù)Fig.2 Flow control parameters of controller
在數(shù)據(jù)傳輸過程中,傳輸耗時(shí)由N_As、N_Br、N_Ar、N_Cs 組成。為簡化分析,將網(wǎng)絡(luò)層傳輸過程以及應(yīng)用層的交互步驟整理為四個(gè)過程:流控幀的接收、續(xù)幀間隔、控制器應(yīng)答以及OTA 設(shè)備多包傳輸間的間隔。步驟描述如圖3 所示。
圖3 數(shù)據(jù)傳輸序列圖Fig.3 Data transmission sequence diagram
基于上述步驟的分項(xiàng)耗時(shí)統(tǒng)計(jì)數(shù)據(jù)如表2 所示。
表2 數(shù)據(jù)傳輸過程耗時(shí)明細(xì)Tab.2 Time consuming details of data transmission process
在上述步驟中,續(xù)幀傳輸為主要的數(shù)據(jù)傳輸過程,流控應(yīng)答為網(wǎng)聯(lián)傳輸層的傳輸控制,控制器應(yīng)答為應(yīng)用層應(yīng)答確認(rèn)。由于CAN2.0 協(xié)議的數(shù)據(jù)域只有8 字節(jié),所以傳輸需要較多的發(fā)送次數(shù)。為降低刷寫時(shí)長,可以從減少執(zhí)行次數(shù)和降低單次執(zhí)行時(shí)間方面分析優(yōu)化方案。
從減少執(zhí)行次數(shù)方面考慮,請求下載階段的報(bào)文交互如圖4 所示,可以看出控制器支持最大傳輸塊的長度為0xFFF 字節(jié)(4095 字節(jié)),當(dāng)前實(shí)際執(zhí)行的傳輸塊大小為0xFF 字節(jié)(255 字節(jié)),傳輸過程有效負(fù)載有提升空間。
圖4 請求下載服務(wù)控制器應(yīng)答Fig.4 Response of request to download service controller
另外,控制器中的數(shù)據(jù)分區(qū)存儲(chǔ),在數(shù)據(jù)文件中一般都存在無效的填充區(qū)數(shù)據(jù),從控制器固件本身分析,減少控制器固件中無效數(shù)據(jù),同樣可以減少執(zhí)行次數(shù),縮短刷寫時(shí)間。
從降低單次執(zhí)行方面:多包數(shù)據(jù)的發(fā)送間隔較大,主要為OTA 軟件程序調(diào)度周期的影響,該部分的耗時(shí)占比較大,存在優(yōu)化的空間。
在0x36 服務(wù)的數(shù)據(jù)傳輸過程中,增加每次多包傳輸?shù)臄?shù)據(jù)塊大小,即數(shù)據(jù)塊大小由0xFF 字節(jié)(255 字節(jié))增加為0xFFF 字節(jié)(4095 字節(jié))。
剔除控制器固件中的無效填充區(qū)域,減小需傳輸數(shù)據(jù)文件的大小。例如,當(dāng)前控制器的Data0 分區(qū)大小為2MB,范圍為0x09100000 ~0x09300000,對(duì)固件數(shù)據(jù)進(jìn)行分析,去掉無效填充區(qū)后,數(shù)據(jù)可減小為1.86MB,即只包含范圍為0x09100000 ~0x092DC3FF 的數(shù)據(jù)。
優(yōu)化程序執(zhí)行主要措施為優(yōu)化OTA 設(shè)備程序中的定時(shí)器粒度,調(diào)整中斷任務(wù)管理等。
綜合執(zhí)行以上措施后,刷寫過程時(shí)間降低到2 分48秒。優(yōu)化后的刷寫過程耗時(shí)如表3 所示。
表3 優(yōu)化后刷寫過程耗時(shí)統(tǒng)計(jì)Tab.3 Time consumption statistics of brush writing process after optimization
本文針對(duì)控制器刷寫耗時(shí),從刷寫過程詳細(xì)分析,結(jié)合控制器協(xié)議參數(shù),分析關(guān)鍵步驟的優(yōu)化方案,通過調(diào)整傳輸參數(shù)、減少填充區(qū)數(shù)據(jù)、優(yōu)化OTA 設(shè)備軟件程序三種措施,有效降低了控制器刷寫時(shí)間,提高了刷寫效率。
數(shù)字技術(shù)與應(yīng)用2023年11期