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

描述

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服务和固件更新产品,请与我们联系,我们可以针对您的需求对整体的协议栈进行修改和升级,适配更多的应用场景。

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

全部0条评论

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

×
20
完善资料,
赚取积分