如何实现CAN-SOME/IP通信路由测试

区别于基于UDP的车内通信路由,基于SOME/IP协议的路由增加了服务发现(Service Discovery)和服务发布(Service Publish),那对于测试工程师来说,怎么实现CAN-SOME/IP路由的测试呢?

01 认识路由实现方式

首先要了解基于SOME/IP协议的路由设计原则,如果功能实现在Ethernet节点,则Ethernet节点为server,网关为client,如果功能实现在CAN节点,则网关为server,Ethernet节点为client,由网关实现Ethernet节点与CAN节点之间的路由。包括两种路由方式:报文路由和信号路由。

图片

那么,CAN报文和SOME/IP报文怎么实现对应呢,举个例子:

在以下示例中,通过SOME/IP header中的ServiceID和MethodID可以关联到指定的CAN报文。

图片

其中:

A代表ServiceID

B代表BusID

C代表CAN MessageID

E用来区分Method,或Event/Notifier 消息

报文路由:CAN报文的payload映射为服务接口的payload。网关实现CAN和SOME/IP协议之间的报文路由,不改变数据内容和数据长度。

图片

信号路由:服务接口中的参数映射为CAN报文中的信号。网关实现不同数据类型之间的转换。

图片

02 了解测试内容

报文路由不涉及信号内容解析,测试输入时可以不加载数据库文件也能完成测试,但是信号路由涉及SOME/IP接口参数的序列化和反序列化,需要加载数据库进行测试。

常见测试点

通信路由主要测试点包括:检查目标网段、报文类型、MessageID、payload length、payload是否正确,路由延迟时间等是否满足要求。

逆向测试的测试点主要有:payload length大于或小于预期,无效ID等

稳定性相关的测试点主要有:高负载,反复上下电,反复休眠等

以CAN-->SOME/IP 报文路由为例,已知某路由信息,测试Payload一致性。

路由信息

源网段(CAN)

目标网段(SOME/IP)

MessageID:0x100

DLC:8

ServiceID:0x0001

MessageType:Notification

EventgroupID:0x0001

NotificationID:0x8100

测试步骤

Step1:检查网关是否Offer ServiceID 0x0001

Step2:Tester模拟客户端,订阅ServiceID为0x0001,EventgroupID为0x0001的事件组,检查网关是否回复对应的SubscribeACK

Step3:在源网段模拟发送CAN报文,ID为0x100,data为01 02 03 04 05 06 07 08,检查是否接收到对应的SOME/IP报文

Step4:检查接收的payload与发送的payload是否一致

03 自动化测试解决方案

测试环境

搭建的测试环境要能与DUT建立通信,能控制DUT上下电和唤醒。可以参考以下的测试拓扑来监控DUT的通信,同时仿真Tester节点,模拟CAN和Ethernet节点与DUT进行通信。该套测试系统由CANoe测试软件、VT板卡、VN 5650,VN 16XX,程控电源和DUT组成。

图片

测试脚本

在上述测试步骤中,Tester需要模拟CAN节点和SOME/IP服务客户端,测试脚本的开发可基于CAPL语言和Vector提供的SomeIP_IL.dll文件,分为以下几个步骤来实现 。

❶ 在TCP/IP Stack中,给Tester设置IP/MAC地址

❷ 模拟发送CAN报文

❸调用SomeIpOpenLocalApplicationEndpoint函数,创建一个Endpoint

❹ 调用SomeIpCreateConsumedServiceInstance函数,指定ServiceID和InstanceID

❺ 调用SomeIpAddConsumedEventGroup函数,指定EventgroupID

❻ 调用SomeIpCreateFieldConsumer函数,指定NotificationID,以及当接收到此Notification报文时的回调

❼ 创建回调函数,当接收到Notification报文时,比对payload是否一致

回调函数触发后,数据解析方法示例:

图片

测试结果

CANoe监控报文以及数据处理结果展示:

图片

通过调用SomeIP_IL.dll文件,可以实现Tester与网关之间的服务发现过程,以及服务接口的接收和调用,进一步达到测试的目的。

SOME/IP-->CAN路由的测试原理与上面相似,调用dll文件中的函数,实现模拟服务端的行为,信号路由的测试通过导入SOME/IP和CAN数据库文件,可以实现自动化测试。

以上就是我们给大家分享的CAN-SOME/IP路由测试的相关内容了,任何疑问或是自动化测试需求,都可以随时联系我们噢,感谢大家的阅读~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/41268.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全面试题

以下为网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作。 注:本套面试题,已整理成pdf文档,但内容还在持续更新中,因为无论如何都不可能覆盖所有的面试问题&#xf…

45、Spring Boot自动配置原理

Spring Boot自动配置原理 lmport Configuration Spring spi 自动配置类由各个starter提供,使用Configuration Bean定义配置类,放到META-INF/spring.factories下使用Spring spi扫描META-INF/spring.factories下的配置类使用lmport导入自动配置类

C# WPF实现动画渐入暗黑明亮主题切换效果

C# WPF实现动画渐入暗黑明亮主题切换效果 效果图如下最近在Bilibili的桌面端看到一个黑白主题切换的效果感觉,挺有意思。于是我使用WPF尝试实现该效果。 主要的切换效果,基本实现不过还存在一些小瑕疵,比如字体等笔刷不能跟随动画进入进行切…

手写数字识别Minst(CNN)

文章目录 手写数字识别网络结构加载数据集数据集可视化CNN网络结构训练模型保存模型和加载模型测试模型 手写数字识别 网络结构 网上给出的基本网络结构: 然而在本数据集中,输入图不是1*32*32,是1*28*28。所以正确的网络结构应该是 level…

好用的思维导图软件有哪些?这几款简单好用

好用的思维导图软件有哪些?思维导图是一种非常有用的思维工具,可以帮助我们组织和理清复杂的信息。在如今的数字时代,有很多软件可以帮助我们创建和编辑思维导图。下面介绍几款简单好用的思维导图软件。 第一款:迅捷画图 这是一款…

生成式AI时代,亚马逊云科技致力推动技术的普惠,让更多企业受益

当谈及AIGC时, 我们该谈些什么? 生成式AI技术与应用的不断发展,为各个行业都注入了全新的机会与活力。AIGC成为了今年最为激动人心的技术话题。亚马逊云科技也一马当先,在6月27-28日,2023亚马逊云科技中国峰会上分享…

babel兼容低版本游览器

文章目录 1. webpack项目的搭建2. babel 命令行使用3. babel的预设与编译器流程4. babel项目中配置4.1 babel-loader与插件的使用4.2 babel-preset使用 5. 游览器兼容性使用5.1 browserslist工具与编写规则5.2 browserslist配置5.3 优化babel的配置文件 6. polyfill6.1 useBuil…

Redis基础 进阶项目实战总结笔记

文章目录 一、启动的三种方式1.默认启动2.指定配置启动3.开机自启动 二、数据类型1.string:字符串2. hash:哈希3. list:列表4. set:集合5. sorted set:有序集合 三、黑马课程的进阶项目实战总结博文笔记Redis实现短信登…

配置spark

配置spark Yarn 模式Standalone 模式Local 模式 Yarn 模式 tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module cd /opt/module mv spark-3.0.0-bin-hadoop3.2 spark-yarn修改 hadoop 配置文件/opt/module/hadoop/etc/hadoop/yarn-site.xml, 并分发 <!--是否启动一…

Vue3统计数值(Statistic)

可自定义设置以下属性&#xff1a; 数值的标题&#xff08;title&#xff09;&#xff0c;类型&#xff1a;string | slot&#xff0c;默认&#xff1a;‘’数值的内容&#xff08;value&#xff09;&#xff0c;类型&#xff1a;string | number&#xff0c;默认&#xff1a;…

【Python】数据可视化利器PyCharts在测试工作中的应用

点击跳转原文&#xff1a;【Python】数据可视化利器PyCharts在测试工作中的应用 实际应用&#xff1a;常态化性能压测数据统计 import random from pyecharts.charts import Line, Bar, Grid, Pie, Page from pyecharts import options as opts # 查询过去 8 次数据 time_rang…

Low-Light Image Enhancement via Self-Reinforced Retinex Projection Model 论文阅读笔记

这是马龙博士2022年在TMM期刊发表的基于改进的retinex方法去做暗图增强&#xff08;非深度学习&#xff09;的一篇论文 文章用一张图展示了其动机&#xff0c;第一行是估计的亮度层&#xff0c;第二列是通常的retinex方法会对估计的亮度层进行RTV约束优化&#xff0c;从而产生…

NFTScan 与 Decert 达成合作伙伴,双方在 NFT 数据方面展开合作

近日&#xff0c;NFT 数据基础设施 NFTScan 与 Decert 达成合作伙伴关系&#xff0c;双方在多链 NFT 数据层面展开合作。在 Decert 产品中&#xff0c;由 NFTScan 为其提供专业的多链 NFT 数据支持&#xff0c;为用户带来优质的 NFT 搜索查询等相关交互功能&#xff0c;提升用户…

事务@transactional执行产生重复数据

背景 系统设计之初&#xff0c;每次来新请求&#xff0c;业务层会先查询数据库&#xff0c;判断是否存在相同的id数据&#xff08;id是唯一标识产品的&#xff09;&#xff0c;有则返回当前数据库查到的数据&#xff0c;根据数据决定下一步动作&#xff0c;没有则认为是初次请…

一则 MySQL 参数设置不当导致复制中断的故障案例

本文分享了一个数据库参数错误配置导致复制中断的问题&#xff0c;以及对参数配置的建议。 作者&#xff1a;秦福朗 爱可生 DBA 团队成员&#xff0c;负责项目日常问题处理及公司平台问题排查。热爱互联网&#xff0c;会摄影、懂厨艺&#xff0c;不会厨艺的 DBA 不是好司机&…

wsl2中安装docker

1、安装docker 执行以下脚本&#xff1a; 这个脚本在执行之前需要先执行chmod x install-docker.sh这个命令 # install docker curl -fsSL get.docker.com -o get-docker.sh sh get-docker.shif [ ! $(getent group docker) ]; thensudo groupadd docker; elseecho "doc…

UE4/5AI制作基础AI跳跃(适合新手)

目录 制作 添加逻辑 添加导航链接代理 结果 在上一章中&#xff0c;我们讲解了简单的AI跟随玩家&#xff0c;制作了一个基础的ai。 UE4/5AI制作基础AI&#xff08;适合新手入门&#xff0c;运用黑板&#xff0c;行为树&#xff0c;ai控制器&#xff0c;角色类&#xff0c;任…

数据库应用:CentOS 7离线安装PostgreSQL

目录 一、理论 1.PostgreSQL 2.PostgreSQL离线安装 3.PostgreSQL初始化 4.PostgreSQL登录操作 二、实验 1.CentOS 7离线安装PostgreSQL 2.登录PostgreSQL 3.Navicat连接PostgreSQL 三、总结 一、理论 1.PostgreSQL &#xff08;1&#xff09;简介 PostgreSQL 是一个…

性能测试工具 jmeter 录制脚本,传递 cookie,循环执行接口

目录 前言&#xff1a; 代理录制脚本 循环重复添加接口 登录并传递 cookie 给新建产品接口 循环执行脚本 前言&#xff1a; 在使用JMeter进行性能测试时&#xff0c;录制脚本是一种常用的方法。录制脚本可以帮助你捕获和重放用户与应用程序之间的交互&#xff0c;以模拟真…

matlab中画有重影的机器人运动过程【给另一个机器人设置透明度】

1、前言如题 2、参考连接如下 How to plot two moving robot in the same figure and change one of them transparency&#xff1f; - MATLAB Answers - MATLAB Central (mathworks.cn)3、代码&#xff1a;【找到figure中对应对象并设置属性】 % Create two instances of a…