Cantata测试脚本可以在主机环境中编写,再使用目标编译器构建为适配目标板的测试程序。真正影响执行成败的环节不只是脚本本身,还包括部署库、下载方式、启动命令和结果回传通道。处理Cantata怎么执行目标板测试Cantata目标板测试结果回传失败如何排查,需要把构建、下载、运行和结果收集拆开检查。
一、Cantata怎么执行目标板测试
Cantata测试脚本采用C/C++编写,配合目标平台对应的Deployment,可以生成与被测代码二进制兼容的测试程序。测试程序既能运行在模拟器、仿真器上,也能下载到实际目标板执行。
1、准备目标板Deployment
首次在某类目标板上执行测试时,需要建立对应的目标部署配置。不同Cantata版本的菜单位置略有差异,但主要配置内容基本一致。
①打开Cantata的【Deployment】透视图。
②启动【New Deployment】或部署创建向导。
③选择目标编译器及其版本。
④设置处理器架构、字节序和数据模型。
⑤填写编译、汇编和链接参数。
⑥选择目标板支持的输入输出方式。
⑦生成并构建Cantata目标运行库。
Deployment中保存的是与目标环境匹配的运行库和配置选项,包括编译器、芯片架构、内存设置及语言扩展等。目标编译器或处理器参数发生变化时,原来的部署配置也要重新检查。
2、验证目标部署是否可用
正式运行项目测试前,建议先执行Deployment自带的验证测试。
①在【Target Deployment Editor】中打开当前配置。
②检查运行库是否已经成功构建。
③选择部署验证或Snippet Test。
④将验证程序下载到目标板。
⑤启动程序并查看返回内容。
⑥确认部署验证全部通过。
验证测试可以提前发现基础类型长度、编译参数、目标初始化和输出通道不匹配等问题。这里没有跑通,直接执行正式测试脚本,后面出现“无结果”时会很难判断是哪一层出了问题。
3、把Deployment分配给测试项目
①右键单击Cantata测试项目。
②进入【Properties】→【Cantata】。
③找到目标平台或【Deployment】设置。
④选择已经生成的目标部署配置。
⑤确认交叉编译器和构建路径正确。
⑥清理原来的主机版本测试程序。
⑦重新构建目标板测试程序。
同一个测试脚本可以切换到不同目标配置重复使用,但每次切换后都应重新构建。继续使用上一次主机编译留下的目标文件,很容易在链接或运行阶段出现异常。
4、下载并运行测试程序
①在项目中选中需要执行的测试脚本。
②选择目标板对应的运行配置。
③执行【Run on Target】。
④等待交叉编译和链接完成。
⑤通过调试器、烧写工具或脚本下载程序。
⑥复位目标板并启动测试。
⑦等待Cantata收集测试与覆盖率结果。
Cantata可以通过Makefile、测试脚本和Deployment串联构建、下载、执行及结果收集,也可以在命令行和持续集成流程中完成同样的操作。
二、Cantata目标板测试结果回传失败如何排查
目标板没有返回结果,不代表测试程序一定没有执行。排查时要先确定卡在下载、启动、测试执行,还是结果传输阶段,别一开始就反复修改测试用例。
1、确认测试程序是否真正启动
①在测试入口位置设置断点。
②查看目标板是否进入测试程序。
③检查复位向量和启动文件。
④确认看门狗没有提前复位设备。
⑤观察是否发生HardFault或其他异常。
⑥检查程序是否在初始化阶段死循环。
程序下载成功,只能说明镜像已经进入目标存储器。如果目标板复位后仍启动原业务程序,或者在测试入口前崩溃,Cantata自然收不到任何结果。
2、检查结果输出通道
目标板可以通过文件、串口、半主机、调试器内存或自定义通信接口回传结果,具体方式由Deployment配置决定。测试功能结果和覆盖率数据通常会先在目标端生成,再传回主机完成诊断与报告。
①打开当前【Target Deployment Editor】。
②查看结果输出方式及目标路径。
③核对串口号、波特率或通信端口。
④确认主机端接收程序已经启动。
⑤检查结果文件目录是否存在。
⑥确认目标端具备对应的读写能力。
例如Deployment配置为文件输出,但目标板没有文件系统,或者目录尚未挂载,测试可能已经执行完,却无法写出结果。此时应改用串口、调试器内存或项目现有通信接口。
3、检查缓存和程序结束流程
使用标准输出或文件输出时,数据可能暂存在缓冲区中。测试程序异常退出、一直停在循环里,或者复位过早,都会造成最后一部分结果没有写出。
①确认测试主函数能够正常执行结束。
②检查结果输出后是否调用刷新或关闭操作。
③暂时关闭输出缓冲进行验证。
④延长目标复位前的等待时间。
⑤检查下载脚本是否运行结束后立即复位。
能收到开头信息,却没有最终汇总和覆盖率数据,通常要重点看程序退出与缓存刷新过程。
4、检查目标板资源是否不足
加入测试框架、Wrapper和覆盖率插桩后,程序占用的Flash、RAM、栈和堆都会增加。
①查看链接器生成的内存映射文件。
②核对测试程序的代码与数据大小。
③检查测试任务的栈空间。
④减少一次执行的测试用例数量。
⑤暂时关闭覆盖率进行对比。
⑥重新运行最小测试脚本。
关闭覆盖率后能够回传,重新启用后失败,往往说明覆盖率缓冲区或插桩代码带来了额外资源压力。可以拆分脚本、调整存储区域,或者采用延后处理覆盖率数据的方式。
三、目标板结果回传怎么进一步定位
复杂项目中,测试程序、调试器和通信脚本往往由不同工具控制。建立一个最小闭环,比直接拿完整测试集反复尝试更容易找到问题。
1、分阶段执行最小验证
①准备只包含一个简单测试用例的脚本。
②关闭暂时不需要的覆盖率和Wrapper。
③单独构建目标测试程序。
④手动下载并启动程序。
⑤直接观察目标输出内容。
⑥确认结果文件或数据能够传回主机。
⑦再逐项恢复正式配置。
最小脚本可以回传,说明Deployment和基础通信链路基本正常,接下来重点检查正式脚本的资源占用和执行路径;最小脚本也没有结果,则应回到部署验证、启动流程和输出接口继续排查。
2、保留四个阶段的日志
构建日志用于确认编译链接是否成功,下载日志用于确认镜像写入位置,目标运行日志用于查看异常和复位,主机接收日志则用于判断是否收到完整结果。
每次调整后只改变一个条件,并记录使用的Deployment、目标固件和测试脚本版本。否则编译参数、目标板程序和结果文件混在不同批次里,很容易把旧结果当成本次测试结果。
总结
处理Cantata怎么执行目标板测试Cantata目标板测试结果回传失败如何排查,关键是建立与目标环境匹配的Deployment,并逐段确认测试程序完成了构建、下载、启动和结果输出。回传失败时,优先检查程序是否真正运行、输出通道是否匹配以及目标资源是否足够,再通过最小脚本缩小范围。希望本文能为大家执行Cantata目标板测试和排查结果回传问题提供参考,如需进一步了解相关内容,可联系咨询。