媒介
关于嵌入式代码,为了测试软件能否在目的芯片上实现预期的功用,凡是需要停止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测试该若何做?