聊聊AUTOSAR:基于Vector MICROSAR的TC8测试开发方案
技术背景
车载以太网技术作为汽车智能化和网联化的重要组成部分,正逐步成为现代汽车网络架构的核心,已广泛应用于汽车诊断(如OBD)、ECU软件更新、智能座舱系统、高清摄像头环视泊车系统等多个领域。
在这个过程中,ETS与Upper Tester作为车载以太网测试领域的重要技术和工具,发挥着不可或缺的作用。这两者的结合,为车载以太网系统的全面验证与优化提供了强有力的支持。它们不仅能够帮助工程师在设计和开发阶段及时发现并解决潜在的问题,还能确保最终交付给消费者的汽车产品具备卓越的网络性能和稳定的应用体验。随着汽车智能化和网联化趋势的不断加深,ETS与Upper Tester的重要性和应用价值也将进一步凸显。
- ETS和Upper Tester测试分别是什么?
ETS全称是Enhanced Testability Service,是配置在被测件中,用于配合外部测试实现SOME/IP协议栈一致性测试的特殊测试服务。也就是说,ETS测试要求被测件配置额外的服务,专门用来完成更多的测试功能,比如数据的序列化及反序列化,这些功能并不是被测件的实际功能,而仅仅是用于ETS测试。ETS测试总共包含178条测试用例,其中有正向测试和逆向测试,能够更加全面地验证SOME/IP协议栈的一致性、安全性和鲁棒性。
用例分类 | 用例数目 | 测试内容概述 |
数据序列化 | 73 | 检查被测件在Request/Response通信模式下,对Request的数据系列化能力,包括是否可以正确进行数据序列化和异常数据处理方式; |
Server端通信行为测试 | 49 | 检查被测件在Server服务启动之后,Service Discovery的通信行为,包括Offer Service报文的发送、订阅处理和事件报文发送情况检查; |
Client端通信行为测试 | 13 | 检查被测件在Client服务启动之后,Service Discovery的通信行为,包括Find Service报文的发送时机、订阅处理和事件报文的接收情况检查; |
报文结构检查 | 6 | 检查被测件对SOME/IP报文结构的解析能力,报文协议字段的处理流程和异常结构的处理。 |
Upper Tester简称UT,是集成在被测件中,充当TCP/IP协议栈的应用程序,用于配合外部测试仪实现以太网3~4层(TCP/IP协议栈)一致性测试的特殊软件模块。TCP/IP协议栈覆盖以太网通信模型的3~4层,包含多个子协议,各子协议之间功能相对独立,互不干扰。为了充分验证各子协议的协议一致性,TC8针对各子协议定义了测试规范,以下列举了车载以太网测试常用的测试内容。由于TCP/IP协议栈本身不能自主收发报文,因此需要集成Upper Tester软件,用来调动TCP/IP协议栈功能,实现自动化测试。
用例分类 | 用例数目 | 测试内容概述 |
TCP | 188 | 检测TCP的Server side和Client side连接建立过程,以及数据收发的可靠性测试,如序列号和确认号的恢复能力、连接断开后续状态检测等; |
UDP | 31 | 检测UDP Socket的数据收发能力、网络参数的可设置性能,及数据交互过程中的报文格式检查; |
ARP | 41 | 检测ARP表的可配置性和ARP报文交互方式; |
ICMP | 14 | 检验ICMP故障监测能力,以及IP协议对ICMP报文的处理方式; |
IPv4 | 30 | 检测IP通信行为、对IP地址的处理能力以及IP分包的处理能力; |
DHCP | 35 | 检测被测件作为DHCP Client的通信行为,获取IP的方式及对IP地址老化处理方式等。 |
- 如何在Vector MICROSAR上实现ETS和Upper Tester?
MICROSAR是Vector公司的AUTOSAR CP解决方案,包含了协议栈代码、文档以及配置工具,市场占有率高,质量稳定可靠。接下来小编就带大家了解一下在MICROSAR上实现ETS和Upper Tester的具体方法。
2.1 Upper Tester开发
首先说Upper Tester,因为是对TCP/IP协议的测试,因此我们只需要考虑与TcpIp模块的适配即可。在MICROSAR上实现Upper Tester开发有两种方式,一种是采用MICROSAR代码包里原装Etm模块。Etm模块的全称是Ethernet Testability Module,是MICROSAR原厂的一种Upper Tester软件包,由于Etm模块并不参与正常的通信功能,所以它是一个可选包,这个包存在的意义,就是为了满足TC8的测试需要。用户要根据测试需求,在前期购买代码包的时候,确定是否购买Etm模块。在具备原厂Etm模块的情况下,只需按照标准流程,添加Etm模块即可,如下图所示。
如果代码包里找不到Etm模块,那么就需要集成第三方的Upper Tester软件包,如东信创智自研的IpUT软件包。集成第三方的软件包,其过程与Etm模块集成的过程有很多相似之处,都需要在TcpIp模块里添加一个Cdd(复杂设备驱动)接口,并且配置TcpIp与Cdd模块之间的回调函数接口。小编特意对Upper Tester的开发流程进行了梳理,供大家交流学习。
以上是Upper Tester的开发要点,所有步骤都是在DaVinci Configurator配置工具上完成的。从开发复杂度上来讲,ETS更复杂,接下来我们看看ETS的开发要点。
2.2 ETS开发
ETS是SOME/IP协议的测试服务,在AUTOSAR架构下,规定了SOME/IP通信协议,但是并没有一个固定的SOME/IP软件模块,SOME/IP的通信协议其实是由应用层、Rte模块和Service Discovery模块共同实现的。因此ETS的开发会涉及到IP地址和Socket配置、Service Discovery服务信息配置、Rte模块中Port接口和数据序列化配置,以及应用层数据处理函数的实现。牵扯的模块包含了底层到应用层的各个层级的参数配置,若采用纯手动配置的方式,即使经验丰富的工程师,也需要耗费大量的工时来调试这些配置项。
因此SOME/IP服务最常见的开发方式是在架构开发阶段,就定义好SOME/IP服务及服务相关的数据结构、通信参数、信号触发方式等参数,并且将这些参数打包到一份arxml文件中。开发ETS的时候,只需要将这份arxml文件导入到DaVinci工具,就可以自动生成SOME/IP相关的所有模块的配置项,大大缩短开发周期和开发出错的概率。这种开发方法的另一个好处是,arxml文件可以复用,因此在任何项目和硬件平台上,都可以快捷地实现ETS开发,这也可以显著减少开发的成本。
有些人会担心,原本工程里的SOME/IP服务也是arxml导入后生成的,现在要做ETS测试,导入新的arxml文件会不会对原有功能产生影响。首先说结论,不会。因为在DaVinci配置工具中,新数据的导入会与现有的数据库进行融合,实现的是增量配置,因此不会改变现有的应用功能。
按照上述步骤导入arxml文件之后,会再自动生成很多与ETS相关的新配置项,这些配置项很有可能会在工程中报错,这是由于arxml文件在制作时无法预测用户实际适用场景,因此包含了一些辅助性的配置,比如以太网驱动、IP地址等。因此,工程师后续的工作就是消错,去掉无用的驱动、EthIf模块和TcpIp模块多余的配置项,沿用工程的配置参数即可。
DaVinci Configurator里只实现网络传输层配置、Rte Port和数据序列化算法生成,而Rte Port以及应用数据的适配,需要在应用开发工具DaVinci Developer中完成。在DaVinci Developer里,ETS作为一个应用组件Component,首先需要实例化,然后再为每一个信号创建一个Runnable来进行处理。所谓Runnable可以理解为软件里的回调函数,在这个函数里,可以通过调用特定的Rte Port来收发数据,或者执行特定的操作。
Runnable里能操作Rte Port的前提,是基于应用层信号与底层信号的藕和,这一步是通过Data Mapping来实现的。完成Data Mapping和Runnable的配置之后,在DaVinci Developer中会重新更新数据,ETS从底层到应用层的所有配置项都进一步完善。最后,还需要对一些周期性函数分配任务调度周期,这个操作叫做Task Mapping。这一步完成后,ETS开发工作就结束了,后续生成配置代码,编译烧录即可。
下图展示了完成ETS配置后的控制器与外部测试环境之间的关系,基于这样的环境,如何来执行测试呢?我们接着往下看。
- 如何进行测试?
完成Upper Tester和ETS的配置之后,使用DaVinci配置工具生成配置代码,然后将配置代码与被测件工程代码一起编译生成二进制文件,刷写到控制器中就完成了集成工作。然后我们就要选定一种测试方案,也就是选定一种测试仪。以下列举两种测试环境,第一种是基于Vector vTESTstudio的测试环境,如图。
第二种是基于Spirent TTworkbench的测试环境,如图。
以上两种测试仪都是依据TC8的测试标准来运行测试用例,测试流程大体是一致的,但也有区别。区别主要体现在TCP的测试上,在TC8规范里,没有明确规定被测件的状态如何来获取,比如当被测件里的TCP Socket处于ESTABLISHED状态时,Spirent的验证方法是命令被测件发数据或者收数据,若能正常收发,则可以确定被测件的状态。而在vTESTstudio中,是通过一个自定义的命令TcpGetState来直接获取当前Socket状态。而这条命令对于被测件来说,是一条超越规范的命令,虽然在Vector MICROSAR里实现了这条命令,但若是运行其它厂家的软件,却未必支持这条命令,这是小编要提醒广大测试工程师们要注意的。
- 我们能做什么?
ETS与Upper Tester作为车载以太网测试的重要工具,是技术创新与品质保障的核心。针对这一体系,我们提供了一站式的集成服务与专业的测试服务,旨在帮助客户轻松配置DaVinci等测试环境,将ETS与Upper Tester无缝融入AUTOSAR CP架构中。通过精细的DaVinci配置方法,我们能够确保测试环境的高效性、准确性与可扩展性,助力客户在快速迭代的产品开发中,持续保持技术领先与品质卓越。
我们可以提供以下五种服务:
- 样件TC8网络测试服务;
- AUTOSAR CP Upper Tester+ ETS集成;
- Linux系统下Upper Tester集成;
- 适配vsomeip协议栈的ETS集成;
- vTESTstudio或Spirent测试设备集成及测试培训;
无论是对于复杂的网络通信测试,还是针对特定应用场景的功能验证,我们都能提供量身定制的解决方案,满足汽车行业日益增长的测试需求。若您对我们的服务感兴趣,或者还想了解更多关于以太网测试的内容,欢迎私信或者留言!
相关文章:

聊聊AUTOSAR:基于Vector MICROSAR的TC8测试开发方案
技术背景 车载以太网技术作为汽车智能化和网联化的重要组成部分,正逐步成为现代汽车网络架构的核心,已广泛应用于汽车诊断(如OBD)、ECU软件更新、智能座舱系统、高清摄像头环视泊车系统等多个领域。 在这个过程中,ET…...

ES6中迭代器与生成器知识浅析
ES5及以下版本对JS几种集合,要存取数据一般需要用循环语句来遍历,就要初始化一个或多个变量来记录每一次循环在数据集合中的位置或数据值。这里容易出现超出边界问题,造成程序出错。另外,对于多次循环也需要跟踪理清各个变量关系及…...

unix中的vfork函数
一、前言 本文介绍unix中的vfork函数,vfork函数功能和fork函数类似,也是用于创建新的进程,只不过调用vfork函数创建的子进程将共享父进程的进程空间,且只有当子进程调用exec()或者exit()函数后,父进程才会继续运行。 …...

Android 用线程池实现一个简单的任务队列(Kotlin)
关于线程池,Kotlin和java的使用方式一样 在Android中,很多人喜欢用Handler的postDelayed() 去实现延时任务. 要使用postDelayed(),去实现延时任务队列,就不可避免要使用递归. 但是这样做,代码的简洁性,和书写的简易,就远不如使用线程池. 使用线程池的简单程度: private val…...

遨游信息技术的浩瀚宇宙:探索MySQL的深邃奥秘
遨游信息技术的浩瀚宇宙:探索MySQL的深邃奥秘 在信息技术的浩瀚宇宙中,MySQL犹如一颗璀璨的星辰,以其稳定、高效、灵活的特性,照亮了无数开发者与数据管理者的前行之路。作为关系型数据库管理系统的佼佼者,MySQL不仅承…...

【Bug解决】Nacos启动成功,但却无法访问(提示:无法访问此网站,192.168.10.88的响应时间过长)
项目场景: 在虚拟机上通过Docker创建Nacos容器,已经创建成功,查看Nacos启动日志也是成功。但通过端口号加8848/nacos(如:http://IP:8848/nacos)无法访问到Nacos管理页面。 愿意分析一: 先检查好…...

【AI创作组】工程方向的硕士研究生学习Matlab的路径
1. MATLAB软件概述 1.1 MATLAB发展历程 MATLAB自20世纪70年代诞生以来,已经经历了多次重要的版本更新和功能扩展。 初始版本:MATLAB的前身只是一个简单的交互式矩阵计算器,由Cleve B. Moler博士在1970年代初期开发,目的是为了方便学生和研究人员使用线性代数软件包LINPAC…...

Mac使用Nginx设置代理,并禁用自带Apache
Mac自带Apache服务,并占用80端口,如果需要使用Nginx,需要禁用Apache并自己安装Nginx 一、禁用自带Apache 1.关闭Apache sudo apachectl -k stop 如果出现如下报错:httpd: Could not reliably determine the server’s fully q…...

AlmaLinux 安裝JDK8
在 AlmaLinux 上安装 JDK 8 可以通过包管理器 dnf 来完成。AlmaLinux 是基于 RHEL 的一个开源发行版,因此其包管理系统和 RHEL 类似。以下是详细的步骤来安装 OpenJDK 8 1. 更新系统包列表 sudo dnf update -y 2. 安装 OpenJDK 8 使用 dnf 安装 OpenJDK 8。你可…...

Set 和 Map 的模拟实现
1、引言 在数据结构与算法的学习与实践中,关联容器(associative containers)是不可忽视的重要工具。作为高效管理数据的一类容器,C 标准库中的 set 和 map 在现代软件开发中扮演着关键角色。这两个容器通过平衡二叉搜索树&#x…...

深度学习自编码器 - 预测稀疏分解(PSD)篇
序言 在数据科学与机器学习的广阔领域中,深度学习作为一股不可忽视的力量,正引领着技术革新的浪潮。其中,自编码器( Autoencoder \text{Autoencoder} Autoencoder)作为一种特殊的神经网络结构,以其独特的自…...

如何检测出来这个ip是共享ip不安全
检测一个IP是否为共享IP以及其安全性可以通过以下几种方法和工具来进行分析。共享IP通常是指多个用户共享一个IP地址,常见于公共代理服务器、VPN服务或数据中心IP。如果你想评估一个IP是否为共享IP以及其安全性,以下方法和工具可以帮助你进行检测和分析。…...

TMStarget学习——T1 Segmentation数据处理及解bug
最新学习季公俊老师的神器 TMStarget 的第一个模块基于结构像的靶区计算T1 segmentation。下面上步骤: (1)在github 上下载 TMStarget https://github.com/jigongjun/Neuroimaging-and-Neuromodulation (2)按照要求下载依赖工具软件AFQ、vistasoft、SPM12 &#…...

锁策略, cas 和 synchronized 优化过程
1.1 常見的鎖策略 預測鎖衝突概率 樂觀鎖:加鎖的時候,假設出現鎖衝突的概率不大。圍繞加鎖做的工作會更少。 悲觀鎖:加鎖的時候,假設鎖出現衝突的概率很大。圍繞加鎖做的工作會更多。 synchronized “自適應” 初始是樂觀的。鎖…...

【HTML5】html5开篇基础(2)
1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...

大数据新视界 --大数据大厂之 Reactjs 在大数据应用开发中的优势与实践
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

【论文阅读笔记】TOOD: Task-aligned One-stage Object Detection
论文代码:https://github.com/fcjian/TOOD 文章目录 论文小结论文简介论文方法Task-aligned Head(T-Head)T-Head伪代码解释 Task Alignment Learning(TAL)Task-aligned Sample AssignmentTask-aligned Loss 论文实验消…...

类中的特殊内容
仿照string类,自己手动实现 My_string #include <iostream> #include <string.h> using namespace std;class My_string { private:int len;int size;char *ptr; public:My_string():size(15),len(0){ptrnew char[size];ptr[0]\0;}My_string(const char…...

network request to https://registry.npmjs.org/xxx failed, reason: connect ETIM
目录: 1、问题描述2、解决方案3、npm镜像仓库替换 1、问题描述 npm install 时,报错:npm ERR! network request to https://registry.npmjs.org/postcss-pxtorem failed, reason: connect ETIMEDOU npm ERR! code ETIMEDOUT npm ERR! errno…...

MQ入门(二):java客户端SpringAMQP
目录 1.SpringAMQP 1.1.导入demo工程 1.2.快速入门 1.2.1.消息发送 1.2.2.消息接收 1.2.3.测试 1.3.WorkQueues模型 1.4.交换机类型 1.4.1.Fanout交换机 1.4.2.Direct交换机 1.4.3.Topic交换机 1.5.声明队列和交换机 1.5.1.基于注解声明 1.6.消息转换器 1.6.1.测…...

软技能与AI技术的融合
一、引言 ---- 随着人工智能(AI)和生成式人工智能(AIGC)如ChatGPT、Midjourney、Claude等大语言模型的迅速崛起,AI辅助编程工具已经变得越来越普遍。这不仅意味着程序员的工作方式正在发生深刻的变革,同…...

在视频上绘制区域:使用Vue和JavaScript实现交互式画布
在数字时代,交互式媒体内容的创建和消费变得越来越普遍。特别是视频内容,它不仅提供了视觉信息,还允许用户与之互动,从而增强了用户体验。本文将介绍如何使用Vue.js框架和JavaScript创建一个交互式组件,该组件允许用户…...

31. RabbitMQ顺序消费
1. 前言 上个小节中我们介绍了 RabbitMQ 中如何防止消息丢失,即保证消息发送的 At Least Once 性质,除此之外,如何防止消息被重复消费,即保证消息消费的 Exactly Once 性质,也是业务逻辑中需要考虑的问题。 2. 消息消费顺序 面试官提问:业务中使用了 RabbitMQ 消息队列…...

BERT-BiLSTM-CRF模型实战
文章目录 BERT-BiLSTM-CRF模型项目结构数据预处理运行环境使用方法关于BERT-BiLSTM-CRF参考文章BERT-BiLSTM-CRF模型 使用谷歌的BERT模型在BiLSTM-CRF模型上进行预训练用于中文命名实体识别。 项目结构 bert_bilstm_crf_ner_pytorchtorch_nerbert-base-chinese --…...

npm 安装 与 切换 淘宝镜像
一、镜像源 npm默认镜像源是国外的,安装依赖速度较慢,使用国内的镜像源速度会快一些。 1、设置淘宝镜像源: #最新地址 淘宝 NPM 镜像站喊你切换新域名啦! npm config set registry https://registry.npm.taobao.org(弃用了&…...

在Windows系统上安装的 Arrow C++ 库
在Windows系统上安装的 Arrow C 库 正文第一步第二步第三步第四步注: 检查是否安装成功 吐槽 正文 第一步 git clone gitgithub.com:apache/arrow.git第二步 打开powershell (好像cmd也可以,不过我试了powershell中不报错,cmd中报错,不是很清楚为什么) 打开arrow的目录 cd …...

格雷母线电缆头安装方法视频-武汉正向科技
正向科技|格雷母线电缆头怎么处理? 正向科技格雷母线采用整体热压工艺生产,一次成型,防护等级 IP67,用在直线或环形位移检测,抗污染能力强,防水、油、灰尘、蒸汽等,能在强粉尘、高温的环境下稳定…...

统信服务器操作系统【Cron定时任务服务】
Cron定时任务服务服务介绍、服务管理、服务配置 文章目录 一、功能概述二、功能介绍1. Cron 服务管理2.Cron 服务管理3.Cron 服务配置run-parts一、功能概述 cron是一个可以用来根据时间、日期、月份、星期的组合来 调度对周期性任务执行的守护进程。利用 cron 所提供的功能,可…...

微前端中的路由加载流程
1. 初始化基座应用 基座应用:基座应用是微前端架构中的主应用,负责管理和协调各个子应用的加载和卸载。 初始化:基座应用在启动时会初始化路由配置,注册各个子应用的路由。 2. 注册子应用 子应用需要向基座应用注册自己的路由和…...

Axure大屏可视化模板:跨领域数据分析平台原型案例
随着信息技术的飞速发展,数据可视化已成为各行各业提升管理效率、优化决策过程的重要手段。Axure作为一款强大的原型设计工具,其大屏可视化模板在农业、园区、城市、企业数据可视化、医疗等多个领域得到了广泛应用。本文将通过几个具体案例,展…...