一. 前言
传统的车载领域诊断技术是通过CAN/LIN/Flexray/MOST的总线方式,对UDS协议数据进行传输的技术。
与传统车载诊断相比,所谓DoIP就是通过以太网通信的形式对UDS协议数据进行传输,即Diagnostic communication over Internet Protocol。其本身也是一种协议,规范于ISO13400标准。
因DoIP可以传输大量数据,以及响应速度快,且可以通过以太网进行远程诊断,因此DoIP成为了车载诊断的必然趋势。
二. DoIP概述
DoIP协议的精髓内容在 【Part 2: Transport protocol and network layer services】,大家可以把主要精力用在分析这个Part上。
而Part1 主要介绍了应用场景,Part3和Part4主要介绍了数据链路层及物理层的相关内容,Part5涉及到的是测试方面内容。
那么关于Part2我打算分为几个小节详细的进行介绍,而这篇主要介绍下概述性的东西,让大家对DoIP协议有个初步的认识。
2.1 为什么要用DoIP?
前面前言也简单介绍过了DoIP的一些优势,那么仅仅是认为有这些优势,就可以马上在车载领域应用起来吗?
当然不是。首先汽车系统的整体框架要能够支持DoIP,正因为车载以太网的快速发展,相较于传统的车载系统,目前的车载系统的整体框架都会加入一层DoIP协议层,在TCP/IP之上。并且为了更好的配合OBD诊断,远程诊断,FOTA等等技术,对整体的车载架构进行了调整,利用swich将MPU,MCU,其它以太网ECU统统通过以太网进行连接,并对外网与内网进行隔离。
那么既然有一把宝剑握在手中,还不用吗?当然要考虑安全性(安全气囊)和成本问题(车门控制)等,传统的总线结构还是会存在。另外挂在在MCU上的ECU,通常是通过CAN进行控制的。那么这类CAN控制的ECU会跟DoIP挂上钩吗?当然会,这时就会涉及到另一个模块DoIP转DoCAN,后续会介绍相关内容。
2.2 DoIP能做什么?
DoIP仅仅是UDS的载体吗?如果这么想的话,那么DoIP过于简单了。虽然协议书上内容不多,但是它也有自己的一些逻辑,不可能说在TCP/IP之上加了一层封装就完成了自己的任务,这样的话安全性就没有保证了,毕竟车载以太网通过网络能够将车内与车外进行网络的连接,而DoIP又是诊断的入口,这个门口如果不好好看住,会存在安全性的问题的。
简单的说,DoIP能够进行车辆发现,状态查询,路由激活(含安全认证),诊断数据收发,这些内容将在后续进行详细的展开。
有了DoIP,那么UDS的数据传输就可以搭载在DoIP之上,并在DoIP前序逻辑都OK的情况下,进行UDS的传输。当然DoIP之上也可以不搭载UDS数据,这属于客户定制,能够满足以太网传输的一些其它特殊需求。
2.3 DoIP实际开发时的注意点
问:DoIP用什么语言进行开发
答:C语言,C语言的可移植性好,并且作为协议栈可以做到足够小,性能也比较好
问:DoIP开发要掌握哪些知识
答:C语言功底,Socket编程相关技术,DoIP自身协议,多线程,锁机制,数据结构等
问:对协议的理解不同怎么办
答:DoIP的ISO标准书上有些内容的介绍确实比较笼统,仁者见仁、智者见智,这里确实需要花精力对协议进行深扣。客户的需求当然是最重要的,但是协议的理解不能有太大的偏差,需要有经验的人进行方向的把握,以实际的应用为主。
*其它问答,可以通过留言方式进行
三. 总结
近几年车企处在寒冬期,而且疫情可能也打乱了一些人的职业规划,不过我相信有能力的人、坚持不懈努力的人,是不会慌了阵脚的。
这篇只是个DoIP的开门见山篇,后续会详细进行讲解,尽请期待。大家共同努力!