今日跟大家分享參加野火【瑞薩RA MCU創意氛圍賽】選手的項目——基于CAN總線的UDS診斷Bootloader升級MCU工具。
一個MCU固件升級工具,基于瑞薩RA4M2的CAN總線通信接口,UDS協議實現程序升級,可以滿足產品迭代、修復問題、優化性能等多方面的需求。實現操作,將升級包放到sd中,即可實現多個MCU自動化升級。更多具體操作一起看看下面的講解!
前言
UDS診斷協議(ISO14229),是一項國際標準,為汽車電子系統中的診斷通信定義了統一的協議和服務。它規定了與診斷相關的服務需求,并沒有設計通信機制。ISO14229僅對應用層和會話層做出了定義。UDS包含了ISO14229下屬的七個子協議,其中ISO14229-2是在會話層,其他6個子協議在應用層。這讓我想到大學學習計算機網絡知識中OSI七層網絡模型。
OSI模型

如果MCU要實現UDS功能,還需要建立傳輸層和網絡層,小昭使用的是ISO15765來實現這兩層功能,剩下就是數據鏈路層和物理層,這兩層屬于底層,MCU已經幫我們實現,做些簡單配置就可以了。
底層功能配置
① CAN總線配置
canID接收配置、中斷函數請點擊文末閱讀原文參考文章:

② 定時器配置
OSI網絡需要獲取毫秒系統時間,判斷數據傳輸是否超時。

③ SD卡配置
后面會介紹,升級文件放在SD卡中。
具體可以看
Renesa 瑞薩 RA4M2 移植文件系統FAT32
https://blog.csdn.net/weixin_43746325/article/details/130451569
SD卡DMA功能

網絡層
ISO15657協議,它是為上層應用做服務,假設上層應用下發了256個字節給到網絡層,要是物理層實現就頭很大了,大家都知道,在標準CAN中,一次最多只能傳八個字節數據。所以就有網絡層的出現,15675實現將上層數據進行拆包,八個八個字節數據給到物理層,相反,如果物理層接收到數據,然后將一幀一幀數據丟給網絡層,網絡層會找到頭數據和尾數據,將一幀幀數據進行打包給到應用層。這就是網絡層,ISO15765的作用,實現數據拆包和打包的作用。
保持會話,TesterPresent(0x3E)服務,該 服 務 用 于 將 一 個 或 多 個 服 務 器 保 存 在 defaultSession 之 外 的 診 斷 會 話 中 。
項目測試


未完待續
審核編輯:湯梓紅
-
mcu
+關注
關注
147文章
18924瀏覽量
397979 -
CAN總線
+關注
關注
145文章
2043瀏覽量
135212 -
接口
+關注
關注
33文章
9519瀏覽量
157014 -
計算機
+關注
關注
19文章
7806瀏覽量
93188 -
bootloader
+關注
關注
2文章
244瀏覽量
48022
發布評論請先 登錄
基于CAN總線的UDS診斷bootloader升級MCU工具
TSMaster 的 CAN UDS 診斷操作指南(上)
TSMaster 的 CAN UDS 診斷操作指南(下)
誰能幫我解答下CAN總線中的UDS診斷?
基于CAN總線的Bootloader程序源碼下載
UDS診斷命令備忘錄
mpc577XX通過uart和周立功CAN升級app工具和bootloader程序
【魯班貓創意氛圍賽】低成本便攜全自動化ECU診斷升級和測試工具
【野火】瑞薩RA MCU創意氛圍賽+ 基于CAN總線的UDS診斷升級MCU /bootloader/UDS診斷/14229/15765
《CAN(FD)總線十萬個為什么》之UDS診斷(上)
《CAN(FD)總線十萬個為什么》之UDS診斷(下)
基于CAN總線的UDS診斷Bootloader升級MCU工具
評論