基于UDS的CAN節(jié)點(diǎn)軟件升級(jí)設(shè)計(jì)
Design of CAN node software ypdate based on UDS
本文引用地址:http://butianyuan.cn/article/201903/399039.htm馬建輝 123 ,慕永云 123 ,侯冬冬 123 ,胡代榮 123 ,朱亮 1
(1.齊魯工業(yè)大學(xué)(山東省科學(xué)院),山東 濟(jì)南,250353;
2.山東省科學(xué)院自動(dòng)化研究所,山東 濟(jì)南,250014;
3.山東省汽車(chē)電子技術(shù)重點(diǎn)實(shí)驗(yàn)室,山東 濟(jì)南,250014)
摘要:汽車(chē)CAN節(jié)點(diǎn)軟件升級(jí)過(guò)程中大量頻繁的CAN通信造成網(wǎng)絡(luò)負(fù)載率升高,可能導(dǎo)致大部分節(jié)點(diǎn)功能降級(jí)或者軟件升級(jí)失敗,軟件升級(jí)時(shí)間過(guò)長(zhǎng)也會(huì)給其它節(jié)點(diǎn)的功能安全帶來(lái)隱患?;?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/UDS on CAN">UDS on CAN協(xié)議設(shè)計(jì)了一種Bootloader,在軟件升級(jí)過(guò)程中通過(guò)特定的UDS服務(wù)禁止CAN網(wǎng)絡(luò)節(jié)點(diǎn)的應(yīng)用報(bào)文和網(wǎng)絡(luò)管理報(bào)文發(fā)送,升級(jí)完成后恢復(fù)CAN網(wǎng)絡(luò)節(jié)點(diǎn)的應(yīng)用報(bào)文和網(wǎng)絡(luò)管理報(bào)文發(fā)送,保證了軟件升級(jí)過(guò)程中的CAN網(wǎng)絡(luò)帶寬。同時(shí)結(jié)合節(jié)點(diǎn)CAN報(bào)文接收服務(wù)程序設(shè)計(jì)、緩沖區(qū)設(shè)置以及對(duì)多幀通信參數(shù)的調(diào)整,降低了程序升級(jí)時(shí)間。
關(guān)鍵詞:CAN節(jié)點(diǎn);軟件升級(jí);UDS on CAN;Bootloader;多幀通信
0 引言
汽車(chē)電子零部件產(chǎn)品的生命周期一般多達(dá)10年以上,使用過(guò)程中可能會(huì)暴露一些產(chǎn)品部署初期未能測(cè)試出來(lái)的bug,導(dǎo)致產(chǎn)品存在被修復(fù)的需要,此外,新技術(shù)的出現(xiàn)也可能導(dǎo)致產(chǎn)品的功能升級(jí)。由于汽車(chē)電子零部件安裝空間受限,通過(guò)拆卸并更換新的電子零部件的方式進(jìn)行功能升級(jí)或者bug修復(fù),不僅操作復(fù)雜,而且成本高昂。因此,在實(shí)施了CAN總線(xiàn)系統(tǒng)的汽車(chē)中,一般是設(shè)計(jì)一種Bootloader,通過(guò)CAN總線(xiàn)進(jìn)行汽車(chē)電子零部件功能的升級(jí),部署實(shí)施新技術(shù),或修復(fù)產(chǎn)品bug。
在汽車(chē)CAN網(wǎng)絡(luò)中進(jìn)行程序升級(jí)時(shí),其它CAN節(jié)點(diǎn)的應(yīng)用報(bào)文和網(wǎng)絡(luò)管理報(bào)文會(huì)占用大量的CAN網(wǎng)絡(luò)帶寬資源,延緩整個(gè)升級(jí)過(guò)程,而且,程序升級(jí)過(guò)程中大量頻繁的CAN總線(xiàn)通信會(huì)造成大部分節(jié)點(diǎn)功能的降級(jí),因此,有必要控制并盡可能降低軟件升級(jí)時(shí)間。
通過(guò)CAN總線(xiàn)升級(jí)CAN節(jié)點(diǎn)程序的方法 [1] ,提出在進(jìn)行節(jié)點(diǎn)程序更新之前,禁止CAN網(wǎng)絡(luò)節(jié)點(diǎn)報(bào)文發(fā)送和故障碼設(shè)置,避免了程序升級(jí)過(guò)程中網(wǎng)絡(luò)負(fù)載率過(guò)高的問(wèn)題,但沒(méi)有針對(duì)性地提出降低升級(jí)時(shí)間的解決方案。
本文設(shè)計(jì)了一種基于UDS協(xié)議的Booloader,在下載應(yīng)用程序的Flash數(shù)據(jù)之前,通過(guò)UDS服務(wù)禁止CAN網(wǎng)絡(luò)節(jié)點(diǎn)報(bào)文發(fā)送和故障碼設(shè)置,通過(guò)設(shè)定多幀接收緩沖區(qū)大小以及多幀通信中的STmin和BS參數(shù),最大程度上降低了升級(jí)時(shí)間。
1 基于CAN的UDS協(xié)議
定義了UDS [2] (表1 UDS報(bào)文格式services,統(tǒng)一診斷服務(wù)),側(cè)重于描述診斷服務(wù)部分,是全球通用的汽車(chē)診斷技術(shù)標(biāo)準(zhǔn)。ISO 15765-3以定義的服務(wù)為基礎(chǔ),規(guī)范了基于CAN總線(xiàn)的診斷服務(wù) [3] (UDS on CAN),既給出了底層軟硬件要求,包含網(wǎng)絡(luò)定時(shí)、應(yīng)用層定時(shí)等詳細(xì)內(nèi)容,又給出了汽車(chē)CAN節(jié)點(diǎn)程序升級(jí)和通信的主體流程。
基于客戶(hù)端-服務(wù)器的請(qǐng)求-響應(yīng)式系統(tǒng)架構(gòu) [4] ,在汽車(chē)CAN網(wǎng)絡(luò)中,診斷儀為發(fā)起請(qǐng)求的客戶(hù)端,CAN節(jié)點(diǎn)為返回響應(yīng)的服務(wù)器,UDS報(bào)文格式如表1所示。
2 Bootloader設(shè)計(jì)
2.1 升級(jí)過(guò)程設(shè)計(jì)
在汽車(chē)CAN網(wǎng)絡(luò)中通過(guò)Bootloader進(jìn)行CAN節(jié)點(diǎn)的軟件升級(jí),其它節(jié)點(diǎn)的應(yīng)用報(bào)文和網(wǎng)絡(luò)管理報(bào)文會(huì)占用大量的網(wǎng)絡(luò)帶寬,為了給升級(jí)過(guò)程創(chuàng)造一個(gè)良好的網(wǎng)絡(luò)環(huán)境,將軟件升級(jí)步驟分成編程前-編程-編程后三個(gè)階段,如圖2所示。
在“編程前”階段,首先進(jìn)入擴(kuò)展會(huì)話(huà)模式,然后通過(guò)功能尋址的UDS服務(wù)禁止各個(gè)節(jié)點(diǎn)的應(yīng)用報(bào)文發(fā)送、網(wǎng)絡(luò)管理報(bào)文發(fā)送,同時(shí),由于很多節(jié)點(diǎn)收不到其它節(jié)點(diǎn)的報(bào)文后會(huì)記錄DTC故障,因此,首先禁止各個(gè)節(jié)點(diǎn)的DTC檢測(cè),再禁止各個(gè)節(jié)點(diǎn)的報(bào)文發(fā)送 [5] 。
在“編程”階段,首先進(jìn)入編程會(huì)話(huà)模式,然后進(jìn)行安全訪問(wèn),下載應(yīng)用程序?qū)?yīng)的指令數(shù)據(jù)。
通過(guò)執(zhí)行被復(fù)制到指定RAM空間中的Flash驅(qū)動(dòng)程序,擦除并燒寫(xiě)應(yīng)用程序Flash數(shù)據(jù)。應(yīng)用程序數(shù)據(jù)下載并燒寫(xiě)完成后,對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),校驗(yàn)通過(guò)后,在數(shù)據(jù)Flash中存儲(chǔ)“應(yīng)用程序有效標(biāo)志”。
在“編程后”階段,首先進(jìn)入擴(kuò)展會(huì)話(huà)模式,然后通過(guò)功能尋址的UDS服務(wù)恢復(fù)各個(gè)節(jié)點(diǎn)的應(yīng)用報(bào)文發(fā)送、網(wǎng)絡(luò)管理報(bào)文發(fā)送,然后恢復(fù)各個(gè)節(jié)點(diǎn)的DTC檢測(cè)。
2.2 UDS服務(wù)
軟件升級(jí)使用的UDS服務(wù)如表2所示。其中,“編程前”和“編程后”階段使用到的診斷服務(wù)包括“診斷會(huì)話(huà)控制”、“通信控制”、“控制DTC設(shè)置”,“編程”階段使用到的診斷服務(wù)有“診斷會(huì)話(huà)控制”、“安全訪問(wèn)”、“請(qǐng)求下載”、“數(shù)據(jù)傳輸”、“請(qǐng)求退出傳輸”、“ECU復(fù)位”。
2.3 指令數(shù)據(jù)下載
“編程”階段的“下載應(yīng)用程序”采用“請(qǐng)求下載”、“數(shù)據(jù)傳輸”和“請(qǐng)求退出傳輸”服務(wù)下載應(yīng)用程序的指令數(shù)據(jù),流程如圖3所示。
首先通過(guò)“請(qǐng)求下載”服務(wù)設(shè)定“數(shù)據(jù)傳輸”服務(wù)的多幀報(bào)文數(shù)據(jù)長(zhǎng)度,然后以多幀通信方式實(shí)現(xiàn)“數(shù)據(jù)傳輸”服務(wù),完成“請(qǐng)求下載”服務(wù)指定長(zhǎng)度的多幀報(bào)文數(shù)據(jù)的傳輸后,通過(guò)“請(qǐng)求退出傳輸”服務(wù)退出數(shù)據(jù)傳輸。
2.4 軟件升級(jí)時(shí)間
“編程前”階段、“編程后”階段以及“編程”階段的進(jìn)入擴(kuò)展會(huì)話(huà)模式、禁止DTC檢測(cè)、禁止應(yīng)用報(bào)文和網(wǎng)絡(luò)管理報(bào)文發(fā)送、進(jìn)入編程會(huì)話(huà)模式、安全訪問(wèn)、數(shù)據(jù)校驗(yàn)、復(fù)位、恢復(fù)應(yīng)用報(bào)文和網(wǎng)絡(luò)管理報(bào)文發(fā)送、恢復(fù)DTC檢測(cè)等UDS服務(wù)均采用單幀通信,執(zhí)行時(shí)間固定,升級(jí)時(shí)間主要取決于“編程”階段的“下載應(yīng)用程序”。
“數(shù)據(jù)傳輸”服務(wù)采用多幀通信方式,通信速度由和BS的設(shè)置決定,此外,“請(qǐng)求下載”服務(wù)設(shè)定的多幀報(bào)文長(zhǎng)度不同,升級(jí)時(shí)間也不同。
3 軟件升級(jí)測(cè)試
筆者為某車(chē)廠開(kāi)發(fā)了一款帶有軟件升級(jí)功能的車(chē)身控制器,MCU為恩智浦中端16位單片機(jī),升級(jí)文件采用S19格式,文件大小為左右,采用canoe設(shè)計(jì)了上位機(jī)升級(jí)軟件,選擇升級(jí)文件后進(jìn)行一鍵式下載,自動(dòng)完成上述“編程前”-“編程”-“編程后”三個(gè)步驟。軟件升級(jí)數(shù)據(jù)流如圖4所示。
、BS、多幀報(bào)文長(zhǎng)度的設(shè)置取決于報(bào)文接收緩沖區(qū)容量和接收端數(shù)據(jù)幀處理速度,為了提高接收端數(shù)據(jù)幀處理速度,將CAN報(bào)文接收中斷服務(wù)程序放入RAM中執(zhí)行。同時(shí)考慮到功能安全、MCU RAM容量和運(yùn)行主頻,將多幀報(bào)文長(zhǎng)度設(shè)定為512字節(jié),STmin設(shè)置為1 ms,BS設(shè)置為0,在這種設(shè)置下,軟件升級(jí)時(shí)間可以控制在30秒以?xún)?nèi),改善了開(kāi)發(fā)人員和4S店服務(wù)人員現(xiàn)場(chǎng)升級(jí)的體驗(yàn)。
4 結(jié)論
本文對(duì)在CAN總線(xiàn)上通過(guò)UDS服務(wù)進(jìn)行節(jié)點(diǎn)軟件升級(jí)的過(guò)程進(jìn)行了研究,在下載程序指令數(shù)據(jù)前,禁止CAN網(wǎng)絡(luò)中所有節(jié)點(diǎn)的報(bào)文發(fā)送,降低了CAN節(jié)點(diǎn)的應(yīng)用報(bào)文和網(wǎng)絡(luò)管理報(bào)文對(duì)CAN總線(xiàn)帶寬資源的消耗,避免了因網(wǎng)絡(luò)負(fù)載率過(guò)高導(dǎo)致升級(jí)失敗的問(wèn)題;同時(shí),根據(jù)對(duì)UDS數(shù)據(jù)傳輸服務(wù)的分析,設(shè)置合理的多幀報(bào)文長(zhǎng)度和STmin參數(shù),在保證功能安全的前提下,盡可能降低了軟件升級(jí)時(shí)間。
參考文獻(xiàn):
[1] 比亞迪股份有限公司.車(chē)輛程序更新系統(tǒng)及車(chē)輛程序更新方法:中國(guó), 201510510468.X[P].2015-8-19.
[2] Road vehicles–Unified diagnostic services (UDS) –Specification and Requirement ISO14229[S].2006(E).
[3] Road vehicles-Diagnostics on Controller Area Net works( CAN )-Part 3: Implementation of unified diagnostic services (UDS on CAN) ISO15765-3[S].2004(E).
[4] 陳姿霖 宋磊鋒 張龍崗 董海.基于UDS的整車(chē)診斷系統(tǒng)設(shè)計(jì)方法[J].汽車(chē)電器,2017,(4):14-17.
[5] 李娟娟 劉孔祥 李濟(jì)林.智能前照燈的CAN刷新軟件的設(shè)計(jì)[J].汽車(chē)電器,2012,(9):1-4.
作者簡(jiǎn)介
馬建輝(1983),男,碩士,工程師,主要研究方向:汽車(chē)電子、嵌入式。
本文來(lái)源于科技期刊《電子產(chǎn)品世界》2019年第4期第66頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處
評(píng)論