智能终端定制开发 ad
MTK/瑞芯微/高通-Android,智能模块/智能终端方案商

深度定制各类智能终端和智能硬件产品,提供硬件选型咨询、参考设计、元器件推荐、驱动开发、行业模块集成、操作系统定制与算法集成等软硬件定制服务。
contact.aspx

Android核心板产品覆盖2G、3G、4G通讯,双核、四核、八核CPU,可选的平台有MTK6580、MTK6737、MTK6750等,Android版本有5.1 6.0 7.0等。
contact.aspx

可广泛应用于低端智能POS、安防监控、车载设备、低端智能机器人、智能家居、智能硬件、工业智能手持设备、低端智能对讲设备、低端警务或执法设备、智能穿戴、贩卖机、物流柜、智能门禁系统等行业和设备。
contact.aspx

可提供以太网转串口透传,WIFI转串口透传,蓝牙转串口透传,CAN总线模拟量控制输出模块等。
contact.aspx

带3G或4G通讯功能,运行android系统,有多个串口,可以外挂各种模块:条码扫描、RFID、指纹识别、身份证识别、磁条卡、ID卡、GPS/北斗模块等。
contact.aspx

具有4G通讯功能,多个RS232或RS485接口,以太网接口,USB接口,CAN接口,多个AD输入。基于Android系统智能平台,方便APP应用开发。器件严格选型,运行稳定,质量可靠。
contact.aspx

ARM ADS集成开发环境的使用(三)
[MTK开发] 2008-04-09

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

-via filename

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

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

armcpp -via input.txt  source.c

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

 8.1.1.2  armlink用法详解

在介绍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。

-ropi

这个选项使得包含有RO输出段的加载域和运行域是位置无关的。如果该选项没有使用,则相应的域被标记为绝对的。通常每一个只读属性的输入段必须是只读位置无关的。如果使用了这个选项,armlink将会进行以下操作:

检查各段之间的重定址是否有效;

确保任何由armlink自身生成的代码是只读位置无关的。

这里希望读者注意的是,ARM工具直到armlink完成了对输入段的处理后,才能够决定最终的生成映像是否为只读位置无关的。这就意味着 ,即使为编译器和汇编器指定了ROPI选项,armlink也可能会产生ROPI错误信息。

-rw-base address

这个选项设置包含RW(Read/Write属性)输出段的域的运行时地址,该地址必须是字对齐的。

如果这个选项和-split选项一起使用,将设置包含RW输出段的域的加载和运行时地址都设置在address处。

-rwpi

这个选项使得包含有RW和ZI(Zero Initialization,初始化为0)属性的输出段的加载和运行时域为位置无关的。如果该选项没有使用,相应域标记为绝对的。这个选项要求-rw-base选项后有值,如果-rw-base没有指定的话,默认其值为0,即相当于-rw-base 0。通常每一个可写的输入段必须是可读/ 可写的位置无关的。

如果使用了该选项,armlink会进行以下的操作:

检查可读/可写属性的运行域的输入段是否设置了位置无关属性;

检查在各段之间的重定址是否有效;

生成基于静态寄存器sb的条目,这些在RO和RW域被拷贝和初始化的时候会用到。

编译器并不会强制可写的数据一定要为位置无关的,这就是说,即使在为编译器和汇编器指定了RWPI选项,armlink也可能生成数据不是RWPI的信息。

-split

这个选项将包含RO和RW属性的输出段的加载域,分割成2个加载域。一个是包含RO输出段的加载域,默认的加载地址为0x8000,但是可以用-ro-base选项设置其他的地址值,另一个加载域包含RO属性的输出段,由-rw-base选项指定加载地址,如果没有使用-rw-base选项的话,默认使用的是-rw-base 0。

-scatter file

这个选项使用在file中包含的分组和定位信息来创建映像内存映射。

注意,如果使用了该选项的话,必须要重新实现堆栈初始化函数__user_initial_stackheap()。

[MTK开发添加评论 | 评论/阅读(1/717)
评论
昵称
主页
内容
递交


Copyright @ 我的开发笔记     2008 - 2017         粤ICP备19155526号-1