GCC ARM Embedded 是一个开源且免费分发的软件,包含用于ARM Cortex-R和Cortex-M处理器的预构建GNU工具链。该项目旨在将GNU工具引入ARM嵌入式处理器,帮助开发人员完成各种编译任务。
支持所有重要的Cortex ARM处理器
该软件从头开始创建,支持所有重要的Cortex ARM处理器,包括Cortex-R4,Cortex-R5,Cortex-R7,Cortex-M3,Cortex-M4,Cortex-M7,Cortex-M0 +,和Cortex-M0。
由ARM员工维护,GCC ARM嵌入式软件是对增强和维护GNU编译器集合(GCC)ARM架构支持的持续承诺的一部分。
GCC ARM Embedded入门
要在GNU / Linux计算机上使用GCC ARM Embedded软件,您应该下载二进制包,其中包含您开始使用所需的所有预构建二进制文件。将存档保存在计算机上的某个位置,最好是您的主目录,使用存档管理器实用程序来提取其内容。
然后,打开终端应用程序并导航到您已解压缩存档文件的位置(例如cd / home / softoware / gcc-arm-none-eabi-4_9-2014q4)。所有二进制文件都位于‘ bin’文件夹中。
可用性和支持的硬件平台
GCC ARM Embedded作为二进制和源存档以及最新版本的Ubuntu Linux操作系统的PPA存储库分发,支持32位和64位架构。请注意,该软件还与Mac OS X和Microsoft Windows操作系统兼容。
此版本中的新功能:
- 修正了powf / expf / exp2f / logf / log2f性能回归
- 通过-mcpu = cortex-m33 + nodsp 增加了对没有DSP的Arm Cortex-M33的支持
- 添加了Armv8-R multilib映射
- 修复GDB tui支持的构建要求
- 在newlib中启用了C99 IO格式说明符
- 修正了cmse_nonsecure_caller Armv8-M安全扩展内在
- 修复__builtin_arm_set_fpscr GCC内置 中的崩溃
- LTO错误https://bugs.launchpad.net/gcc-arm-embedded/+bug/1747966已在先前版本中修复。发布说明已更新以反映更改。
- 修复了构建没有标题的libgcc的cmse.c 的问题
- 解决了arm_cmse.h C99兼容性问题
版本7-2017-q4中的新功能:
- Armv8-R和Cortex-R52支持
- 修复https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69866
- 使用为Mac OS X启用C ++构建的GDB
版本6.2中的新功能:
- 特点:
- 所有GCC 6功能,以及最新的主要功能:
- 完整的ARMv8-M支持,包括原子和安全扩展
- ARM PURECODE支持ARMv7-M和ARMv8-M Baseline和Mainline
- 协处理器内在支持
- Cortex-M23和Cortex-M33支持
- -mthumb Cortex-M设备可选
- 支持在newlib中重新定位锁定例程的操作系统
- newlib中的高级SIMD优化memchr实现
- 在命令行上启用Windows安装程序的设置选项
- 6更新2版本中的重要更改:
- GCC错误地认为Cortex-r [578]具有64位单拷贝原子LDRD https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80082
- LDR伪操作生成MOVS https://bugs.launchpad.net/gcc-arm-embedded/+bug/1682620
- 修正了FPSCR getter和setter builtins
- 创建为可执行文件的SG导入库现已修复为可重定位
- 在命令行上启用Windows安装程序的设置选项
- 为ARMv8-M.Baseline启用PURECODE支持
- newlib中的高级SIMD优化memchr实现
版本5.4中的新功能:
- 新功能:
- ARMv8-M Baseline和Mainline beta支持:
- ARMv8-M Baseline atomics support
- ARM PureCode支持
- Thumb-2长枝贴面
- 5更新3版本中修复的重要错误:
- 删除了MSP_S和PSP_S MRS / MSR专用寄存器
- 修复了胶合代码生成中的Thumb版本检测
- 修复了有关newlib-nano in release.txt 的文档
版本5.3中的新功能:
- 功能:
- 所有GCC 5功能,以及最新的主要功能:
- Cortex-R8支持
- Cortex-M7性能调整
- 手动小端和大端负载的优化
- 改进了跳线,无需-ftree-switch-shortcut
- ARMv8-M Baseline和Mainline alpha支持:
- 不包括在ARMv8-M Baseline中的原子
- ARMv8-M安全扩展Alpha支持
- Thumb-1库优化:
- https://gcc.gnu.org/ml/gcc-patches/2015-10/msg01282.html
- CRC优化:
- https://gcc.gnu.org/ml/gcc-patches/2015-11/msg02046.html
- newlib-nano的小型终止处理程序
5.2版中的新功能:
- 所有GCC 5功能,以及最新的主要功能:
- Cortex-M7性能调整
- 手动小端和大端负载的优化
- 改进了跳线,无需-ftree-switch-shortcut
- ARMv8-M Baseline和Mainline alpha支持:
- 不包括在ARMv8-M Baseline中的原子
- ARMv8-M安全扩展仅支持汇编和基本链接
- Thumb-1库优化
- https://gcc.gnu.org/ml/gcc-patches/2015-10/msg01282.html
- CRC优化
- https://gcc.gnu.org/ml/gcc-patches/2015-11/msg02046.html
版本4.9 Update 3中的新功能:
- 特点:
- 所有GCC 4.9功能,以及最新的主要功能
- Cortex-M7支持
- 带有选项的小型多重支持:
- 。 -mcpu =皮层的m1.small乘
- 。 -mcpu =皮质-m0.small乘
- 。 -mcpu =皮质-m0plus.small乘
- Cortex-M7的专用multilib
- - cortex-m7
- - cortex-m7 / fpu / fpv5-d16
- - cortex-m7 / fpu / fpv5-sp-d16
- - cortex-m7 / softfp / fpv5-d16
- - cortex-m7 / softfp / fpv5-sp-d16
- 在newlib中定义aeabi_memcpy和aeabi_memcpy4例程。
- 在newlib中定义aeabi_memmove,aeabi_memset和aeabi_memclr例程。
- Thumb-1库优化。
- 其他代码大小优化。
- 添加gdb python build(arm-none-eabi-gdb-py)。
- 没有属性部分的对象文件可以与任何其他对象链接。
- 选项-mapcs,-mapcs-frame,-mtpcs-frame和-mtpcs-leaf-frame将在gcc 5.0中弃用,因此建议避免使用它们。
- 4.9更新3版本中修复的重要错误:
- Newlib格式说明符不匹配修复。 https://answers.launchpad.net/gcc-arm-embedded/+question/269083
- Newlib宏不匹配修复。 https://answers.launchpad.net/gcc-arm-embedded/+question/269177
- 汇编程序编码错误修复。 https://sourceware.org/ml/binutils/2015-08/msg00028.html
版本4.9更新2中的新功能:
- 特点:
- 所有GCC 4.9功能,以及最新的主要功能
- Cortex-M7支持
- 带有选项的小型多重支持:
- -mcpu =皮层的m1.small乘
- -mcpu =皮质-m0.small乘
- -mcpu =皮质-m0plus.small乘
- Cortex-M7的专用multilib:
- 皮质-M7
- 皮质-M7 / FPU / fpv5-D16
- 皮质-M7 / FPU / fpv5-SP-D16
- 皮质-M7 / softfp / fpv5-D16
- 皮质-M7 / softfp / fpv5-SP-D16
- 在newlib中定义aeabi_memcpy和aeabi_memcpy4例程。
- 在newlib中定义aeabi_memmove,aeabi_memset和aeabi_memclr例程。
- Thumb-1库优化。
- 其他代码大小优化。
- 添加gdb python build(arm-none-eabi-gdb-py)。
- 没有属性部分的对象文件可以与任何其他对象链接。
- 选项-mapcs,-mapcs-frame,-mtpcs-frame和-mtpcs-leaf-frame将在gcc 5.0中弃用,因此建议避免使用它们。
- 4.9更新2版本中修复的重要错误:
- 更新了Newlib中的一些内联汇编代码以使用旧目标https://www.sourceware.org/ml/newlib/2015/msg00386.html
- 避免因章节规模推广造成的浪费https://answers.launchpad.net/gcc-arm-embedded/+question/262160
- 本地寄存器变量无法正常使用内联asm操作数https://bugs.launchpad.net/gcc-arm-embedded/+bug/1411655
版本4.9 Update 1中的新功能:
- 特点:
- 所有GCC 4.9功能,以及最新的主要功能
- - Cortex-M7支持
- - 选项的小倍数支持:
- 。 -mcpu =皮层的m1.small乘
- 。 -mcpu =皮质-m0.small乘
- 。 -mcpu =皮质-m0plus.small乘
- Cortex-M7的专用multilib
- - cortex-m7
- - cortex-m7 / fpu / fpv5-d16
- - cortex-m7 / fpu / fpv5-sp-d16
- - cortex-m7 / softfp / fpv5-d16
- - cortex-m7 / softfp / fpv5-sp-d16
- 在newlib中定义aeabi_memcpy和aeabi_memcpy4例程。
- 在newlib中定义aeabi_memmove,aeabi_memset和aeabi_memclr例程。
- Thumb-1库优化。
- 其他代码大小优化。
- 添加gdb python build(arm-none-eabi-gdb-py)。
- 没有属性部分的对象文件可以与任何其他对象链接。
- 选项-mapcs,-mapcs-frame,-mtpcs-frame和-mtpcs-leaf-frame将在gcc 5.0中弃用,因此建议避免使用它们。
- 4.9更新1版本中修复的重要错误:
- LD backport在最终的axf文件中保留零长度部分
- 修复因丢弃已分组的调试部分而导致的GDB崩溃
- 添加Thumb1 insn模式以使将pc移至低位寄存器的指令合法化
- 根据最新的EABI文档 更新GCC以生成Tag_ABI_HardFP_use
- 实时高注册未保存在-Os 的功能序言中
- - 嵌套结构的var-info-path-expression失败
版本4.9中的新功能:
- 在链接描述文件中定义的分支到符号http:// sourceware .ORG / bugzilla的/ show_bug.cgi?ID = 15302
- GDB升级到7.6以更好地支持dwarf-3及更高版本的标准https://answers.launchpad.net/gcc-arm-embedded/+question/234131 https://bugs.launchpad.net/gcc-arm - 嵌入式/ +错误/ 1248981
- ICE使用高位寄存器作为Thumb-1目标的PIC基址寄存器
版本4.7 Update 3中的新功能:
- 使用LTO https编译定点应用时出现崩溃://answers.launchpad.net/gcc-arm-embedded/+question/235582
- 分支到目标链接器脚本符号https://sourceware.org/bugzilla/show_bug.cgi?id=15302 指定的目标
- Windows托管gdb在某个断点处挂起https://bugs.launchpad.net/gcc-arm-embedded/+bug/1197615
- Nano缺少对_mallopt_r的引用https://mbed.org/forum/mbed/topic/2701/?page=3#comment-22549
新功能:
- 将doc / * .texi升级到最新的texinfo包https:// answers.launchpad.net/gcc-arm-embedded/+question/227685
- 使用-mtune选项修复ICE选项https://answers.launchpad.net/gcc-arm-embedded/+question/227667
- 修复构建脚本中的--debug选项https://answers.launchpad.net/gcc-arm-embedded/+question/229127
- 修复thumb1叶子功能中不必要的lr保存
版本4.7 Update 1中的新功能:
- 此更新版本修复了以下问题: 4.7专业:
- Mac OS主机版具有python依赖性
- 在路径名中包含空格的目录中安装LTO失败http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50293
- 加载包含对齐数据的数据部分的地址http://sourceware.org/bugzilla/show_bug.cgi?id=15222
- libnosys不检查堆栈溢出https://answers.launchpad.net/gcc-arm-embedded/+question/218972
- librdimon.a与newlib-nano 不匹配
- 它还会调整构建配置以启用:
- 基本Cortex-A配置文件multilib
- LTO(链接时间优化)
评论没有发现