Arm Compiler for Embedded 6.20 特性解析与应用指南
1. Arm Compiler for Embedded 6.20 版本概述Arm Compiler for Embedded 6.20 是 Arm 公司于 2023 年 3 月 15 日发布的嵌入式 C/C 编译工具链版本。作为一款专为裸机软件、固件和实时操作系统RTOS应用开发设计的工具链它提供了对 Arm 架构最新特性的支持。需要注意的是这个版本已被后续版本取代成为遗留版本且未通过功能安全开发认证。提示如果您的项目涉及长期维护或功能安全要求如 EN 50128、IEC 61508、IEC 62304 和 ISO 26262 等标准建议考虑使用 Arm Compiler for Embedded FuSa 的长期支持LTS版本。这个版本的工具链包含以下核心组件armclang基于 LLVM 和 Clang 技术的编译器和集成汇编器armar用于收集 ELF 目标文件的归档工具armlink将对象和库文件组合成可执行文件的链接器fromelf镜像转换工具和反汇编器armasm仅支持旧版 Arm 架构的遗留汇编器新项目建议使用 armclang 集成汇编器2. 主要特性与架构支持2.1 新增架构与处理器支持Arm Compiler for Embedded 6.20 引入了对以下架构和处理器的重要支持架构支持Armv9.4-AArmv8.9-A保留对 Armv9-A 至 Armv9.3-A 的完整支持保留对 Armv8-A 至 Armv8.8-A 的完整支持处理器支持Neoverse V2 处理器Cortex-X3、X2 等最新 Cortex 系列Cortex-A715、A710、A510 等高效能核心2.2 新增主机操作系统支持工具链现在支持以下新增主机平台Red Hat Enterprise Linux 9Ubuntu 22.04 LTSWindows Server 2022Windows 11注意Ubuntu 18.04 LTS 的支持将在下一版本中移除建议用户提前规划迁移。3. 安装与集成指南3.1 系统要求Arm Compiler for Embedded 6.20 支持以下主机架构和操作系统组合主机架构操作系统使用场景x86_64RHEL 7/8/9, Ubuntu 18.04/20.04/22.04独立安装或集成到 Arm Development Studiox86_64Windows Server 2019/2022, Windows 10/11独立安装或集成到 Arm Development Studio/Keil MDKAArch64Ubuntu 20.04 LTS仅支持独立安装3.2 安装方式根据您的使用场景可以选择以下安装方式集成到 Arm Development Studio安装到任意目录避免选择 Arm Development Studio 安装目录按照 Arm Development Studio 入门指南中的注册编译器工具链部分配置项目集成到 Keil MDK推荐安装路径Keil MDK 安装目录下的 ARM 子目录如 C:\Keil_v5\ARM\ARMCompiler6.20按照 µVision 用户指南中的管理 Arm 编译器版本部分配置项目独立安装下载对应平台的安装包运行安装程序并遵循提示配置环境变量和许可证4. 重要变更与功能更新4.1 架构特性支持变更6.20 版本对以下架构特性支持级别进行了调整AArch32 状态FEAT_CLRBHB清除分支历史屏障指令从 Beta 升级为完全支持AArch64 状态新增对 FEAT_CHK、FEAT_CSSC、FEAT_D128 等特性的 Alpha/Beta 支持FEAT_CLRBHB 从 Beta 升级为完全支持专业建议使用 -marcharmv9.4-a 或 -marcharmv8.9-a 编译时这些特性将默认启用。4.2 编译器改进新增 -ffp-contract 选项用于控制浮点表达式收缩行为默认 C 语言模式变更从 gnu14 升级为 gnu17内存标记清理器改进现在需要使用 -fsanitizememtag-heap,memtag-stack 启用C17 标准库支持新增 memory_resource 头文件支持4.3 缺陷修复版本 6.20 包含了多项重要修复编译器修复修复了 MVE 目标循环代码生成问题SDCOMP-62575修正了浮点表达式收缩的默认行为SDCOMP-62463修复了调试信息中位字段的错误SDCOMP-62330链接器修复修正了 ELF 程序头中 p_memsz 字段的计算SDCOMP-62251修复了 C 异常与内存标记清理器同时使用时的警告问题SDCOMP-62415fromelf 工具修复修复了处理未命名数据地址时的崩溃问题SDCOMP-62644改进了 LE/LETP 指令标签操作数的反汇编显示SDCOMP-622175. 使用建议与注意事项5.1 版本选择考量长期支持需求6.20 版本不是长期支持LTS版本对于需要长期维护的项目建议使用 Arm Compiler for Embedded FuSa功能安全需求此版本未通过安全认证涉及功能安全的项目必须使用 FuSa 版本5.2 迁移建议从 Arm Compiler 5 迁移参考随附的《迁移与兼容性指南》特别注意语法差异和内置函数变更从早期 6.x 版本升级检查已弃用功能的替代方案验证关键优化行为的变更5.3 性能优化技巧针对 Neoverse V2 优化# 启用加密扩展 --targetaarch64-arm-none-eabi -mcpuneoverse-v2crypto # 不启用加密扩展 --targetaarch64-arm-none-eabi -mcpuneoverse-v2浮点优化使用 -ffp-modefull 启用完整浮点功能通过 -ffp-contract 精细控制浮点表达式收缩调试建议使用 -gdwarf-4 生成兼容性更好的调试信息对于复杂项目考虑使用 LTO链接时优化6. 问题排查与支持6.1 常见问题解决许可证问题确保使用最新版本的 FlexNet Publisher 许可证服务器检查防火墙设置是否阻止了许可证验证兼容性问题不支持 glibc 版本低于 2.15 的 Linux 系统x86_32 主机平台不受支持构建错误验证目标架构和处理器选项是否正确检查是否使用了已弃用的汇编语法6.2 获取支持反馈渠道通过供应商提交问题报告使用工作或学术邮箱创建支持案例问题报告要求提供工具的 --vsn 输出包含完整的错误信息提供预处理后的源代码和重现步骤文档参考用户指南提供使用示例和指导参考指南详细说明工具链配置错误和警告参考指南列出可能的错误信息在实际项目中使用 Arm Compiler for Embedded 6.20 时建议先在测试环境中验证所有关键功能特别是当从早期版本升级时。对于时间敏感型项目可以考虑暂缓升级直到完成充分验证。