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文檔li>更新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(鏈接時間優化)
評論沒有發現