ARM 编译器 Arm Compiler for Embedded 6 相关工具链简介

目录

1, Introduction to Arm® Compiler 6

1.1 armclang

1.2 armasm

1.4 armar

1.5 fromelf

1.6 Arm C++ libraries

1.7 Arm C libraries

1,8 Application development ,ARM程序开发流程

2,ARM 编译器 5和ARM 编译器 6的兼容性

3,ARM编译器相关链接


1, Introduction to Arm® Compiler 6

Arm Compiler 6 是 Arm 中用于 Arm Cortex® 和 Arm Neoverse™ 处理器的最先进的 C 和 C++ 编译工具链。Arm Compiler 6 与 Arm 架构一起开发。因此,Arm 编译器 6 经过优化,可为从小型传感器到 64 位设备的嵌入式裸机应用生成高效代码。

Arm Compiler 6 将 Arm 优化的工具和库与基于 LLVM 的现代编译器框架相结合。Arm 编译器 6 中的组件包括:

  1. armclang
  2. armasm
  3. armlink
  4. armar
  5. Arm C++ libraries
  6. Arm C libraries

1.1 armclang

编译 C、C++ 和 GNU 汇编语言源的编译器和汇编编译器。基于LLVM和Clang技术。Clang是LLVM的编译器前端,可以支持C和C++等编程语言。

1.2 armasm

传统的汇编编译器,针对ARM语法的汇编代码。使用armclang是针对GNU 语法的汇编文件。

armlink链接器可以将一个或多个目标文件以及一个或多个目标程序库链接,生成一个可执行的程序。

1.4 armar

归档器(archiver)可以将 多个ELF 对象收集在一起,并在归档或库中进行维护。如果不经常更改这些文件,这些已经编译好的ELF文件可以减少编译时间,因为不必每次使用它们时都从源代码重新编译。并且可以将此类库或存档传递给链接器,以代替多个 ELF 。还可以使用存档分发给第三方应用开发人员,这样就可以在不泄露源代码的情况下共享存档。

1.5 fromelf

fromelf可以将 Arm ELF 文件转换为二进制格式。它还可以生成有关输入的elf文件的文本信息,例如其反汇编、代码大小和数据大小。

1.6 Arm C++ libraries

Arm C++库是基于LLVM libc++工程:

  • libc++abi 库是一个rubtime 库,提供大量的低级语言特性的实现。
  • libc++ 库同样提供 ISO C++的标准库实现

如果C++编译单元是用不同的主要或次要版本的Arm编译器编译的,并且链接到单个image。那么ARM不保证该c++编译单元的兼容性。因此,ARM建议在编译C++源码时,使用单一版本的工具链。此外也支持C和C++的混合编译。

1.7 Arm C libraries

ARM的C库提供:

  • 标准的C语言库特性的实现。
  • 许多非标准的通用的C语言扩展
  • POSIX 扩展功能。
  • 使用POSIX的函数标准化。

1,8 Application development ,ARM程序开发流程

一个典型的ARM程序开发流程应该包含:

  1. 为主程序开发C/C++源码 (armclang)。
  2. 为底层硬件组件开发汇编源码,比如中断服务子程序(armclang,或者针对arm 汇编代码的armasm)
  3. 将所有目标文件链接成一个elf image(armlink)
  4. 将一个image转换成 plain binary, Intel Hex, 或者Motorola-Smeld等格式。

下图展示了一个典型的应用程序开发流程:


需要注意的是,

2,ARM 编译器 5和ARM 编译器 6的兼容性

如果用户之前使用的是ARM compiler 5,需要将code在ARM compiler 6中编译,可以参考文档:

Arm Compiler for Embedded Migration and Compatibility Guide

 compiler 5和compiler6最大的区别在于compiler 5使用的是armcc,而compiler 6使用的是armclang。以下是二者工具链的对比表格:

Table 1. List of compilation tools
Arm Compiler 5Arm Compiler for Embedded 6Function
armccarmclangCompiles C and C++ language source files, including inline assembly.
armccarmclangPreprocessor.
armasmarmasmLegacy assembler for assembly language source files written in armasm syntax. Use the armclang integrated assembler for all new assembly files.
Not availablearmclang. This is also called the armclang integrated assembler.Assembles assembly language source files written in GNU assembly syntax.
fromelffromelfConverts Arm ELF images to binary formats and can also generate textual information about the input image, such as its disassembly and its code and data size.
armlinkarmlinkCombines the contents of one or more object files with selected parts of one or more object libraries to produce an executable program.
armararmarEnables sets of ELF object files to be collected together and maintained in archives or libraries.

3,Compiler 6所支持的ARM 架构

Arm Compiler for Embedded 6支持以下ARM架构:

  • Armv9-A.
  • Armv8-A and all update releases, for bare-metal targets.
  • Armv8-R.
  • Armv8-M.
  • Armv7-A for bare-metal targets.
  • Armv7-R.
  •  Armv7-M.
  • Armv6-M.
     

当编译代码时,编译器需要知道以哪种体系结构为目标,以便利用特定于该体系结构的特性。要指定目标架构,必须提供目标执行状态(AArch32或AArch64),以及目标体系结构(例如Armv8-A)或目标处理器(例如cortex-A53处理器)。

要使用armclang指定目标执行状态(AArch64或AArch32),使用强制的 --target 命令行选项:

--target=<arch>-<vendor>-<os>-<abi>

支持的目标包括:

  • aarch64-arm-none-eabi
    • 为A64状态产生A64的指令,如果没有指定-march 或者-mcpu 属性则暗示-march=armv8-a
  • arm-arm-none-eabi
    • 为A32状态产生A32的指令,同时必须使用-march(指定架构)-mcpu(指定处理器)

如果想要针对某个架构的所有处理器生成通用的代码,可以使用-march 选项,使用 -march=list
 可以看到全部的支持的架构。此外,如果想针对某款处理器优化你的代码,可以使用 -mcpu 选项,使用 -mcpu=list 可以看到全部的支持的处理器。

需要注意的是,--target, -march和-mcpu选项是armclang选项。对于所有其他工具,如armlink,使用 --cpu选项指定目标处理器和体系结构。

4,ARM编译器相关链接

Arm product resourcesDocument IDConfidentiality
Arm Compiler for Embedded Reference Guide101754Non-Confidential
Arm Compiler for Embedded Migration and Compatibility Guide100068Non-Confidential
Arm Compiler for Embedded Arm C and C++ Libraries and Floating-Point Support User Guide100073Non-Confidential
Arm Compiler for Embedded Errors and Warnings Reference Guide100074Non-Confidential
Arm Support--
Arm Compiler for Linux--
Arm Development Studio Getting Started Guide101469Non-Confidential
Arm Development Studio User Guide101470Non-Confidential
Arm Compiler for Embedded Licensing Configuration--
Request a license--
Manage Arm Compiler Versions-Non-Confidential
User-based licensing User Guide102516Non-Confidential
CMSIS 5-Non-Confidential
Arm® architecture and specificationsDocument IDConfidentiality
Arm Architecture Reference Manual for A-profile architectureDDI 0487Non-Confidential
ARM Architecture Reference Manual ARMv7-A and ARMv7-R editionDDI 0406Non-Confidential
A-Profile Architecture-Non-Confidential
M-Profile Architecture-Non-Confidential
R-Profile Architecture-Non-Confidential
ABI for the Arm Architecture-Non-Confidential
Base Platform ABI for the Arm Architecture-Non-Confidential
C Library ABI for the Arm Architecture-Non-Confidential
C++ ABI for the Arm Architecture-Non-Confidential
C++ Application Binary Interface Standard for the Arm 64-bit Architecture-Non-Confidential
DWARF for the Arm Architecture-Non-Confidential
ELF for the Arm Architecture-Non-Confidential
Exception Handling ABI for the Arm Architecture-Non-Confidential
Procedure Call Standard for the Arm Architecture-Non-Confidential
Run-time ABI for the Arm Architecture-Non-Confidential
Support for Debugging Overlaid Programs-Non-Confidential
Addenda to, and Errata in, the ABI for the Arm Architecture-Non-Confidential
Whitepaper - Armv8-M Architecture Technical Overview-Non-Confidential
Armv8-M Stack Sealing vulnerability-Non-Confidential
Non-Arm resourcesDocument IDOrganization
GCC-Top (Using the GNU Compiler Collection (GCC))
GNU Binutils-https://sourceware.org/binutils
Itanium C++ ABI-C++ ABI Summary
The Security Implications Of Compiler Optimizations On Cryptography - A Review-https://arxiv.org
Using Clang as a Compiler-Welcome to Clang's documentation! — Clang 17.0.0git documentation
Automatic variable initialization-https://reviews.llvm.org
C++ implementation status in LLVM Clang-Welcome to Clang's documentation! — Clang 17.0.0git documentation
Undefined Behavior Sanitizer-Welcome to Clang's documentation! — Clang 17.0.0git documentation
Update for Universal C Runtime in Windows-https://support.microsoft.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/9256.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 虚拟环境迁移到其他电脑

一、背景介绍 在 Python 项目开发过程中&#xff0c;根据不同的项目场景&#xff0c;需要切换不同的 Python 版本。 因此&#xff0c;我们经常会对不同的项目&#xff0c;创建特定的 Python 虚拟环境&#xff0c;实现项目环境间的“物理隔离”。 本地创建 Python 虚拟环境&…

2023最新8个电脑必装软件,新电脑装完好用又高效

新买的笔记本电脑到手了&#xff0c;需要安装什么软件&#xff1f;不会真的有人这样问吧&#xff0c;万一真的有人不知道需要安装什么软件呢&#xff1f;好吧&#xff0c;提醒一下各位&#xff0c;新电脑不要乱安装软件啊&#xff0c;不然电脑很容易中病毒的。根据我多次换电脑…

AttributeError: module ‘torch‘ has no attribute ‘compile‘

ERROR: Could not install packages due to an EnvironmentError: [Errno 28] No space left on device pytorch包的版本太低&#xff0c;需要大于2.0 升级 pip install --upgrade torch升级报错 空间不够no space left on device 查看磁盘空间&#xff1a; du -h --max-de…

HTML5 <head> 标签、HTML5 <i> 标签

HTML5 <head> 标签 实例 HTML5 <head> 标签表示文档的头部&#xff0c;其中包含了与该文档有关的信息&#xff01; 一份在头部带有 <title> 标签的 HTML 文档&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8&…

数据结构之线性表3

我们的目标&#xff1a; 1、了解线性结构的特点 掌握顺序表的定义、查找、插入和删除。 2、掌握链表的定义、创建、查找、插入和删除。 3、能够从时间和空间复杂度的角度比较两种存储结构的不同特点及其适用场合。&#xff08;持续更新&#xff09; 前言 本章节内容主要介绍…

【中级软件设计师】—操作系统考点总结篇(二)

【中级软件设计师】—操作系统考点总结篇&#xff08;二&#xff09; 1.操作系统概述 1.1操作系统的功能 1.2 特殊的操作系统 1.3 进程的概念和状态 进程与程序的区别&#xff1a; 进程是程序的一次执行过程&#xff0c;没有程序就没有进程 程序是一个静态的概念&#xff0c;…

蓝桥杯嵌入式第十二届初赛题目解析

把蓝桥杯嵌入式第十二届的题目写完了&#xff0c;拿出来和大家一起分享。 目录 客观题 程序设计题 题目解析&#xff1a; CubeMX配置 代码演示 客观题 收集的一些历年的比赛客观题和解析&#xff0c;以及程序设计题的PDF&#xff0c;在这里分享给大家。 链接&#xff…

SHELL函数可课后作业

一、题目 1、编写函数&#xff0c;实现打印绿色OK和红色FAILED 判断是否有参数&#xff0c;存在为Ok&#xff0c;不存在为FAILED 2、编写函数&#xff0c;实现判断是否无位置参数&#xff0c;如无参数&#xff0c;提示错误 3、编写函数实现两个数字做为参数&#xff0c;返回最…

使用Schrödinger Python API系列教程 -- 介绍 (一)

使用Schrdinger Python API系列教程 – 介绍 (一) 本文档可从Schrdinger网站www.schrodinger.com/pythonapi访问。 从Python文档字符串生成的完整API文档可以在这里访问 介绍 在最高级别上&#xff0c;Schrdinger Python API提供了一个基本的分子结构类&#xff0c;并允许与…

6.S081——虚拟内存部分——xv6源码完全解析系列(2)

0.Briefly Spaeking 点此回看本系列博客的上一篇 上一篇博客中&#xff0c;我们详细分析了xv6内核代码中有关虚拟内存的部分&#xff0c;主要剖析了vm.c这个文件中的三个全局变量和6个函数&#xff0c;这篇博客紧跟着上篇博客的步伐。接着剖析和阅读接下来的源码&#xff0c;同…

用于语义分割模型的t-SNE可视化

前言 在之前的博客t-SNE可视化-Python实现中&#xff0c;对t-SNE的原理进行了一个简单的介绍&#xff0c;也给出了一个简单的使用案例。这篇博客在之前的基础上实现在语义分割模型上的t-SNE可视化。 语义分割模型中使用t-SNE的目的是&#xff0c;从模型的特征层面进行一定的可…

ftp传输文件大小有限制吗 ftp文件传输工具有哪些

这两年&#xff0c;线上办公逐渐常态化&#xff0c;相信大家对ftp这个概念也比较熟悉了。ftp&#xff0c;即文件传输协议&#xff0c;线上办公就是用ftp软件进行文件传输的。那ftp传输文件大小有限制吗,ftp文件传输工具有哪些我们一起来看看。 一、ftp传输文件大小有限制吗 f…

vue3中tsx语法一些了解

首先直接创建tsx文件 引入函数 import { defineComponent, ref } from vue 直接使用组件函数的写法 export default defineComponent({//context内有参数emit,slot,arrts,expose //解构写法setup( props,{emit,slot,arrts,expose}){}setup( props,context) {//定义函数和响应…

Vue+nodejs快递收发寄件揽件代取网点查询系统

本系统名为“基于vue快递代取系统”&#xff0c;系统主要适用于毕业设计&#xff0c;不能作为商用。系统主要分为二个大模块&#xff0c;分别为“前台”&#xff0c;“后台”。其中“前台”模块中主要包含快递公司、代取信息、公告栏、快递资讯、投诉栏等。主要提供于用户与快递…

编译技术-优化理论

一、构造控制流图&#xff08;CFG&#xff09; 关于优化&#xff0c;真的是一个令人生畏的事情&#xff0c;大致来说&#xff0c;一个优化分为两个部分&#xff1a; 分析改写 但是在课程中大多只交第一个部分&#xff0c;而不讲第二个部分&#xff0c;这就导致一种“无意义性”…

【剧前爆米花--爪哇岛寻宝】java文件操作和io流

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaEE初阶》 文章分布&#xff1a;这是一篇关于文件操作的文件&#xff0c;介绍了文件读写以及相关对象的内容&#xff0c;希望对你有所帮助&#xff01; 目录 文件操作 文件路径 绝对路径 相对路径 File类 File类的构造方…

应急响应真的很重要!

本文参考&#xff1a;2014年电信网和互联网安全操作系统基线 目录 看一下win10的用户​编辑 用户自身 查看用户命令 提权命令 看一下管理员 打开本地安全策略 将密码必须符合复杂性要求进行开启​编辑 参照基线效果 ​编辑 效果图&#xff1a; 开启日志​编辑 用even…

SpringSession深入浅出(一)

一、session来由 要谈session&#xff0c;一定是要说到用它带场景http协议。http协议是无状态协议&#xff0c;就像鱼的记忆&#xff0c;即使是同一浏览器给客户端给同一个服务器再来请求&#xff0c;已经记不起来你是谁。在互联网早期&#xff0c;承载网页大部分都是静态简单…

Chapter2 : SpringBoot配置

尚硅谷SpringBoot顶尖教程 1. 全局配置文件 SpringBoot使用一个全局的配置文件 application.properties 或者 application.yml &#xff0c;该配置文件放在src/main/resources目录或者类路径/config目录下面&#xff0c; 可以用来修改SpringBoot自动配置的默认值。 yml是YA…

【Lin-CMS内容管理系统框架 v0.3.6】内置用户管理/权限管理/日志系统等常见功能

【Lin-CMS内容管理系统框架 v0.3.6】内置用户管理/权限管理/日志系统等常见功能 Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。 Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。 Lin CMS 特点&#xff1a; Lin CMS 的构筑思想是有其自身特点的。…
最新文章