UDS诊断协议广泛应用于汽车、重卡等领域的设备诊断和固件更新。该协议主要针对全车ECU进行标准化的数据交互。UDS应用层(ISO 14229-1)定义了6大类共26项诊断服务,覆盖了ECU开发功能调试、生产阶段的硬件检测与参数配置、以及成品阶段的故障诊断、远程软件更新等多个方面。
UDS Server/Client协议栈
UDS是汽车环境中用于对电子控制单元(ECU)进行诊断的通信协议。我们的UDS Server/Client协议栈在CAN总线上扩展并实现了UDS服务功能,它是基于ISO-TP来实现的。ISO-TP是一项国际标准协议(ISO 15765-2),定义了通过CAN总线进行传输数据的相关规范。
UDS on CAN
UDS Server/Client协议栈程序以C源代码形式提供,并依照MISRA-C:2004编码规则开发。目前它涵盖了以下UDS服务:

我们的UDS Server/Client协议栈基于ISO-TP服务,因此需要一个具有ISO-TP的底层协议栈。但无需担心,我们的UDS Server/Client协议栈可以配置在我们提供的J1939或者CANopen协议栈上,与其结合使用。如果您不需要CANopen或者J1939协议,我们也提供轻量级RawCAN协议栈,它主要实现了ISO-TP的底层以及一些必要的服务。
UDS固件更新
如今,越来越多的电子控制单元(ECU)需要借助引导加载程序在现场进行固件更新。由于引导加载程序会占用较大的Flash空间,因此通常无法使用完整的UDS栈。为此,盟通科技提供的UDS引导加载程序在设计时特别注重低内存需求,同时保证了高故障安全性。
该引导加载程序仅支持引导加载程序所必需的最基本功能。因此,我们的UDS on CAN引导加载程序仅需要32 KB的闪存空间,并且依旧符合UDS标准。该引导加载程序适用于各种16位和32位微控制器,并且可以轻松适配其他目标系统。
图:UDS bootloader实现方式示意图由于引导加载程序以C语言源代码的形式提供,因此制造商特定的程序代码可以轻松集成进去。这使得设备制造商能够将访问保护机制、固件加密或后门等元素集成到引导加载程序中。
该应用程序(将与引导加载程序一同传输)需要稍作调整,为此,必须更改链接器设置,使复位向量指向引导加载程序,同时确保应用程序所占用的空间不被占用。此外,还需为引导加载程序及应用程序之间的数据交换提供持久性内存(4字节),并且还支持应用程序与引导加载程序之间的其他通信方式。应用程序的二进制文件前面还包含一个数据块,其中包含CRC码和其他信息。闪存中的相应空间也必须保持空闲以容纳这些数据。
图:bootloader flash分配示意图为了减少bootloader的Flash占用,UDS bootloader的UDS服务是相对受限的,它涵盖了以下UDS服务:

如果您需要更多不同的UDS服务和固件更新产品,请与我们联系,我们可以针对您的需求对整体的协议栈进行修改和升级,适配更多的应用场景。
-
ecu
+关注
关注
14文章
967浏览量
56882 -
汽车
+关注
关注
15文章
4046浏览量
40628
发布评论请先 登录
基于SOA与文件传输协议的域控制器升级测试方案
UDS在CAN和以太网上的实现方案
【CPKCOR-RA8D1】+ 5. 使用RA8D1实现UDS诊断协议14229
UDS诊断命令备忘录
OBDII与UDS的区别是什么
基于MM32F0140系列MCU实现UDS Bootloader的设计
一文看懂UDS协议栈中的时间参数
UDS诊断协议在纯电动汽车电机控制器中的应用说明
UDS协议在电动两轮车的应用
UDS之29服务:认证服务
UDS诊断协议:汽车电子系统的“通用语言”
《CAN(FD)总线十万个为什么》之UDS诊断(上)

盟通方案|如何集成UDS协议
评论