PiL测试实战(上)| 模型生成代码的单元级PiL测试:测试准备 | 配置测试环境 | 设置断点 | 设置信号读/写动作 | MiL/SiL测试工程的快速复用

本文主要是介绍PiL测试实战(上)| 模型生成代码的单元级PiL测试:测试准备 | 配置测试环境 | 设置断点 | 设置信号读/写动作 | MiL/SiL测试工程的快速复用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

对于嵌入式代码,为了测试软件能否在目标芯片上实现预期的功能,通常需要进行PiL测试(Processor-in-the-Loop-Testing)。

目前市面上较为常见的嵌入式软件调试工具有PLS UDE和LAUTERBACH Trace32等。UDE和Trace32可以很好的完成软件调试的工作,当然,我们也可以通过将TPT(基于模型的自动化测试工具,可覆盖MiL到ViL全阶段的测试)和这些调试工具进行集成,更高效、快捷的实施PiL阶段的自动化测试。

通过TPT我们可以很方便的实现MiL/SiL的测试工程在PiL阶段的完全复用。下面,我将以lights_control(车灯控制)模型生成的代码为例,为大家演示如何基于TPT进行单元级代码的PiL测试。
在这里插入图片描述

图1 TPT与调试器集成

测试准备

本次被测代码是基于模型开发的单元级软件,将模型转成代码后编译成elf文件刷写到目标板进行测试。涉及到的测试环境及版本信息如下:
① 测试工程:MiL阶段搭建的单元测试工程(TPT工程可完全复用)
② 测试工具:TPT + PLS UDE
③ 调试器:PLS UAD2Next
④ 目标板:Infineon TC233LP

其中目标板和UAD之间使用JTAG口通讯,UAD和PC端通过USB进行连接。
在这里插入图片描述

图2 硬件连接

首先我们需要搭建一个可以正常运行的UDE工程,以便于后面通过TPT调用进行PiL测试。
在这里插入图片描述

图3 搭建的UDE工程

配置测试环境

在PiL测试过程中,TPT需要将测试用例数据发送到UDE,并读取UDE从目标板读到的输出信号数据进行评估。因此,我们需要搭建测试环境将TPT和UDE链接起来。为方便测试环境的搭建,TPT提供了能满足各阶段测试的测试平台,这里我们需要配置一个PLS UDE Platform。
在这里插入图片描述

图4 TPT PLS UDE Platform

① 设置用例运行步长(和MiL保持一致)及用例最大运行时间
② 加载搭建好的UDE工程
③ 加载被测的elf文件
④ 选择源代码所在文件夹
⑤ 设置断点
⑥ 设置信号读/写动作

设置断点

为方便对代码中的变量进行读/写操作,需要在程序中设置一些断点。这里我们可以在TPT端直接进行断点的设置,TPT会将断点信息发送至UDE。TPT可以支持诸如普通断点(指定断点位置)、条件断点等类型,并支持多控制器、多核断点的设置。

一般来说,我们只需要设置两个简单的断点即可满足单元级别软件的测试。通过指定代码行,我们定义了如下所示的两个断点:
① 程序入口(step_in):进入Step函数时的断点,用于Write;
② 程序出口(step_out):跳出Step函数时的断点,用于Read。
在这里插入图片描述

图5 设置断点

为了让程序能够持续运行以便于我们能持续给入连续变化的信号,我们需要在TPT中设置一个断点的循环,防止程序在断点的位置停止。
在这里插入图片描述

图6 断点循环过程

在这里插入图片描述

图7 TPT中设置断点循环动作

设置信号读/写动作

设置好断点之后,我们需要在TPT中设置输入/输出信号的动作。这里我们在断点step_in的位置把输入信号设置为write,在断点step_out的位置把输出信号设置为read。设置好后,TPT即可把测试用例信息在断点step_in灌入目标板,当step函数运行完成后在断点step_out把输出信号回采进行评估。
在这里插入图片描述

图8 TPT中设置信号动作

MiL/SiL测试工程的快速复用

由于我们在MiL/SiL阶段已经完成了对测试工程的搭建,得益于TPT提供的信号mapping的功能,我们只需要对信号做简单的mapping即可实现测试工程的完全复用。
在这里插入图片描述

图9 TPT中信号mapping

做完这些配置工作之后,我们即可运行测试工程,完成PiL测试,并生成相应的PiL测试报告。
在这里插入图片描述

图10 测试执行

通过对该单元级代码的测试,不难发现,TPT在实现不同测试阶段的测试工程复用方面有着巨大的优势——单元级软件测试可实现同一测试工程覆盖MiL/SiL/PiL所有阶段,这无疑大大降低了我们的测试成本和周期。并且TPT在复杂测试用例信号编写、复杂场景评估、创建回归测试、实现自动化测试等方面都有着很大的优势。

敬请期待下篇:带有Plant Model的PiL测试该如何做?

在这里插入图片描述


喜欢本篇文章的话记得💬评论💖点赞⭐收藏
➕更多技术文章直播课程,敬请持续关注北汇信息➕
⬇️业务咨询请私信北汇信息或在官网留言⬇️
📩📩📩

这篇关于PiL测试实战(上)| 模型生成代码的单元级PiL测试:测试准备 | 配置测试环境 | 设置断点 | 设置信号读/写动作 | MiL/SiL测试工程的快速复用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713113

相关文章

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可