新聞中心

        EEPW首頁 > 設計應用 > 基于UDS的CAN節點軟件升級設計

        基于UDS的CAN節點軟件升級設計

        作者:馬建輝 慕永云 侯冬冬 胡代榮 朱亮 時間:2019-03-29 來源:電子產品世界 收藏

        Design of CAN node software ypdate based on UDS

        本文引用地址:http://www.104case.com/article/201903/399039.htm

        馬建輝 123 ,慕永云 123 ,侯冬冬 123 ,胡代榮 123 ,朱亮 1
        (1.齊魯工業大學(山東省科學院),山東 濟南,250353;
        2.山東省科學院自動化研究所,山東 濟南,250014;
        3.山東省汽車電子技術重點實驗室,山東 濟南,250014)

               摘要:汽車過程中大量頻繁的CAN通信造成網絡負載率升高,可能導致大部分節點功能降級或者失敗,時間過長也會給其它節點的功能安全帶來隱患。基于協議設計了一種,在軟件升級過程中通過特定的UDS服務禁止CAN網絡節點的應用報文和網絡管理報文發送,升級完成后恢復CAN網絡節點的應用報文和網絡管理報文發送,保證了軟件升級過程中的CAN網絡帶寬。同時結合節點CAN報文接收服務程序設計、緩沖區設置以及對參數的調整,降低了程序升級時間。
               關鍵詞:;軟件升級;

          0 引言

               汽車電子零部件產品的生命周期一般多達10年以上,使用過程中可能會暴露一些產品部署初期未能測試出來的bug,導致產品存在被修復的需要,此外,新技術的出現也可能導致產品的功能升級。由于汽車電子零部件安裝空間受限,通過拆卸并更換新的電子零部件的方式進行功能升級或者bug修復,不僅操作復雜,而且成本高昂。因此,在實施了CAN總線系統的汽車中,一般是設計一種,通過CAN總線進行汽車電子零部件功能的升級,部署實施新技術,或修復產品bug。
          在汽車CAN網絡中進行程序升級時,其它的應用報文和網絡管理報文會占用大量的CAN網絡帶寬資源,延緩整個升級過程,而且,程序升級過程中大量頻繁的CAN總線通信會造成大部分節點功能的降級,因此,有必要控制并盡可能降低軟件升級時間。
          通過CAN總線升級CAN節點程序的方法 [1] ,提出在進行節點程序更新之前,禁止CAN網絡節點報文發送和故障碼設置,避免了程序升級過程中網絡負載率過高的問題,但沒有針對性地提出降低升級時間的解決方案。
          本文設計了一種基于UDS協議的Booloader,在下載應用程序的Flash數據之前,通過UDS服務禁止CAN網絡節點報文發送和故障碼設置,通過設定多幀接收緩沖區大小以及中的STmin和BS參數,最大程度上降低了升級時間。
          1 基于CAN的UDS協議

        1554700425247784.png

               定義了UDS [2] (表1 UDS報文格式services,統一診斷服務),側重于描述診斷服務部分,是全球通用的汽車診斷技術標準。ISO 15765-3以定義的服務為基礎,規范了基于CAN總線的診斷服務 [3] (),既給出了底層軟硬件要求,包含網絡定時、應用層定時等詳細內容,又給出了汽車CAN節點程序升級和通信的主體流程。
          基于客戶端-服務器的請求-響應式系統架構 [4] ,在汽車CAN網絡中,診斷儀為發起請求的客戶端,CAN節點為返回響應的服務器,UDS報文格式如表1所示。
          2 Bootloader設計

               2.1 升級過程設計

               在汽車CAN網絡中通過Bootloader進行CAN節點的軟件升級,其它節點的應用報文和網絡管理報文會占用大量的網絡帶寬,為了給升級過程創造一個良好的網絡環境,將軟件升級步驟分成編程前-編程-編程后三個階段,如圖2所示。
          在“編程前”階段,首先進入擴展會話模式,然后通過功能尋址的UDS服務禁止各個節點的應用報文發送、網絡管理報文發送,同時,由于很多節點收不到其它節點的報文后會記錄DTC故障,因此,首先禁止各個節點的DTC檢測,再禁止各個節點的報文發送 [5] 。
          在“編程”階段,首先進入編程會話模式,然后進行安全訪問,下載應用程序對應的指令數據。
          通過執行被復制到指定RAM空間中的Flash驅動程序,擦除并燒寫應用程序Flash數據。應用程序數據下載并燒寫完成后,對數據進行校驗,校驗通過后,在數據Flash中存儲“應用程序有效標志”。
          在“編程后”階段,首先進入擴展會話模式,然后通過功能尋址的UDS服務恢復各個節點的應用報文發送、網絡管理報文發送,然后恢復各個節點的DTC檢測。
          2.2 UDS服務

               軟件升級使用的UDS服務如表2所示。其中,“編程前”和“編程后”階段使用到的診斷服務包括“診斷會話控制”、“通信控制”、“控制DTC設置”,“編程”階段使用到的診斷服務有“診斷會話控制”、“安全訪問”、“請求下載”、“數據傳輸”、“請求退出傳輸”、“ECU復位”。

        1554700454305125.png

        1554700529252579.png

          2.3 指令數據下載

             “編程”階段的“下載應用程序”采用“請求下載”、“數據傳輸”和“請求退出傳輸”服務下載應用程序的指令數據,流程如圖3所示。
          首先通過“請求下載”服務設定“數據傳輸”服務的多幀報文數據長度,然后以多幀通信方式實現“數據傳輸”服務,完成“請求下載”服務指定長度的多幀報文數據的傳輸后,通過“請求退出傳輸”服務退出數據傳輸。
          2.4 軟件升級時間

             “編程前”階段、“編程后”階段以及“編程”階段的進入擴展會話模式、禁止DTC檢測、禁止應用報文和網絡管理報文發送、進入編程會話模式、安全訪問、數據校驗、復位、恢復應用報文和網絡管理報文發送、恢復DTC檢測等UDS服務均采用單幀通信,執行時間固定,升級時間主要取決于“編程”階段的“下載應用程序”。
          “數據傳輸”服務采用多幀通信方式,通信速度由和BS的設置決定,此外,“請求下載”服務設定的多幀報文長度不同,升級時間也不同。
          3 軟件升級測試

               筆者為某車廠開發了一款帶有軟件升級功能的車身控制器,MCU為恩智浦中端16位單片機,升級文件采用S19格式,文件大小為左右,采用canoe設計了上位機升級軟件,選擇升級文件后進行一鍵式下載,自動完成上述“編程前”-“編程”-“編程后”三個步驟。軟件升級數據流如圖4所示。
          、BS、多幀報文長度的設置取決于報文接收緩沖區容量和接收端數據幀處理速度,為了提高接收端數據幀處理速度,將CAN報文接收中斷服務程序放入RAM中執行。同時考慮到功能安全、MCU RAM容量和運行主頻,將多幀報文長度設定為512字節,STmin設置為1 ms,BS設置為0,在這種設置下,軟件升級時間可以控制在30秒以內,改善了開發人員和4S店服務人員現場升級的體驗。
          4 結論

               本文對在CAN總線上通過UDS服務進行節點軟件升級的過程進行了研究,在下載程序指令數據前,禁止CAN網絡中所有節點的報文發送,降低了CAN節點的應用報文和網絡管理報文對CAN總線帶寬資源的消耗,避免了因網絡負載率過高導致升級失敗的問題;同時,根據對UDS數據傳輸服務的分析,設置合理的多幀報文長度和STmin參數,在保證功能安全的前提下,盡可能降低了軟件升級時間。

               參考文獻:
        [1] 比亞迪股份有限公司.車輛程序更新系統及車輛程序更新方法:中國, 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的整車診斷系統設計方法[J].汽車電器,2017,(4):14-17.
        [5] 李娟娟 劉孔祥 李濟林.智能前照燈的CAN刷新軟件的設計[J].汽車電器,2012,(9):1-4.

        作者簡介
        馬建輝(1983),男,碩士,工程師,主要研究方向:汽車電子、嵌入式。

        本文來源于科技期刊《電子產品世界》2019年第4期第66頁,歡迎您寫論文時引用,并注明出處



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 海兴县| 宾川县| 廊坊市| 阿拉善盟| 渭源县| 华蓥市| 常山县| 贺兰县| 来安县| 阿拉善盟| 沙坪坝区| 旅游| 阿巴嘎旗| 鄱阳县| 琼海市| 共和县| 突泉县| 将乐县| 福鼎市| 永福县| 忻城县| 平武县| 德江县| 怀集县| 济源市| 凤台县| 花莲县| 元谋县| 辰溪县| 微博| 苗栗市| 鹰潭市| 巴林左旗| 千阳县| 青州市| 锦屏县| 根河市| 顺昌县| 新化县| 巴中市| 青海省|