UDS诊断协议广泛应用于汽车、重卡等领域的设备诊断和固件更新。该协议主要针对全车ECU进行标准化的数据交互。UDS应用层(ISO 14229-1)定义了6大类共26项诊断服务,覆盖了ECU开发功能调试、生产阶段的硬件检测与参数配置、以及成品阶段的故障诊断、远程软件更新等多个方面。
UDS是汽车环境中用于对电子控制单元(ECU)进行诊断的通信协议。我们的UDS Server/Client协议栈在CAN总线上扩展并实现了UDS服务功能,它是基于ISO-TP来实现的。ISO-TP是一项国际标准协议(ISO 15765-2),定义了通过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的底层以及一些必要的服务。
如今,越来越多的电子控制单元(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服务和固件更新产品,请与我们联系,我们可以针对您的需求对整体的协议栈进行修改和升级,适配更多的应用场景。
全部0条评论
快来发表一下你的评论吧 !