支持概要
支持的编译器
有关支持的 EWARM(Embedded Workbench for ARM)编译器/环境版本的信息,请参阅编译器。
导入 EWARM 项目
您可以使用 cpptesttrace
工具导入 EWARM 项目。更多信息请参阅使用 IAR Embedded Workbench 支持进行项目导入。
支持组件
为便于测试 IAR Embedded Workbench 项目,提供以下组件:
- 支持的特定 ARM IAR 编译器版本的编译器配置(在上文列出)。
- “使用 IAR Embedded Workbench 项目中的选项”选项源。
- “导入 IAR Embedded Workbench 项目”导入器 GUI。
CLI/批处理模式导入器:“-ewp”选项 +“settings”属性:“ewp.import.config”、“ewp.import.linked”、“ewp.import.location”、“ewp.import.subdirs”、“ewp.import.pathvar.enabled”、“ewp.import.pathvar.name”、“ewp.import.pathvar.value”。
- “IAR_iccarm.mk”运行时库构建配置文件,用于使用 'make' 通过从 v. 6.1x 开始的 IAR ARM 编译器版本构建 C++test·运行时库。
- 为在 C-SPY 模拟器上启动单元和应用程序测试准备的测试配置:
- Run IAR EW Tests (Batch Template) - 使用 EW 生成的批处理脚本('.cspy.bat')启动模拟器。
- Run IAR EW Application with Mem Monitoring (Batch Template) - 使用 EW 生成的批处理脚本('.cspy.bat')启动模拟器。
- Run IAR ARM Tests - 纯手动模拟器配置。
- Run IAR ARM Application with Mem Monitoring - 纯手动模拟器配置。
已知局限性
- 源自旧 EW 版本或通过其他方式生成的项目文件中可能缺少一些选项描述。如果这种情况发生在使用基于 GUI 的 EW 项目导入器时,C++test 将认为相应的编译器/链接器选项不存在,并依赖于工具默认值。这可能与 EW 为缺少描述的选项提供内部默认值的方法相冲突。
- 基于 C++test GUI 的 EW 项目导入器不支持以下 IAR EW 项目(.ewp)设置:
- 常规选项> 库配置> CMSIS> DSP设置会被忽略(针对链接器选项)。
解决方法:在 Parasoft> C++test> 构建设置> 链接器选项中手动追加相应的库 - 常规选项> 目标> FPU设置会被忽略。
解决方法:在项目属性> Parasoft> C++test> 构建设置> 编译器选项中手动添加相应的--fpu
选项。 - 链接器> 列表> 生成链接器映射文件设置会被忽略。
解决方法:在项目属性> Parasoft> C++test> 构建设置> 链接器选项中手动添加相应的--map
选项。 .no_neon-
指定的核心名称不提供给 Cortex-Ax 核心的--cpu
选项,不受常规选项> 目标> FPU 设置的影响。
解决方法:在项目属性> Parasoft> C++test> 构建设置中将使用 IAR Embedded Workbench 项目中的选项模式切换到手动指定所有选项并手动调整所有选项。
- 常规选项> 库配置> CMSIS> DSP设置会被忽略(针对链接器选项)。
由于某些 IAR ARM 编译器版本附带的预处理器的限制,C++test 不接受 IAR ARM 编译器 v. 7.2x 及更早版本的以下代码:
#define MHZ *1000000l #define FREQ (1MHZ) void foo(long freq); void bar(void) { foo(FREQ); }
解决方法:应在
1
和MHZ
之间插入空格:#define FREQ (1 MHZ)
- C++test 不支持
__nounwind
关键字,因为异常在捕获后会重新抛出。如果您的程序包含__nounwind,
将以下宏添加到项目属性> Parasoft> C++test> 构建设置的编译器选项中:-DCPPTEST_COLLECT_STACK_TRACE=0
- C++test 不能正确重构 C 语言中的多字节字符。
IAR EW Build System(和 'iarbuild' 命令行工具)会在 EWP 项目中定义的每个包含路径的末尾添加 '\' 字符(反斜杠)。这在扫描/跟踪这些构建后反映在 BDF 中。
C++test 引用包含路径选项,因此它必须转义反斜杠以防止转义结束的引号。由于一个与 iccarm 相关的错误,当一个路径选项包含任何空格以及结尾的双反斜杠序列时,即使用引号括起来,它也不会被解释为一个单独的选项。
有两种解决方法:在无空格路径上安装 IAR EW,防止包含路径中出现空格。
对 BDF 进行后处理,从路径选项中删除任何结尾反斜杠,或者转义其中的所有空格。