车载以太网第二弹|测试之实锤 -DoIP测试开发实践
前言
车载以太网测试之实锤系列,之前我们已经从环境设备组成、被测对象组成再到测试过程和测试结果分析,分享了完整的PMA测试 、IOP测试 、TC8中的TCP/IP协议一致性测试 、也分享了1000BASE-T1物理层PMA测试相关测试实践,本期给大家介绍的是DoIP及以太网诊断测试开发相关知识及测试实践分享。
DoIP简介
以太网最早由BMW引入车内,其应用场景就是刷写,满足类似HMI的地图数据、液晶仪表等软件数据更新,感兴趣的可查阅Thomas Konigseder 的Automotive Ethernet书中的介绍。由于其突出的特性,而后得到主要OEM的推崇和更广泛的应用,遂开始了国际标准化(汽车行业一直以来的“套路”)。
DoIP全称:Diagnostic communication over Internet Protocol。顾名思义,通过以太网来实现车辆诊断,其对应的国际标准为ISO 13400,其定义了DoIP协议(基于UDS)并描述了外部测试设备与车辆进行诊断数据交互的流程。
下图为DoIP及基于以太网诊断在OSI 7层模型中及在“7层之外”的“角色”和“位置”。
图1 DoIP及以太网诊断规范框架
DoIP协议要点简述
DoIP报文
DoIP报文在以太网报文中的位置如下图。
图2 DoIP报文在以太网报文中的位置示意图
DoIP报文分为三大类:
- 节点管理类
主要包括报头处理流程、车辆信息获取(如EID、GID、VIN等)、路由激活流程(包括授权以及确认功能)、TCP_DATA socket处理流程。
图3 节点管理类DoIP报文
- 车辆信息类
主要包括获取DoIP实体状态信息、车辆电源模式信息。
图4 车辆信息类DoIP报文
- 诊断类
主要包括诊断报文处理流程以及UDS数据交互。
图5 诊断类DoIP报文示
DoIP会话流程
DoIP会话的整个流程可以分为五步:硬线激活(该激活机制是否采用及激活方法不同OEM是存在差别的)->车辆发现流程->TCP_DATA socket处理流程->诊断数据交互->关闭TCP_DATA socket。
图6 DoIP会话流程
图片来源:ISO 13400-2:Road vehicles - Diagnostic communication over Internet Protocol (DoIP)
边缘和内部节点差异
关于DoIP协议,ISO 13400规范做了框架性的定义,但OEM会依据整车功能需求自定义细节内容,同时会区分边缘节点和内部以太网节点,聊到此处有的小伙伴可能会有疑问,“以太网节点为何要区分边缘节点和内部节点?两者是否可以支持完整的DoIP协议?”接下来我们通过实例讨论边缘节点和内部节点在DoIP报文配置方面的差别。
问题一:内部节点需要支持诊断报文肯定应答(0x8002)么?
分析:当Tester向内部节点发送诊断请求时,首先边缘节点会先向Tester发送0x8002报文,如果内部节点也支持0x8002报文,随后边缘节点又再一次转发内部节点发送的0x8002报文和诊断应答报文到Tester。
根据DoIP协议,Tester完成诊断报文发送后会等待0x8002报文同时开启P6Client定时器来接收诊断应答报文(暂时不考虑0x8003)。所以如果内部节点支持0x8002报文从系统设计方面考虑不符合DoIP协议,而且会导致以太网系统级诊断刷写测试P6Client参数超时。
图7 内部节点支持0x8002报文交互过程示例
问题二,笔者抛块砖:不同类型节点对路由激活报文该采用何种策略?
有兴趣的,可就此类技术细节约聊,同样此话题可扩展包括DoIP其他报文针对边缘和内部节点不同的配置和支持方案,当然还有区别最明显的对硬线激活特性支持的差异。
万变不离其宗,以太网节点DoIP报文的配置要服务于整车功能,这部分更应该是OEM设计工程师需要从应用场景角度考虑而进行设计的。仁者见仁,智者见智,在不同拓扑、不同需求情况下设计方案也应当有所差异。
DoIP及以太网诊断测试方案和实践
DoIP及以太网诊断测试实现可以分层来介绍,当然在各层中OEM会在ISO标准需求的基础上做自定义开发。
针对ISO 13400-2的测试
测试内容包括DoIP报文格式、DoIP流程以及DoIP时间参数等,其测试脚本和测试工程通过CANoe(CAPL)定制实现。
图8 基于CANoe开发的部分测试项及测试脚本
图9 某控制器Alive_Check_Message测试报告
针对ISO 13400-3的测试
测试内容包括激活使能线等相关的测试,测试脚本同样通过CANoe(CAPL)开发实现,测试环境需借助于Vector的VT板卡,如VT2004实现硬线的仿真。
针对ISO 14229-1/-5的测试
可基于CANoe Option DiVa可实现,DiVa是Vector公司一款便捷、高效的诊断测试用例生成工具,使用DiVa实现UDSonCAN的测试大家都比较熟悉,那么对于以太网UDS测试DiVa是否也可以覆盖?答案是肯定的。DiVa可基于DoIP协议(ISO 13400)生成以太网UDS测试工程,即按照标准DoIP流程与ECU进行诊断数据交互。
图10 基于DiVa的以太网UDS测试工程
介绍到这里小伙伴们可能会有疑问,对于非标准DoIP协议的以太网节点是否也可用DiVa覆盖其测试需求?比如笔者曾遇到的OEM所定义的以太网节点仅支持DoIP净荷类型中特定的报文,或者以太网节点仅支持OEM自定义格式的诊断报文等情形。
总结
接着上面的问题,对于支持非标准DoIP协议的以太网节点UDS测试需做一定的定制开发方可。另外,DiVa自动生成的UDS测试工程是否直接满足边缘和内部两种类型节点的测试需求呢,该如何适配?这也是笔者在项目实践过程中遇到的一些工程问题,还曾“遭遇”在DoIP测试过程中由于ARP配置而引起的“异象”以及端口固定等各类疑难杂症!限于篇幅,不做一一介绍了,感兴趣的小伙伴约起来吧!
北汇信息已为多家主流OEM完成DoIP、以太网诊断、刷写测试相关的项目,为客户提供完整交钥匙工程服务,包括:
- 设计需求规范的审核完善
- 测试规范开发
- 测试脚本定制开发和测试实施服务
车载以太网技术扩散越来越快,相关测试验证工作及对测试验证深度、广度的要求也备受重视,所以实践实战的经验积累、对系统宏观层面的了解也更为关键,北汇信息希望与各位共同进步,价值分享。
车载以太网第二弹|测试之实锤 -DoIP测试开发实践的更多相关文章
- 车载以太网第二弹|测试之实锤-AVB测试实践
背景 AVB(Audio Video Bridging)音视频桥接,是由IEEE 802.1标准委员会的IEEE AVB任务组制定的一组技术标准,包括精确时钟同步.带宽预留和流量调度等协议规范,用于构 ...
- 车载以太网第二弹 | 测试之实锤-IOP测试实践
前言 上一期"物理层PMA测试实践",咱们从环境设备组成.被测对象组成再到测试过程和测试结果,将完整的PMA测试过程做了一个经验分享. 由下层开始逐层"披沙沥金" ...
- 车载以太网第二弹|测试之实锤-1000BASE-T1物理层PMA测试实践
背景 100BASE-T1方兴未艾,国内外OEM量产车型纷至沓来:为了满足高带宽的应用场景需求(如图像.雷达等数据传输),1000BASE-T1将至已至,如大众MEB平台采用1000BASE-T1总线 ...
- 车载以太网第二弹|测试之实锤-TC8 TCP/IP协议一致性测试实践
前言 车载以太网测试实践系列,我们还分享了PMA测试实践.IOP测试实践 .本期给大家介绍的是TC8中的TCP/IP协议一致性测试(以下简称TCP/IP测试). TCP/IP测试-设备环境组成 TTw ...
- 车载以太网第二弹|测试之实锤-1000BASE-T1 IOP测试实践
背景 车载以太网通信技术在汽车行业的应用速度远超预期,去年本土OEM已经上市了应用100BASE -T1的车型.今年,应用1000BASE -T1的车型预计也将会量产上市.针对测试而言,带来另外一个难 ...
- 车载以太网第二弹 | 测试之实锤-物理层PMA测试实践
前言 本期先从物理层"PMA测试"开始,下图1为"PMA测试"的测试结果汇总图.其中,为了验证以太网通信对线缆的敏感度,特选取两组不同特性线缆进行测试对比,果然 ...
- SOA=SOME/IP?你低估了这件事 | 第二弹
哈喽,大家好,第二弹的时间到~上文书说到v-SOA可以通过SOC.SORS和SOS来分解落地,第一弹中已经聊了SOC的实现,这部分也是国内各大OEM正在经历的阶段,第二弹,我们继续聊 ...
- 关于『HTML5』:第二弹
关于『HTML5』:第二弹 建议缩放90%食用 咕咕咕咕咕咕咕!!1 (蒟蒻大鸽子终于更新啦) 自开学以来,经过了「一脸蒙圈的 半期考试」.「二脸蒙圈的 体测」的双重洗礼,我终于有空肝 HTML5 辣 ...
- LCA问题第二弹
LCA问题第二弹 上次用二分的方法给大家分享了对 LCA 问题的处理,各位应该还能回忆起来上次的方法是由子节点向根节点(自下而上)的处理,平时我们遇到的很多问题都是正向思维处理困难而逆向思维处理比较容 ...
随机推荐
- flume的配置详解
Flume:===================== Flume是一种分布式的.可靠的.可用的服务,可以有效地收集.聚合和移动大量的日志数据. 它有一个基于流数据的简单而灵活的体系结构. 它具有健壮 ...
- APM监控--(三)zipkin部署手册
一,基础知识储备分布式跟踪的目标一个分布式系统由若干分布式服务构成,每一个请求会经过多个业务系统并留下足迹,但是这些分散的数据对于问题排查,或是流程优化都很有限,要能做到追踪每个请求的完整链路调用,收 ...
- K8S核心概念之SVC(易混淆难理解知识点总结)
本文将结合实际工作当中遇到的一些问题和情况来解析SVC的作用以及一些比较易混淆和难理解的概念,方便日后工作用到或者遗忘时可以直接在自己曾经学习总结的博客当中直接查找到. 首先应该清楚SVC的作用是什么 ...
- Java设计模式之(三)——建造者模式
1.什么是建造者模式 Separate the construction of a complex object from its representation so that the same co ...
- AnnotationConfigApplicationContext(1)之初始化Scanner和Reader
AnnotationConfigApplicationContext(1)初始化Scanner和Reader 我们以AnnotationConfigApplicationContext为起点来探究Sp ...
- [hdu6990]Directed Minimum Spanning Tree
模板题:在有向图中,对每一个点求以其为根的最小(外向)生成树 (当图是强连通时)可以使用朱刘算法,算法过程如下: 1.对每一个节点,选择指向该点的边权最小的边,即得到一张子图 2.任选这张子图的一个简 ...
- [hdu6973]Bookshop
将询问拆成$x$到$lca$和$lca$($lca$靠近$y$的儿子)到$y$两部分,分别处理(后者以前者的答案为基础) 两者是类似地,不妨仅考虑前者:用树剖将该询问拆成dfs序上若干个 ...
- NLP获取词向量的方法(Glove、n-gram、word2vec、fastText、ELMo 对比分析)
自然语言处理的第一步就是获取词向量,获取词向量的方法总体可以分为两种两种,一个是基于统计方法的,一种是基于语言模型的. 1 Glove - 基于统计方法 Glove是一个典型的基于统计的获取词向量的方 ...
- 洛谷 P4437 [HNOI/AHOI2018]排列(贪心+堆,思维题)
题面传送门 开始 WA ycx 的遗产(bushi 首先可以将题目转化为图论模型:\(\forall i\) 连边 \(a_i\to i\),然后求图的一个拓扑序 \(b_1,b_2,\dots b_ ...
- Codeforces 1158F - Density of subarrays(dp,神仙题)
Codeforces 题目传送门 & 洛谷题目传送门 人生中第一道 *3500(显然不是自己独立 AC 的),不过还是祭一下罢 神仙 D1F 首先考虑对于给定的序列 \(a_1,a_2,\do ...