聊聊AUTOSAR:基于Vector MICROSAR的TC8测试开发方案

技术背景

车载以太网技术作为汽车智能化和网联化的重要组成部分,正逐步成为现代汽车网络架构的核心,已广泛应用于汽车诊断(如OBD)、ECU软件更新、智能座舱系统、高清摄像头环视泊车系统等多个领域。

在这个过程中,ETS与Upper Tester作为车载以太网测试领域的重要技术和工具,发挥着不可或缺的作用。这两者的结合,为车载以太网系统的全面验证与优化提供了强有力的支持。它们不仅能够帮助工程师在设计和开发阶段及时发现并解决潜在的问题,还能确保最终交付给消费者的汽车产品具备卓越的网络性能和稳定的应用体验。随着汽车智能化和网联化趋势的不断加深,ETS与Upper Tester的重要性和应用价值也将进一步凸显。

  1. 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地址老化处理方式等。

  1. 如何在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配置后的控制器与外部测试环境之间的关系,基于这样的环境,如何来执行测试呢?我们接着往下看。

  1. 如何进行测试?

完成Upper Tester和ETS的配置之后,使用DaVinci配置工具生成配置代码,然后将配置代码与被测件工程代码一起编译生成二进制文件,刷写到控制器中就完成了集成工作。然后我们就要选定一种测试方案,也就是选定一种测试仪。以下列举两种测试环境,第一种是基于Vector vTESTstudio的测试环境,如图。

第二种是基于Spirent TTworkbench的测试环境,如图。

  

       以上两种测试仪都是依据TC8的测试标准来运行测试用例,测试流程大体是一致的,但也有区别。区别主要体现在TCP的测试上,在TC8规范里,没有明确规定被测件的状态如何来获取,比如当被测件里的TCP Socket处于ESTABLISHED状态时,Spirent的验证方法是命令被测件发数据或者收数据,若能正常收发,则可以确定被测件的状态。而在vTESTstudio中,是通过一个自定义的命令TcpGetState来直接获取当前Socket状态。而这条命令对于被测件来说,是一条超越规范的命令,虽然在Vector MICROSAR里实现了这条命令,但若是运行其它厂家的软件,却未必支持这条命令,这是小编要提醒广大测试工程师们要注意的。

  1. 我们能做什么?

ETS与Upper Tester作为车载以太网测试的重要工具,是技术创新与品质保障的核心。针对这一体系,我们提供了一站式的集成服务与专业的测试服务,旨在帮助客户轻松配置DaVinci等测试环境,将ETS与Upper Tester无缝融入AUTOSAR CP架构中。通过精细的DaVinci配置方法,我们能够确保测试环境的高效性、准确性与可扩展性,助力客户在快速迭代的产品开发中,持续保持技术领先与品质卓越。

我们可以提供以下五种服务:

  1. 样件TC8网络测试服务;
  2. AUTOSAR CP Upper Tester+ ETS集成;
  3. Linux系统下Upper Tester集成;
  4. 适配vsomeip协议栈的ETS集成;
  5. vTESTstudio或Spirent测试设备集成及测试培训;

无论是对于复杂的网络通信测试,还是针对特定应用场景的功能验证,我们都能提供量身定制的解决方案,满足汽车行业日益增长的测试需求。若您对我们的服务感兴趣,或者还想了解更多关于以太网测试的内容,欢迎私信或者留言!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oklink爬虫逆向分析

目标网站 aHR0cHM6Ly93d3cub2tsaW5rLmNvbS96aC1oYW5zL2tsYXl0bi9ibG9jay1saXN0L3BhZ2UvMg 一、抓包分析 请求头有很多加密参数,不过经过观察,发现只有X-Apikey是检测的 二、逆向分析 发包类型不是XMLHttpRequest,不能下xhr断点 打开启动器…

【项目案例】物联网比较好的10+练手项目推荐,附项目文档/源码/视频

练手项目推荐 1 智能小车 项目功能介绍: 本项目由三部分组成:应用端(微信小程序)、设备端(Hi3861)、驱动端(UPS)。 1. 应用端,采用微信小程序作为应用端控制界面。在开…

spring里面内置的非常实用的工具

一 、请求数据记录 Spring Boot提供了一个内置的日志记录解决方案,通过 AbstractRequestLoggingFilter 可以记录请求的详细信息。 AbstractRequestLoggingFilter 有两个不同的实现类,我们常用的是 CommonsRequestLoggingFilter。 通过 CommonsRequestL…

CSS | 如何来避免 FOUC(无样式内容闪烁)现象的发生?

一、什么是 FOUC(无样式内容闪烁)? ‌FOUC(Flash of Unstyled Content)是指网页在加载过程中,由于CSS样式加载延迟或加载顺序不当,导致页面出现闪烁或呈现出未样式化的内容的现象。‌ 这种现象通常发生在HTML文档已经加载&…

WPF DataGrid 动态修改某一个单元格的样式

WPF DataGrid 动态修改某一个单元格的样式 <DataGrid Name"main_datagrid_display" Width"1267" Height"193" Grid.Column"1"ItemsSource"{Binding DataGridModels}"><DataGrid.Columns><!--ElementStyle 设…

旷视科技ShuffleNetV1代码分析[pytorch版]

一、前述 旷视科技针对于ShuffleNet系列网络在GitHub网站上已开源&#xff0c;其链接&#xff1a;https://github.com/megvii-model/ShuffleNet-Series 在这个系列中&#xff0c;包括了ShuffleNetV1/V2网络&#xff0c;如下图所示。 我们点开ShuffleNetV1文件夹&#xff0…

python爬虫:从12306网站获取火车站信息

代码逻辑 初始化 (init 方法)&#xff1a; 设置请求头信息。设置车站版本号。 同步车站信息 (synchronization 方法)&#xff1a; 发送GET请求获取车站信息。返回服务器响应的文本。 提取信息 (extract 方法)&#xff1a; 从服务器响应中提取车站信息字符串。去掉字符串末尾的…

UML——统一建模语言

序言&#xff1a; 是统一建模语言的简称&#xff0c;它是一种由一整套图表组成的标准化建模语言。UML用于帮助系统开发人员阐明&#xff0c;展示&#xff0c;构建和记录软件系统的产出。UML代表了一系列在大型而复杂系统建模中被证明是成功的做法&#xff0c;是开发面向对象软件…

【计算机基础】用bat命令将Unity导出PC包转成单个exe可执行文件

Unity打包成exe可执行文件 上边连接是很久以前用过的方法&#xff0c;发现操作有些不一样了&#xff0c;并且如果按上述操作比较麻烦&#xff0c;所以写了个bat命令。 图1、导出的pc程序 如图1是导出的pc程序&#xff0c;点击exe文件可运行该程序。 添加pack_project.bat文件 …

el-form中三级动态添加数据

el-form中三级动态添加数据 data数据view按钮触发事件 data数据 submitForm: {id: undefined, //修改IDapp_id: undefined, //IP类型name: , //规则名称sort: undefined, //排序detail: [{keycode: 0,title_one: undefined, //一级标题desc_detail: [{keycode: 0,title_two: u…

LPDDR4芯片学习(一)——基础知识与引脚定义

一、基础知识 01 dram基本存储单元 当需要将一位数据存储到DRAM中时&#xff0c;晶体管会充电或放电电容。充电的电容表示逻辑高&#xff08;1&#xff09;&#xff0c;放电的电容表示逻辑低&#xff08;0&#xff09;。由于电容会随着时间泄漏电荷&#xff0c;因此需要定期刷…

Axure大屏可视化模板:跨领域数据分析平台原型案例

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

PyTorch使用------自动微分模块

目录 &#x1f354; 梯度基本计算 1.1 单标量梯度的计算 1.2 单向量梯度的计算 1.3 多标量梯度计算 1.4 多向量梯度计算 1.5 运行结果&#x1f4af; &#x1f354; 控制梯度计算 2.1 控制不计算梯度 2.2 注意: 累计梯度 2.3 梯度下降优化最优解 2.4 运行结果&#x1…

mybatis 配置文件完成增删改查(五) :单条件 动态sql查询,相当于switch

文章目录 单条件 动态sql查询写测试方法 疑问总结 单条件 动态sql查询 <select id"selectByConditionBySingle" resultMap"brandResultMap">.select *from tb_brandwhere<choose>/*相当于switch*/<when test"status ! null">…

江协科技STM32学习- P17 TIM输入捕获

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

if __name__ == ‘__main__‘: 在 Python 中的作用

Python Python 是一种广泛使用的高级编程语言&#xff0c;它以其易读性和简洁的语法而闻名。Python 支持多种编程范式&#xff0c;包括面向对象、命令式、函数式和过程式编程。它由 Guido van Rossum 创建&#xff0c;并在 1991 年首次发布。 Python 的一些关键特性包括&#…

Python中requests模块(爬虫)基本使用

Python的requests模块是一个非常流行的HTTP库&#xff0c;用于发送HTTP/1.1请求。 一、模块导入 1、requests模块的下载&#xff1a; 使用包管理器下载&#xff0c;在cmd窗口&#xff0c;或者在项目的虚拟环境目录下&#xff1a; pip3 install -i https://pypi.tuna.tsingh…

Chrome开发者工具如何才能看到Vue项目的源码

大家好&#xff0c;我是 程序员码递夫。 今天给大家分享的是 Chrome开发者工具如何才能看到Vue项目的源码。 问题 我们在编写一下Vue项目时&#xff0c;常常要通过 chrome 进行本地调试后&#xff0c;才打包 生产版本。 但有时打开 chrome 的开发者工具后&#xff0c;看到的…

什么是反射,反射用途,spring哪些地方用到了反射,我们项目中哪些地方用到了反射

3分钟搞懂Java反射 一、反射是什么 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的工具&#xff0c;它允许程序在运行时获取和操作类、接口、构造器、方法和字段等。反射是Java语言的一个重要特性&#xff0c;它为开发人员提供了许多灵活性&#xf…

50页PPT麦肯锡精益运营转型五步法

读者朋友大家好&#xff0c;最近有会员朋友咨询晓雯&#xff0c;需要《 50页PPT麦肯锡精益运营转型五步法》资料&#xff0c;欢迎大家下载学习。 知识星球已上传的资料链接&#xff1a; 企业架构 企业架构 (EA) 设计咨询项目-企业架构治理(EAM)现状诊断 105页PPTHW企业架构设…