当前位置: 首页 > article >正文

嵌入式领域常用编译器深度解读

arm-linux-gnueabihf-gcc 和 arm-none-eabi-gcc:

这两个编译器都是用于编译针对 ARM 架构的程序,但它们的应用场景和目标有所不同。

arm-linux-gnueabihf-gcc:

这个编译器是针对 ARM 架构的 Linux 操作系统的交叉编译器。gnueabihf 表示编译器会生成支持硬件浮点运算(硬件浮点 ABI)的代码,并且它是为 Linux 平台编译的。通常用于编译 ARM Linux 系统的程序,像是嵌入式 Linux 开发中常用的交叉编译器。

arm-none-eabi-gcc:

这个编译器是针对裸机编程(bare-metal programming)使用的交叉编译器,通常用于没有操作系统支持的 ARM 设备。none 表示没有操作系统,eabi 表示符合 ARM 的嵌入式应用二进制接口,gcc 是 GNU 编译器套件。这个编译器用于为 ARM 设备(如微控制器)编写固件或裸机程序。

类似的编译器:

aarch64-linux-gnu-gcc:

这是为 64 位 ARM 架构(AArch64)在 Linux 环境下编译代码的交叉编译器。

armv7a-linux-gnueabihf-gcc:

类似于 arm-linux-gnueabihf-gcc,但专门为 ARMv7-A 架构(32 位)编译,支持硬件浮点运算。

arm-none-eabi-g++:
与 arm-none-eabi-gcc 类似,但用于 C++ 编程的编译器。

ARMCC 编译器版本及全称:

ARMCC(ARM Compiler)是 ARM 提供的专有编译器,通常用于嵌入式系统的开发。

版本:

ARM Compiler 5 (ARMCC v5):旧版本,支持 C 和 C++ 编程,适用于 ARMv4 到 ARMv8 的处理器架构。

ARM Compiler 6 (ARMCC v6):新的版本,基于 LLVM 技术,支持 ARMv7 到 ARMv8-A 架构,并支持更现代的编程语言特性。

ARM Compiler 7 (ARMCC v7):是 ARM 最新的编译器版本,针对现代 ARM 架构(如 ARMv8)进行了优化,提供更多针对嵌入式开发的工具和特性。

全称:
ARMCC:ARM Compiler Chain,简称 ARMCC,是用于 ARM 平台的专有编译器套件。

这些编译器通常被集成在 ARM 的开发工具链(如 ARM Development Studio)中,也可通过 ARM 的商用许可获取。

总之

arm-linux-gnueabihf-gcc 和 arm-none-eabi-gcc 是两种主要用于 ARM 开发的交叉编译器,分别用于 Linux 和裸机系统开发,而 ARMCC 则是 ARM 提供的商用编译器,有不同版本支持不同的 ARM 架构和特性。

ArduPilot 和 PX4 都是开源的自动驾驶软件平台,广泛应用于无人机、无人车等领域。它们在不同的硬件平台上运行,针对不同的需求和架构优化,尤其是在基于 STM32(STMicroelectronics 的 32 位微控制器系列)平台上,它们使用不同的编译器进行开发和编译。

  1. ArduPilot 编译器:
    ArduPilot 是一个支持多种硬件平台的自动驾驶系统。对于 STM32 平台,通常使用以下编译器:

1.编译器:

2.GNU GCC:ArduPilot 对 STM32 平台的支持主要使用 GNU ARM GCC(arm-none-eabi-gcc),这是一个开源的工具链,广泛用于 ARM 架构的嵌入式系统开发。
3.工具链和 IDE:

4.ArduPilot 可以使用 STM32CubeIDE(基于 Eclipse)进行开发和调试,或是通过 PlatformIO,它集成了支持多种编译器的开发环境。
5.适用平台:

6.ArduPilot 支持包括 STM32F4 和 STM32F7 系列微控制器的多个 STM32 芯片。

  1. PX4 编译器:
    PX4 是另一个流行的开源自动驾驶平台,同样广泛支持 STM32 平台。它的编译器和工具链如下:

7.编译器:

8.GNU GCC:与 ArduPilot 类似,PX4 使用 GNU ARM GCC 编译器(arm-none-eabi-gcc)来为 STM32 平台生成代码。
9.工具链和 IDE:

10.PX4 通常使用 QGroundControl 作为地面控制站,开发则使用 PX4 Toolchain。开发环境可以在 Ubuntu 或其他 Linux 系统上配置,使用 make 和 CMake 来管理构建过程。
11.适用平台:

12.PX4 支持 STM32F4 和 STM32F7 系列微控制器,另外也支持其他如 NXP/Freescale 的硬件平台。

总结:

编译器: 对于 STM32 平台,ArduPilot 和 PX4 都使用 GNU ARM GCC(arm-none-eabi-gcc)作为主要编译器。

开发工具链: 这两个项目都可以在 Linux 系统中使用相应的开发环境(如 PlatformIO 或 STM32CubeIDE)进行编译、调试和部署。

ARMCC v5 和 ARMCC v6 支持的开发环境与芯片型号

  1. ARMCC v5
    支持的开发环境
    ARMCC v5 主要与以下开发环境兼容:

1.Keil MDK (Microcontroller Development Kit):适用于嵌入式开发,提供了完整的开发工具链,包括编译器、调试器和分析工具。
2.DS-5 Development Studio:用于 ARM 处理器的专业开发环境,提供了强大的调试功能和性能分析工具,主要针对嵌入式和移动设备开发。
3.RealView Development Suite (RVDS):ARM 早期的集成开发环境(IDE),包括编译器、调试器、仿真器等工具。

支持的芯片型号
ARMCC v5 主要支持较早的 ARM 处理器,包括以下芯片:

4.Cortex-M 系列(如 Cortex-M0, M3, M4, M7)
5.适用于低功耗嵌入式系统,如物联网设备、传感器等。
6.Cortex-R 系列(如 Cortex-R4, R5)
7.适用于实时处理系统,如汽车、工业控制等领域。
8.Cortex-A 系列(如 Cortex-A5, A7, A9)
9.适用于低功耗移动设备和嵌入式设备。
10.ARM7 和 ARM9 系列
11.用于一些较早的 ARM 处理器,广泛应用于早期的嵌入式系统中。
12.ARM11 系列
13.较旧的移动设备和嵌入式系统中的芯片。

  1. ARMCC v6
    支持的开发环境
    ARMCC v6 同样兼容一些现代化的开发环境,提供了对新架构(如 ARMv8)的优化支持:

14.Arm Development Studio (DS):现代化的开发环境,全面支持高性能的 ARM 处理器架构(如 ARMv8)。包括编译器、调试器、性能分析工具等。
15.Keil MDK:与 ARMCC v6 兼容,支持最新的嵌入式开发需求。
16.Eclipse + ARM插件:为开发者提供一个开源的 IDE 配置,支持基于 Eclipse 的 ARM 开发环境,适合于大规模项目和跨平台开发。
17.Visual Studio Code + ARM 插件:一些开发者选择与 VS Code 配合使用 ARM 插件,来实现嵌入式开发,支持多种 ARM 处理器架构。

支持的芯片型号
ARMCC v6 不仅支持 ARMCC v5 所支持的处理器,还增加了对 ARMv8 架构的支持,涵盖了更广泛的 ARM 处理器系列。包括但不限于:

18.Cortex-M 系列(如 Cortex-M0, M3, M4, M7, M33, M55)
19.适用于低功耗嵌入式系统和物联网设备。
20.Cortex-R 系列(如 Cortex-R5, R7, R8)
21.适用于实时计算领域,如汽车、工业控制、存储等。
22.Cortex-A 系列(如 Cortex-A35, A53, A55, A57, A72, A73, A75, A76, A77, A78)
23.适用于移动设备、智能手机、平板、嵌入式设备、服务器等高性能计算领域。
24.Cortex-X 系列(如 Cortex-X1, X2)
25.面向高端性能计算需求,如高端智能手机和处理器。
26.ARMv8-A 系列(如 ARM Cortex-A55, A76, A78、Neoverse N1)
27.专为数据中心、服务器和高性能嵌入式应用设计,支持 64 位架构。
28.ARMv8-M 系列(如 Cortex-M33, Cortex-M55)
29.支持 ARMv8-M 架构,适用于安全性要求高的嵌入式应用。
30.Arm Neoverse 系列(如 Neoverse N1, V1)
31.适用于数据中心、高性能计算和边缘计算。

总结:

开发环境ARMCC v5ARMCC v6
Keil MDK支持 ARM7、ARM9、Cortex-M、Cortex-A 系列处理器支持 ARMv8、Cortex-M、Cortex-A、Cortex-R 系列处理器
DS-5 Development Studio支持 ARM7、ARM9、Cortex-M、Cortex-A 系列处理器支持 ARMv8、Cortex-M、Cortex-A、Cortex-R 系列处理器
RealView Development Suite支持 ARM7、ARM9、Cortex-M、Cortex-A 系列处理器不推荐用于现代架构
Eclipse + ARM插件不常用于 v5支持新架构,包括 ARMv8 等
Visual Studio Code + ARM插件不常用于 v5支持现代开发,特别是 ARMv8+架构的开发
支持的芯片型号ARMCC v5ARMCC v6
-------------------------------------------------------------------------------------------------------------------------------------
Cortex-M 系列Cortex-M0、M3、M4、M7Cortex-M0、M3、M4、M7、M33、M55
Cortex-R 系列Cortex-R4、R5Cortex-R5、R7、R8
Cortex-A 系列Cortex-A5、A7、A9Cortex-A35、A53、A55、A57、A72、A73、A76、A77、A78
ARMv8-A 系列不支持支持 ARMv8-A 处理器,如 Cortex-A55、A76、Neoverse N1
ARMv8-M 系列不支持支持 Cortex-M33、M55
Neoverse 系列不支持支持 Neoverse N1、V1

ARMCC v6 具有更广泛的支持,能够支持更现代的 ARM 处理器(如 ARMv8 和 Neoverse 系列),适用于高性能计算和最新的嵌入式系统。


http://www.kler.cn/a/557225.html

相关文章:

  • rkipc main.c 中 rk_param_init函数分析
  • C#-03-类继承
  • 【实战】ChatChat0.3.1+DeepSeek+本地知识库部署使用(上)
  • 10x Research:Secured Finance的稳定币如何推动Filecoin发展
  • 鸿蒙-如何发布一个三方库
  • 契约思维驱动开发:OpenAPI的最佳实践
  • MATLAB进阶之路:数据导入与处理
  • 【c语言】函数_作业详解
  • 一文读懂大模型文件后缀名,解锁 AI 世界的密码
  • 探索Android动态埋点的新视界:UprobeStats深度解析
  • 解决“error: Tried to call obs_frontend_start_virtualcam with no callbacks!”
  • 计算机视觉算法实战——智能零售货架监测(主页有源码)
  • 83_CentOS7通过yum无法安装软件问题解决方案
  • 基于springboot的攀枝花市鲜花销售系统
  • 【论文阅读】identifying backdoor data with optimized scaled prediction consistency
  • 蓝桥杯真题 - 缴纳过路费 - 题解
  • 氧化锆(化学式ZrO₂)在多个工业领域发挥重要作用京煌科技
  • 机器学习 - 投票感知器
  • VUE四:Vue-cli
  • Android 中 如何监控 某个磁盘有哪些进程或线程在持续的读写