测试程序已经编译通过,下载到板卡却无法启动;换了部署配置,执行时又像是跑了旧程序。遇到这些情况,要把构建、下载、启动和结果回传分别核对。Cantata的目标部署包含配套的库和配置选项,编译器路径正确,只解决了其中一部分。真正需要对齐的是:本次生成了什么程序,由哪套脚本加载,又在哪个环境中执行。
一、Cantata如何配置目标平台编译与执行环境
配置前,应准备好原工程能够正常使用的工具链、链接文件及调试启动方式。下面以Eclipse版Cantata为例说明;不同工具链的部署编辑项有所区别,不能直接套用另一块板卡的完整配置。
1、选择与实际工具链匹配的目标部署
已有部署可以作为起点,但需要核对处理器、编译器版本、操作系统以及关键编译选项。例如,同属ARM平台,也可能因浮点调用约定不同,导致测试代码与Cantata库无法正确配合。
新平台可通过部署向导建立配置,再使用部署编辑器完善。内置资源提供的是参考设置,选择后仍要与当前工具链逐项对应。
①在目标部署编辑器中点击【Deployment Resources】,展开对应的工具链及处理器分支。
②选择与当前环境相符的资源条目,结合实际平台完善部署配置。
2、接入工程参数,并安排执行和回传方式
测试工程应沿用被测代码需要的头文件路径、宏定义和编译参数。Cantata支持导入多种非Eclipse构建系统的信息,但导入完成后,仍应对照实际编译命令核验,尤其要留意不同产品配置下的条件编译分支。
①右键测试工程,点击【Properties】,进入【C/C++General】→【Paths and Symbols】。
②选择【Includes】、【Symbols】,核对导入的头文件目录及宏定义。
随后配置目标部署所需的编译、链接、下载和运行命令。执行端还要确定使用模拟器还是真实板卡,以及结果通过什么通道返回主机。不要默认目标端具备本机文件系统,回传方式应与实际调试或通信机制配套。
二、Cantata目标平台构建与执行配置不一致如何核查
排查时从本次运行的实际命令入手。配置名称可以相同,背后调用的工具、文件目录或板卡连接却可能不同。先找到差异发生的环节,再修改相应设置。
1、检查构建实际调用了哪套工具
电脑上同时装有多套编译器时,脚本中的程序名可能被PATH解析到另一处。界面显示的工具链名称,也不能代替命令行中的真实路径。
应比较编译器位置、目标架构参数、预处理宏和链接库来源。遇到不支持的指令或二进制格式错误,再结合输出文件确认目标架构,避免只凭报错文字判断。
①点击【Window】→【Show View】→【Console】,选择本次测试构建对应的控制台。
②点击【Properties】中的【Paths and Symbols】,选择【Includes】、【Symbols】,对照日志检查工程设置。
2、确认执行脚本加载的是本次产物
构建输出在新目录,下载脚本却还指向旧目录,是需要重点排查的一种情况。文件名没变,很容易忽略路径差异。应将链接输出位置与加载命令逐字对照,必要时比较文件时间或校验值。
①点击【File】→【Open File】,打开当前使用的下载、启动脚本。
②选择【Console】中的对应执行输出,核对加载文件的完整路径。
如果文件已经正确加载,却在进入测试前退出,还要检查启动代码、链接地址、复位流程和内存初始化。能连接调试器,不代表测试程序已经按预期启动。
3、区分没有执行与没有收到结果
主机迟迟没有结果,可能是程序尚未运行到测试入口,也可能是测试已经结束,输出却没有传回来。两种情况的处理方向不同,反复增加等待时间未必有效。
可以借助目标调试器确认测试入口是否到达,再检查输出通道、保存位置及回收脚本。切换运行环境后,原来依赖的文件输出或调试通信方式也应重新验证。
①在【Console】中切换到下载及执行阶段的输出,查看停止位置。
②点击【File】→【Open File】,打开结果回收脚本,核对其读取位置与目标端输出方式。
三、环境调整后怎样确认配置已经一致
修改路径后一次运行成功,还不足以说明整个部署可靠。应先验证基础部署,再检查业务测试,避免把环境问题与被测代码问题混在一起。
1、运行目标部署对应的验证测试
Cantata提供目标平台相关的部署验证测试,用于检查部署是否适合当前环境。更换编译器、运行库或执行方式后,应按相应版本的部署流程重新验证。
部署验证尚未通过时,不宜用业务用例的失败结果推断产品缺陷。反过来,部署验证通过,也不能代替业务代码自身的测试。
①打开目标部署编辑器,选择本次修订的部署配置。
②完成相应部署验证流程后,选择【Console】,检查构建、执行及回传阶段的输出。
2、切换平台后重新构建测试产物
主机测试与目标板测试可以复用部分测试脚本,但各自需要匹配的平台库和配置。切换平台后,应避免继续链接旧目标文件,也要确认执行脚本同步指向新的产物。
①点击【Project】→【Clean】,选择需要清理的测试工程。
②选择该工程,点击【Project】→【Build Project】,通过工程已配置的构建流程重新生成产物。
清理后仍应查看实际构建输出。若采用外部Makefile或独立脚本,需确认清理操作确实覆盖了对应的目标文件目录。
总结
目标平台问题常常出在几个环节的交接处:编译使用了一套配置,加载沿用了另一条路径,结果回收又保留着旧设置。把这些信息放到同一次测试记录中核对,比反复尝试不同选项更容易找到原因。环境稳定后,也应将部署文件、构建脚本和执行脚本一起管理,方便更换机器或平台时复现。希望这些检查思路能帮到大家;如有相关需求,欢迎联系交流。