基于CAN总线的UDS诊断Bootloader升级MCU工具

描述

今日跟大家分享参加野火【瑞萨RA MCU创意氛围赛】选手的项目——基于CAN总线的UDS诊断Bootloader升级MCU工具。

一个MCU固件升级工具,基于瑞萨RA4M2的CAN总线通信接口,UDS协议实现程序升级,可以满足产品迭代、修复问题、优化性能等多方面的需求。实现操作,将升级包放到sd中,即可实现多个MCU自动化升级。更多具体操作一起看看下面的讲解!

前言

UDS诊断协议(ISO14229),是一项国际标准,为汽车电子系统中的诊断通信定义了统一的协议和服务。它规定了与诊断相关的服务需求,并没有设计通信机制。ISO14229仅对应用层和会话层做出了定义。UDS包含了ISO14229下属的七个子协议,其中ISO14229-2是在会话层,其他6个子协议在应用层。这让我想到大学学习计算机网络知识中OSI七层网络模型。

OSI模型

CAN总线

如果MCU要实现UDS功能,还需要建立传输层和网络层,小昭使用的是ISO15765来实现这两层功能,剩下就是数据链路层和物理层,这两层属于底层,MCU已经帮我们实现,做些简单配置就可以了。

底层功能配置

① CAN总线配置

canID接收配置、中断函数请点击文末阅读原文参考文章:

CAN总线

② 定时器配置

OSI网络需要获取毫秒系统时间,判断数据传输是否超时。

CAN总线

③ SD卡配置

后面会介绍,升级文件放在SD卡中。

具体可以看

Renesa 瑞萨 RA4M2 移植文件系统FAT32

https://blog.csdn.net/weixin_43746325/article/details/130451569

SD卡DMA功能

CAN总线

网络层

ISO15657协议,它是为上层应用做服务,假设上层应用下发了256个字节给到网络层,要是物理层实现就头很大了,大家都知道,在标准CAN中,一次最多只能传八个字节数据。所以就有网络层的出现,15675实现将上层数据进行拆包,八个八个字节数据给到物理层,相反,如果物理层接收到数据,然后将一帧一帧数据丢给网络层,网络层会找到头数据和尾数据,将一帧帧数据进行打包给到应用层。这就是网络层,ISO15765的作用,实现数据拆包和打包的作用。

保持会话,TesterPresent(0x3E)服务,该 服 务 用 于 将 一 个 或 多 个 服 务 器 保 存 在 defaultSession 之 外 的 诊 断 会 话 中 。

项目测试

CAN总线

CAN总线

未完待续

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分