0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PiL测试实战(上)| 单元级代码的PiL测试

北汇信息POLELINK 2022-11-22 10:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


作者:酷兔本兔小编:吃不饱
对于嵌入式代码,为了测试软件能否在目标芯片上实现预期的功能,通常需要进行PiL测试(Processor-in-the-Loop-Testing)。目前市面上较为常见的嵌入式软件调试工具有PLS UDE和LAUTERBACH Trace32等。UDE和Trace32可以很好的完成软件调试的工作,当然,我们也可以通过将TPT(基于模型的自动化测试工具,可覆盖MiL到ViL全阶段的测试)和这些调试工具进行集成,更高效、快捷的实施PiL阶段的自动化测试。

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

2d45b574-6857-11ed-b116-dac502259ad0.gif2d58b570-6857-11ed-b116-dac502259ad0.png2d45b574-6857-11ed-b116-dac502259ad0.gif图1 TPT与调试器集成
01测试准备
本次被测代码是基于模型开发的单元级软件,将模型转成代码后编译成elf文件刷写到目标板进行测试。涉及到的测试环境及版本信息如下:
①测试工程:MiL阶段搭建的单元测试工程(TPT工程可完全复用)②测试工具:TPT + PLS UDE③调试器:PLS UAD2Next④目标板:Infineon TC233LP其中目标板和UAD之间使用JTAG口通讯,UAD和PC端通过USB进行连接。2d45b574-6857-11ed-b116-dac502259ad0.gif2d974e7a-6857-11ed-b116-dac502259ad0.png2d45b574-6857-11ed-b116-dac502259ad0.gif图2 硬件连接

首先我们需要搭建一个可以正常运行的UDE工程,以便于后面通过TPT调用进行PiL测试。

2d45b574-6857-11ed-b116-dac502259ad0.gif2eb68348-6857-11ed-b116-dac502259ad0.png
2d45b574-6857-11ed-b116-dac502259ad0.gif图3 搭建的UDE工程
02配置测试环境
在PiL测试过程中,TPT需要将测试用例数据发送到UDE,并读取UDE从目标板读到的输出信号数据进行评估。因此,我们需要搭建测试环境将TPT和UDE链接起来。为方便测试环境的搭建,TPT提供了能满足各阶段测试的测试平台,这里我们需要配置一个PLS UDE Platform。2d45b574-6857-11ed-b116-dac502259ad0.gif2f0d34f4-6857-11ed-b116-dac502259ad0.png2d45b574-6857-11ed-b116-dac502259ad0.gif图4 TPT PLS UDE Platform
设置用例运行步长(和MiL保持一致)及用例最大运行时间加载搭建好的UDE工程加载被测的elf文件选择源代码所在文件夹设置断点设置信号读/写动作03设置断点
为方便对代码中的变量进行读/写操作,需要在程序中设置一些断点。这里我们可以在TPT端直接进行断点的设置,TPT会将断点信息发送至UDE。TPT可以支持诸如普通断点(指定断点位置)、条件断点等类型,并支持多控制器、多核断点的设置。

一般来说,我们只需要设置两个简单的断点即可满足单元级别软件的测试。通过指定代码行,我们定义了如下所示的两个断点:

①程序入口(step_in):进入Step函数时的断点,用于Write;②程序出口(step_out):跳出Step函数时的断点,用于Read2d45b574-6857-11ed-b116-dac502259ad0.gif2f639970-6857-11ed-b116-dac502259ad0.png2d45b574-6857-11ed-b116-dac502259ad0.gif图5 设置断点

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

2d45b574-6857-11ed-b116-dac502259ad0.gif308edf80-6857-11ed-b116-dac502259ad0.png
2d45b574-6857-11ed-b116-dac502259ad0.gif图6 断点循环过程


2d45b574-6857-11ed-b116-dac502259ad0.gif30b5e922-6857-11ed-b116-dac502259ad0.png
2d45b574-6857-11ed-b116-dac502259ad0.gif图7 TPT中设置断点循环动作

04设置信号读/写动作
设置好断点之后,我们需要在TPT中设置输入/输出信号的动作。这里我们在断点step_in的位置把输入信号设置为write,在断点step_out的位置把输出信号设置为read。设置好后,TPT即可把测试用例信息在断点step_in灌入目标板,当step函数运行完成后在断点step_out把输出信号回采进行评估。2d45b574-6857-11ed-b116-dac502259ad0.gif30e1a4d6-6857-11ed-b116-dac502259ad0.png2d45b574-6857-11ed-b116-dac502259ad0.gif图8 TPT中设置信号动作
05MiL/SiL测试工程的快速复用

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

2d45b574-6857-11ed-b116-dac502259ad0.gif30fe728c-6857-11ed-b116-dac502259ad0.png
2d45b574-6857-11ed-b116-dac502259ad0.gif图9 TPT中信号mapping

做完这些配置工作之后,我们即可运行测试工程,完成PiL测试,并生成相应的PiL测试报告。

2d45b574-6857-11ed-b116-dac502259ad0.gif3142d4fe-6857-11ed-b116-dac502259ad0.png2d45b574-6857-11ed-b116-dac502259ad0.gif图10 测试执行
通过对该单元级代码的测试,不难发现,TPT在实现不同测试阶段的测试工程复用方面有着巨大的优势——单元级软件测试可实现同一测试工程覆盖MiL/SiL/PiL所有阶段,这无疑大大降低了我们的测试成本和周期。并且TPT在复杂测试用例信号编写、复杂场景评估、创建回归测试、实现自动化测试等方面都有着很大的优势。敬请期待下篇:带有Plant Model的PiL测试该如何做?

316e2280-6857-11ed-b116-dac502259ad0.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    6039

    浏览量

    130737
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    肖克利 | 极端环境测试,让验证与实战同频!

    直击新能源车企核心痛点极端环境测试,让验证与实战同频新能源汽车测试标准正加速升级,极端环境验证已成核心竞争力。肖克利高低温试验箱以实战测试
    的头像 发表于 12-05 12:04 1017次阅读
    肖克利 | 极端环境<b class='flag-5'>测试</b>,让验证与<b class='flag-5'>实战</b>同频!

    嵌入软件单元测试的全面研究与实践

    作为软件开发过程中最早进行的测试活动,能够有效隔离代码片段,验证其功能是否符合设计预期,从而在早期阶段发现潜在缺陷,提升代码质量。本文将系统探讨嵌入软件单元测试的标准流程、方法论、工具
    的头像 发表于 12-01 14:31 207次阅读

    边聊安全 | 软件单元测试的设计方法

    上海磐时PANSHI“磐时,做汽车企业的安全智库”软件单元测试的设计方法写在前面:软件单元测试的设计是一个系统化的过程,旨在验证代码的最小可测试部分(通常是函数或方法)是否按预期工作。
    的头像 发表于 09-05 16:18 4435次阅读
    边聊安全 | 软件<b class='flag-5'>单元测试</b>的设计方法

    HarmonyOSAI编程单元测试用例

    根据选中的ArkTS方法名称,CodeGenie支持自动生成对应单元测试用例,提升测试覆盖率。 在ArkTS文档中,光标放置于方法名称或框选完整的待测试方法
    发表于 08-27 14:33

    迅为RK3568开发板模型推理测试实战LPRNet 车牌识别

    迅为RK3568开发板模型推理测试实战LPRNet 车牌识别
    的头像 发表于 08-25 14:55 1074次阅读
    迅为RK3568开发板模型推理<b class='flag-5'>测试</b><b class='flag-5'>实战</b>LPRNet 车牌识别

    HarmonyOS AI辅助编程工具(CodeGenie)代码测试

    放置于方法名称或框选完整的待测试方法代码块,右键选择CodeGenie > Generate UT,开始生成单元测试用例。 说明 最多支持解读20000字符以内的
    发表于 07-14 17:33

    老文章新视角:从静态测试到CI/CT生态的进化

    的生态系统,而以PiL/HiL为核心的持续测试(CT)是这一生态的底层支柱。这一进化不仅需要工具供应商的开放协作,更需要主机厂与Tier1重构研发流程,将CI/CT从“
    的头像 发表于 05-26 10:50 1456次阅读
    老文章新视角:从静态<b class='flag-5'>测试</b>到CI/CT生态的进化

    新能源车软件单元测试深度解析:自动驾驶系统视角

    )的双重标准。以制动控制模块为例,其单元测试需实现: ‌ ASIL等级分解: ‌将系统需求拆解到软件单元,确保每个模块的故障覆盖率达标。 ‌ SOTIF场景库: ‌构建包含数万个长尾场景(如突然闯入的动物
    发表于 05-12 15:59

    新能源车背后的隐形守护者:软件单元测试的生死较量‌

    。这个教科书的避让动作背后,是超过8000万行代码的精密协作,而确保这些代码绝对可靠的秘密武器,正是我们今天要揭秘的软件单元测试。 ‌一、代码
    的头像 发表于 05-12 11:00 440次阅读

    单元测试在嵌入式软件中的关键作用及winAMS工具的卓越贡献

    1. 单元测试概述 ‌定义与核心目标‌ 单元测试是软件开发过程中针对程序模块(如函数、类或组件)的最小可测试单元进行的验证活动。其核心目标在于隔离
    的头像 发表于 04-11 14:31 765次阅读

    求助,关于NXP S32K3xx硬件板的SIL测试问题求解

    我们在尝试使用 恩智浦 S32K3xx 硬件板为我们的模型创建 SIL 测试框架时遇到问题。错误消息“错误:模型配置为创建 SIL 模块,所选硬件板不支持该模块。要解决此问题,请在“配置参数”对话框
    发表于 04-01 08:15

    模型测试全流程实战沙盘,赋能CI/CD及SiL测试 ——TPT Workshop邀请函

    北汇信息将于4月18日在上海市闵行区虹桥镇紫秀路100号4幢3C室举办为期1天的“模型测试全流程实战沙盘,赋能CI/CD及SiL测试”相关内容的交流探讨,诚邀各位新老客户朋友参加!
    的头像 发表于 03-26 15:44 522次阅读
    模型<b class='flag-5'>测试</b>全流程<b class='flag-5'>实战</b>沙盘,赋能CI/CD及SiL<b class='flag-5'>测试</b> ——TPT Workshop邀请函

    嵌入式软件测试实战洞察:从代码漏洞到安全屏障

    在新能源汽车电控系统开发中,某工程师团队曾遭遇一个棘手问题:车辆在-30℃低温测试时,电池管理系统的SOC(电量状态)计算值突然跳变,导致整车仪表盘电量显示异常。经排查发现,问题源于代码中一段浮点数
    的头像 发表于 02-28 13:09 633次阅读

    EE-141:ADSP-2106x和ADSP-2116x系列DSP的基准测试C代码

    电子发烧友网站提供《EE-141:ADSP-2106x和ADSP-2116x系列DSP的基准测试C代码.pdf》资料免费下载
    发表于 01-07 14:25 0次下载
    EE-141:ADSP-2106x和ADSP-2116x系列DSP<b class='flag-5'>上</b>的基准<b class='flag-5'>测试</b>C<b class='flag-5'>代码</b>

    芯片极限能力、封装成品及系统测试

    本文介绍了芯片极限能力、封装成品及系统测试。 本文将介绍芯片极限能力、封装成品及系统测试,分述如下: 极限能力测试 封装成品
    的头像 发表于 12-24 11:25 1746次阅读