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