在嵌入式行业,为了测试硬件是否能满足程序的正常运行以及是否实现相应的功能,通常需要PIL测试(Processor-in-the-Loop-Testing)来验证。 PIL测试是汽车行业嵌入式软件开发过程中的一个阶段测试,从模型的开发开始,被测系统(SUT)依次将经历MIL、SIL、PIL、HIL以及实车测试。
德国PikeTec公司提供的嵌入式系统测试工具TPT可以与PLS公司的调试软件UDE(Universal Debug Engine)集成来提供PIL测试功能。那么PIL测试是什么概念呢?基于TPT又是如何进行PIL测试的呢?
PIL测试(Processor-in-the-Loop-Testing)
PIL测试发生在SIL测试之后,在HIL测试之前。类似于SIL测试,PIL测试为了验证软件代码在仿真的非实时控制系统中的正确性。此情况下,程序是在实际的嵌入式处理器或指令集仿真器上执行的。因此,可以通过PIL测试来验证嵌入式对象代码的功能行为。
通过PIL测试,不仅可以评估不同的硬件、编译器组合情况下处理数据的方式有何区别,还可以测试模型环境无法测试出的一些行为(如硬件优化代码的使用)。同时也可以读写程序中的变量,获取输入控制流。PIL测试原理图如图1所示。
基于TPT的PIL测试可以测试什么?
TPT通过 PLS UDE作为媒介工具来自动测试硬件处理器上的软件代码。
支持多种处理器的测试以及调试
AURIX Tricore, Power Architecture, Cortex, ARM, XE166/XC2000, XScale, SH-2A, C166, XilinX SoCs, Freescale MPC family和更多其他处理器以及同样支持多核处理器。
支持直接访问多种变量和数据类型
可以访问目标变量(以符号和地址为主)
可以访问函数的局部变量
可以访问数据位和寄存器
可以访问多维数组、结构体、曲线
支持的控制流
TPT需要与UDE中设置断点同步
支持独立的功能和代码测试
可以直接访问控制流
可以调用及使用宏变量
支持多核目标处理
基于TPT的PIL测试案例
在编译器中编译需要测试的软件代码,生成elf文件(或者其他类型可执行文件),在UDE中导入elf文件,可根据需要设置几个断点,可进行调试工作,如图2所示。
在TPT的FUSION平台中新建PLS UDE节点,导入UDE工程文件,设置与UDE中一致的断点,以及可以对变量进行读写设置,如图3所示。
写好测试用例,并添加评估条件后执行测试。执行测试过程中可以看到UDE界面调试过程,同时在TPT执行界面可以看到声明的变量,定义的断点,参数初始化,调试过程中读写变量的值等信息,这些调试的过程与之前Configure PLS UDE中的配置相对应,如图4所示。