当前位置:首页 > 芯闻号 > 基础知识科普站
[导读]ARM ADS全称为ARM Developer Suite。是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。

8.1ADS集成开发环境组成介绍

ARM ADS全称为ARM Developer Suite。是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。它除了可以安装在Windows NT4,Windows 2000,Windows 98和Windows 95操作系统下,还支持Windows XP和Windows Me操作系统。

ADS由命令行开发工具,ARM时实库,GUI开发环境(Code Warrior和AXD),实用程序和支持软件组成。有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。

下面就详细介绍一下ADS的各个组成部分。

8.1.1命令行开发工具

这些工具完成将源代码编译,链接成可执行代码的功能。

ADS提供下面的命令行开发工具:

armcc

armcc是ARM C编译器。这个编译器通过了Plum Hall C Validation Suite为ANSI C的一致性测试。armcc用于将用ANSI C编写的程序编译成32位ARM指令代码。

因为armcc是我们最常用的编译器,所以对此作一个详细的介绍。

在命令控制台环境下,输入命令:

armcc –help

可以查看armcc的语法格式以及最常用的一些操作选项

armcc最基本的用法为:armcc [options] file1 file2 ... filen

这里的option是编译器所需要的选项,fiel1,file2…filen是相关的文件名。

这里简单介绍一些最常用的操作选项。

-c:表示只进行编译不链接文件;

-C:(注意:这是大写的C)禁止预编译器将注释行移走;

-D:定义预处理宏,相当于在源程序开头使用了宏定义语句#define symbol,

这里symbol默认为1;

-E:仅仅是对C源代码进行预处理就停止;

-g:指定是否在生成的目标文件中包含调试信息表;

-I:将directory所指的路径添加到#include的搜索路径列表中去;-J:用directory所指的路径代替默认的对#include的搜索路径;

-o:指定编译器最终生成的输出文件名。

-O0:不优化;

-O1:这是控制代码优化的编译选项,大写字母O后面跟的数字不同,表示的优化级别就不同,-O1关闭了影响调试结果的优化功能;

-O2:该优化级别提供了最大的优化功能;

-S:对源程序进行预处理和编译,自动生成汇编文件而不是目标文件;

-U:取消预处理宏名,相当于在源文件开头,使用语句#undef symbol;

-W:关闭所有的或被选择的警告信息;

有关更详细的选项说明,读者可查看ADS软件的在线帮助文件。

armcpp

armcpp是ARM C++编译器。它将ISO C++或EC++编译成32位ARM指令代码。

tcc

tcc是Thumb C编译器。该编译器通过了Plum Hall C Validation Suite为ANSI一致性的测试。tcc将ANSI C源代码编译成16位的Thumb指令代码。

tcpp

tcpp是Thumb C++编译器。它将ISO C++和EC++源码编译成16位Thumb指令代码。

armasm

armasm是ARM和Thumb的汇编器.它对用ARM汇编语言和Thumb汇编语言写的源代码进行汇编。

armlink

armlink是ARM连接器。该命令既可以将编译得到的一个或多个目标文件和相关的一个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标文件部分链接成一个目标文件,以供进一步的链接。ARM链接器生成的是ELF格式的可执行映像文件。

armsd

armsd是ARM和Thumb的符号调试器。它能够进行源码级的程序调试。用户可以在用C或汇编语言写的代码中进行单步调试,设置断点,查看变量值和内存单元的内容。

8.1.1.1armcc用法详解

下面为读者介绍上述的4种ARM C和C++编译器的命令通用语法。

compiler [PCS-options] [source-language] [search-paths] [preprocessor-options] [output-format] [target-options] [debug-options] [code-generation-options] [warning-options] [additional-checks] [error-options] [source]

用户可以通过命令行操作选项控制编译器的执行。所有的选项都是以符号”-”开始,有些选项后面还跟有参数。在大多数情况下,ARM C和C++编译器允许在选项和参数之间存在空格。

命令行中各个选项出现顺序可以任意。

这里的compiler是指armcc,tcc,armcpp和tcpp中的一个;

PCS-options:指定了要使用的过程调用标准;

source-language:指定了编译器可以接受的编写源程序的语言种类。对于C编译器默认的语言是ANSI C,对于C++编译器默认是ISO标准C++;

search-paths:该选项指定了对包含的文件(包括源文件和头文件)的搜索路径;

preprocessor-options:该选项指定了预处理器的行为,其中包括预处理器的输出和宏定义等特性;

output-format:该选项指定了编译器的输出格式,可以使用该项生成汇编语言输出列表文件和目标文件;

target-options:该选项指定目标处理器或ARM体系结构;

debug-options:该选项指定调试信息表是否生成,和该调试信息表生成时的格式;

code-generation-options:该选项指定了例如优化,字节顺序和由编译器产生的数据对齐格式等选项;

warning-options:该选项决定警告信息是否产生;

additional-checks:该选项指定了几个能用于源码的附加检查,例如检查数据流异常,检查没有使用的声明等;

error-options:该选项可以关闭指定的可恢复的错误,或者将一些指定的错误降级为警告;

source:该选项提供了包含有C或C++源代码的一个或多个文件名,默认的,编译器在当前路径寻找源文件和创建输出文件。如果源文件是用汇编语言编写的(也就是说该文件的文件名是以.s作为扩展名),汇编器将被调用来处理这些源文件。

如果操作系统对命令行的长度有限制,可以使用下面的操作,从文件中读取另外的命令行选项:

-via filename

该命令打开文件名为filename的文件,并从中读取命令行选项。用户可以对-via进行嵌套调用,亦即,在文件filename中又通过-via finlename2包含了另外一个文件。

在下面的例子中,从input.txt文件中读取指定的选项,作为armcpp的操作选项:

armcpp -via input.txtsource.c

以上是对编译器选项的一个简单概述。它们(包括后面还要介绍的其他一些命令工具)既可以在命令控制台环境下使用,同时由于它们被嵌入到了ADS的图形界面中,所以也可以在图形界面下使用。

8.1.1.2armlink用法详解

在介绍armlink的使用方法之前,先介绍要涉及到的一些术语。

映像文件(image):是指一个可执行文件,在执行的时候被加载到处理器中。一个映像文件有多个线程。它是ELF(Executable and linking format)格式的。

段(Section):描述映像文件的代码或数据块。

RO:是Read-only的简写形式。

RW:是Read-write.的简写形式。

ZI:是Zero-initialized的简写形式。

输入段(input section):它包含着代码,初始化数据或描述了在应用程序运行之前必须要初始化为0的一段内存。

输出段(output section):它包含了一系列具有相同的RO,RW或ZI属性的输入段。

域(Regions):在一个映像文件中,一个域包含了1至3个输出段。多个域组织在一起,就构成了最终的映像文件。

Read Only Position Independent(ROPI):它是指一个段,在这个段中代码和只读数据的地址在运行时候可以改变。

Read Write Position Independent(RWPI):它是指一个段,在该段中的可读/写的数据地址在运行期间可以改变。

加载时地址:是指映像文件位于存储器(在该映像文件没有运行时)中的地址。

运行时地址:是指映像文件在运行时的地址。

下面介绍一下armlink命令的语法

完整的连接器命令语法如下:

armlink [-help] [-vsn] [-partial] [-output file] [-elf] [-reloc][-ro-base address] [-ropi]

[-rw-base address] [-rwpi] [-split]

[-scatter file][-debug|-nodebug][-remove?RO/RW/ZI/DBG]|-noremove] [-entry location ]

[-keep section-id] [-first section-id] [-last section-id] [-libpath pathlist] [-scanlib|-noscanlib] [-locals|-nolocals] [-callgraph] [-info topics] [-map] [-symbols] [-symdefs file] [-edit file] [-xref] [-xreffrom object(section)] [-xrefto object(section)] [-errors file] [-list file] [-verbose]

[-unmangled |-mangled] [-match crossmangled][-via file] [-strict]

[-unresolved symbol][-MI|-LI|-BI] [input-file-list]

上面各选项的含义分别为:

-help

这个选项会列出在命令行中常用的一些选项操作。

-vsn

这个选项显示出所用的armlink的版本信息。

-partial

用这个选项创建的是部分链接的目标文件而不是可执行映像文件。

-output file

这个选项指定了输出文件名,该文件可能是部分链接的目标文件,也可能是可执行映像文件。如果输出文件名没有特别指定的话,armlink将使用下面的默认:

如果输出是一个可执行映像文件,则生成的输出文件名为__image.axf;

如果输出是一个部分链接的目标文件,在生成的文件名为__object.o;

如果没有指定输出文件的路径信息,则输出文件就在当前目录下生成。如果指定了路径信息,则所指定的路径成为输出文件的当前路径。

-elf

这个选项生成ELF格式的映像文件,这也是armlink所支持的唯一的一种输出格式,这是默认选项。

-reloc

这个选项生成可重定址的映像。

一个可重定址的映像具有动态的段,这个段中包含可重定址信息,利用这些信息可以在链接后,进行映像文件的重新定址;

-reloc,-rw-base一起使用,但是如果没有-split选项,链接时会产生错误。

-ro-base address

这个选项将包含有RO(Read-Only属性)输出段的加载地址和运行地址设置为address,该地址必须是字对齐的,如果没有指定这个选项,则默认的RO基地址值为0x8000。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Arm CPU正在从根本上推动AI变革,并造福地球。Arm架构是未来AI计算的基石。​

关键字: ARM AI

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

为了赶超云计算市场上的竞争对手,谷歌正试图通过定制的Arm服务器芯片降低云计算服务成本。

关键字: 谷歌 ARM 定制芯片

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

随着汽车软件数量爆发式的增长,整个行业都需要重新思考汽车产品的开发流程。为此,Arm推出了丰富的硬件IP、新的系统IP,以及全新的汽车计算与计算子系统产品路线图,旨在为各种汽车应用实现性能、功能安全、可扩展等方面的支持。

关键字: ARM 汽车电子

知名移动芯片设计公司ARM最近迈出重要一步,它正式推出汽车芯片设计。ARM推出的芯片设计方案名叫Neoverse,随同芯片一起推出的还有面向汽车制造商、汽车供应商的新系统。

关键字: ARM 汽车芯片 芯片

随着通用人工智能的发展,数据中心的计算需求逐步提高。针对多模态数据、大模型的推理和训练需要更高的算力支持,而随着算力提升与之而来的还需更关注在功耗方面的优化。对于头部云计算和服务厂商而言,针对专门用例提高每瓦性能变得至关...

关键字: ARM 服务器 AI Neoverse CSS

一直以来,riscv架构都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来riscv架构的相关介绍,详细内容请看下文。

关键字: riscv ARM riscv架构

最新消息报道,知情人士透露Arm近日裁掉了中国70多名软件工程师,并会将部分职位转移到中国以外的地区。Arm通过“全球服务”部门已经将支持其中国客户的工作外包给安谋科技,该部门曾经拥有约200名员工。

关键字: ARM 裁员

凭借着在个人计算机领域的广泛应用打下的坚实基础,X86自始至终统治着整个服务器生态。而这并不是业界希望看到的,因此Arm服务器被给予厚望。业界期盼Arm能够带来新的服务器CPU替代:打破一个同质化的数据中心架构,实现更高...

关键字: ARM 服务器 AI
关闭
关闭