在一篇文章中了解以太网和 CANoe 的配置情况
1 概述
以太网在视频数据传输、宽带骨干网络、IP诊断(DoIP)以及电动汽车与充电站之间的通信等领域特别有用。Ethernet.Option扩展 CANoe 以包括对以太网网络的支持,允许使用接口硬件,例如VN5600系列以太网接口或PC上可用的以太网接口,还扩展了CANoe,以包括特定的协议,如SOME/IP,SOME/IP-SD,IP,TCP,UDP,TSN / AVB等等。
VN5600 系列以太网接口专为仿真和测量目的而设计,具有特定优势,例如高时间戳分辨率、与其他vector总线接口同步、点对点连接监控和拓扑精确的仿真。VN5600还支持特定于汽车的物理层,例如 100BASE-T1 (OABR) 和 1000BASE-T1这样就可以直接访问物理层。
图1:CANoe .以太网配置,用于在“跟踪”窗口中模拟和分析信号
CANoe可以模拟多个以太网节点的。每个网络节点在这里都由其自己的 TCP/IP 堆栈表示。这确保了与真实节点对应的通信行为。此外,通过对以太网数据包进行有针对性的伪造,可以测试可重现的嵌入式实现,并提高其对协议错误的鲁棒性。通过支持汽车领域典型的数据库格式(AUTOSAR ARKML和Fibex)和协议(SOME/IP,DoIP等),用户可以直接访问应用信号。这大大支持并简化了通信和应用程序数据的分析。
连同VN5600系列以太网接口,CANoe .Ethernet也适用于测量网关到其他车辆网络的信号转换中的延迟时间。例如,这样就可以跟踪整个车辆的诊断信息,并检查其一致性。以太网协议第2层(数据链路层)上的错误不仅可以可靠地检测和显示,还可以被激发。
- 图 2:以太网数据包生成器和以太网交互式生成器用于方便地创建和发送以太网帧,无需编程
下面具体聊聊在CANoe工程的实操和编程。
2 新建CANoe工程
新建一个普通Demon(ETH工程)
配置Vector Channel
在Option中配置1路以太网(其余无所谓)
配置HardWare
在AccessMode中,VN56x0设备使用Channel-Base Mode(新驱动中体现,旧驱动则默认为Channel-Base Mode)
在Device Configuration中使用Direct Connection模式
具体的Channel模式(Master/Slave)则视DUT而定
配置IP/Stack
在Simulation中配置V56x0的TCP/IP工作信息
配置8021 Vlan信息
配置TCP/IP信息
需要注意的是如果控制器支持普通多路信息则需要分别配置IP信息(如下图),
普通信息
带Vlan的信息
编写仿真脚本
新建CAPL节点后需要单独配置其IP/Stack属性,具体方式为沿用CANoe硬件设置即可
以一个TCP握手为例,代码如下
// An highlighted block
on key 'i' { dword gClientSocket; // The client socket IP_Endpoint localEndpoint; IP_Endpoint remoteEndpoint; char IPV4_DesADD[16]= "172.16.6.4"; dword Port_Des=51001; /**************配置信息******************/ remoteEndpoint.ParseEndpointFromString( IPV4_DesADD ); remoteEndpoint.PortNumber = Port_Des;//@sysvar::ChatClient1::ServerPortNumber; localEndpoint = IP_Endpoint(172.16.6.2:0); /**************开启本地Socket端口******************/ gClientSocket = TcpOpen( localEndpoint ); /**************开始连接******************/ TcpConnect( gClientSocket, remoteEndpoint ); }
测试结果
上一篇: [OpenSSL 3.0.0 设计 - 核心和提供程序设计
下一篇: CRC 算法,从原理到实施
推荐阅读
-
趣谈留言队列,搞清楚留言队列到底是什么!-说到消息队列,洪觉大概能猜到人们听到消息队列的反应,大致可以分为以下几类人。 第一类人,懵懵懂懂,刚上大学接触编程,还没用过消息队列,甚至还以为消息队列就是代码里面要新建一个List之类的;第二类人,听过消息队列,了解消息队列,但具体是什么还不是太明白,只知道一说到消息队列,脑海里马上出现了三组词,削峰、异步、解耦;第三类人,用过消息队列,对它有一定了解,但不知道为什么要这样设计,消息队列有什么样的前世今生,是如何演化到现在的模式的?**第四类人,已经对消息队列有了足够的了解,可以阅读本帖作为复习和温习。**你属于哪一类?无论你对消息队列了解多少,读完这篇文章后,我相信你都会有所收获。 什么是消息队列?我们为什么要使用消息队列?真的只是因为它看起来很勉强、很常用吗?当然不是,一项技术的出现往往是为了解决某种痛点,我们就从这个痛点出发,看看消息队列到底是为了解决什么问题而诞生的。 相信大家在工作之前,或者工作中接触单片机的次数会多一点,不管什么业务都一股脑塞进一个系统里,这种情况下接触消息队列的场景会比较少。但随着业务的增长,量上去了,单机系统就很难维护了,也扛不住并发量的增长,就需要把原来的单体应用拆分成多个服务。例如,牛奇网采用分布式架构,将原来的单体系统拆分成用户服务、题库服务、求职服务、论坛服务等,每个分布式节点都有一个集群,保证高可用性。 那虽然在这样的微服务架构下,如果某个核心业务并发量过大,系统就扛不住了。比如淘宝、淘票票、拼多多、京东等电商场景中的支付场景,你在某宝下单并支付后,调用支付服务,完成支付后,还需要更新订单的状态,这个时候就需要调用订单服务,那我们平时也下单,除了简单完成这些操作外,还会给你相应的积分;商家也会收到订单消息,并给您发送旺旺消息,确认订单无误;同时,也会给您发送消息,确认订单无误。确认订单无误;同时您还可以查看您的物流状态;还有系统为了给您推荐更适合您的商品,会根据您的订单做类似的推荐等等,我说的这些都是当我们下单后,肉眼可以感知到系统所做的动作。 **一个支付动作如果还需要调用那么多服务,等他们响应成功,最后再告诉用户你支付成功了,用户在系统中的整个体验会非常糟糕。**设想一下,假设请求服务+处理请求+响应总共需要 50ms,我们上面列出的场景:支付服务、订单服务、积分服务、商家服务、物流服务、推荐服务,总共需要 300ms。
-
在一篇文章中了解 Overleaf (Latex) 中的 Environment 和 \newenvironment 命令!
-
在一篇文章中掌握 conda 安装和配置生物信息学软件的方法
-
在一篇文章中了解以太网和 CANoe 的配置情况
-
Java 类加载器的作用 - 简介:类加载器是 Java™ 中一个非常重要的概念。类加载器负责将 Java 类的字节码加载到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念,包括代理模型、加载类的具体过程和线程上下文类加载器等。然后介绍了如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi™ 中的应用。 类加载器是 Java 语言的一项创新,也是 Java 语言广受欢迎的重要原因之一。它允许将 Java 类动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 开始出现,最初是为了满足 Java Applets 的需求而开发的,Java Applets 需要从远程位置下载 Java 类文件并在浏览器中执行。现在,类加载器已广泛应用于网络容器和 OSGi。一般来说,Java 应用程序的开发人员不需要直接与类加载器交互;Java 虚拟机的默认行为足以应对大多数情况。但是,如果遇到需要与类加载器交互的情况,而您又不太了解类加载器的机制,就很容易花费大量时间调试异常,如 ClassNotFoundException 和 NoClassDefFoundError。本文将详细介绍 Java 的类加载器,帮助读者深入理解 Java 语言中的这一重要概念。下面先介绍一些基本概念。 类加载器的基本概念 顾名思义,类加载器用于将 Java 类加载到 Java 虚拟机中。一般来说,Java 虚拟机以如下方式使用 Java 类:Java 源程序(.java 文件)经 Java 编译器编译后转换为 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码并将其转换为 java.lang 实例。每个实例都用来表示一个 Java 类。通过该实例的 newInstance 方法创建该类的对象。实际情况可能更加复杂,例如,Java 字节代码可能是由工具动态生成或通过网络下载的。 基本上,所有类加载器都是 java.lang.ClassLoader 类的实例。下面将详细介绍这个 Java 类。 java.lang.ClassLoader 类简介 java.lang.ClassLoader 类的基本职责是根据给定类的名称为其查找或生成相应的字节码,然后根据这些字节码定义一个 Java 类,即 java.lang.Class 类的实例。除此之外,ClassLoader 还负责加载 Java 应用程序所需的资源,如图像文件和配置文件。不过,本文只讨论它加载类的功能。为了履行加载类的职责,ClassLoader 提供了许多方法,其中比较重要的方法如表 1 所示。下文将详细介绍这些方法。 表 1.与加载类相关的 ClassLoader 方法
-
在uniapp中,如何轻松用echarts和renderjs方式完成echarts的封装,适用于兼顾H5和App场景,这一篇文章足够全面了解!