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