现在的位置: 首页 > 综合 > 正文

ARM – ADS, RealView 编译工具(节选1)

2013年03月30日 ⁄ 综合 ⁄ 共 4141字 ⁄ 字号 评论关闭
 

RVCT(RealView Compile Tools):RealView编译工具
EABI(Embedded Application Binary Interface)
双短线(--)指示命令行关键字,单短线(-)用于命令行单字母选项
半位机:开发硬件经常没有最终系统的所有输入和输出设备。需要采用软件机制对应用程序代码的输入/输出(I/O)请求进行服务。此机制使用软件中断操作(SWI)操作来实现,称为半位机。半位机可让ARM目标将I/O请求从应用程序代码传递到运行调试器的主机。

  

几个因素会影响ARM编译程序搜索#include头文件和源文件的方式。
  • -I和-J编译程序选项
  • -fk和-fd编译程序选项
  • 环境变量RVCT20INC和ARMINC的值
  • 文件名使用绝对路径还是相对路径
  • 文件名在尖括号(angle brackets)还是双引号之间(double quotes)

默认情况下,ARM编译程序使用Berkeley UNIX搜索规则,因此相对于当前位置搜索源文件和#include头文件。它指包含编译程序当前正在处理的源文件或头文件目录。选项-fk禁止当前位置形成栈。该选项运行编译程序使用KernighanRitchieThe C Programming Language中介绍的搜索规则。

 

The ARMINC environment variable
可设置ARMINC环境变量指向与ARM一块提供的包含的头文件和源文件的位置,不能更改此环境变量。如果包含其它位置的文件,可根据需要使用-I和-J命令行选项。当从命令行编译时,搜索完由-I选项指定的目录后立即搜索ARMINC指定的目录。如果使用-J,则忽略ARMINC。
下表显示包含的头文件和源文件时,使用怎样的搜索路径。

CP:指当前的工作路径

 

编译程序选项
<include>
“include”
既非-I也非-J
ARMINC
CP, ARMINC
-J
Jdirs
CPJdirs
-I
IdirsARMINC
CP, IdirsARMINC
既有-I又有-J
JdirsIdirs
CPIdirsJdirs
-fd
无影响
从搜索路径中删除CP,使搜索路径与尖括号调用的内容相同
-fk
无影响
使用KernighanRitchie搜索规则

 

调用ARM编译程序
armcc [PCS-options][source-language][search-paths][preprocessor-options][C++-lanague][output-format][target-options][debug-options][code-generation-options][diagnostic-options][warning-options][additional-checks][error-options][source]
 

选项
描述
PCS-options
使用的程序调用标准This specifies the procedure call standard to use
source-language
指定编译程序接受的源语言的变体。编译C代码时默认为ISO C,编译C++代码时默认为ISO Standard C++
search-paths
指定搜索包含文件的目录
preprocessor-options
指定预处理程序特征,包括预处理程序输出和宏定义
C++-language
指定针对C++编译的选项
output-format
指定编译程序输出格式。可使用这些选项生成汇编语言输出列表文件和目标文件
target-options
指定目标处理器或体系结构
debug-options
指定是否生成调试表及其格式
code-generation-options
指定诸如优化、字节顺序和编译程序产生的数据的对齐这些选项
diagnostic-options
其指定的选项能够控制由编译程序输出的诊断信息
warning-options
指定是否生成特定的警告信息
additional-checks
指定若干可应用于代码的其它检查,如检查数据流异常和未使用声明
error-options
它能够关闭特定可恢复错误,或将特定错误降为警告
source
提供包含CC++源代码的一个或多个文本文件的文件名
 
·          从文件读取编译程序选项
当操作系统限制命令行长度时,可将命令行选项包含于文件中。使用
         --via filename
         armcpp –-via input.txt source.c
编译程序打开指定文件,并从中读取其它命令行选项。via文件需要一定格式。
·          程序调用标准选项
ARM-Thumb程序调用标准(ATPCS).
-apcs qualifiers
 

如果要使用-apcs命令行选项:至少要出现一个限定符,限定符之间不能有空格。
如果没有指定—apcs或—cpu选项,默认为:
        --apcs /noswst/nointer/noropi/norwpi –fpu softvfp
 
Interworking qualifiers(交互操作限定符)
/nointerwork     该选项生成没有ARM/Thumb交互操作支持的代码,ARMv5T以下
                          版本,该选项为默认选项。
/interwork         该选项生成有ARM/Thumb交互操作支持的代码
 /**********************
 * thumbmain.c *
*********************
*/

#include 
<stdio.h>
extern void arm_function(void);
int main(void)
{
   printf(
"Hello from Thumb World ");
   arm_function();
   printf(
"And goodbye from Thumb World ");
   
return (0);
}

/**********************
* armsub.c *
*********************
*/

#include 
<stdio.h>
void arm_function(void)
{
   printf(
"Hello and Goodbye from ARM world ");
}

To compile and link these modules:
1. Type tcc --apcs /interwork -o thumbmain.o thumbmain.c at the system prompt to compile the Thumb code for interworking.
2. Type armcc --apcs /interwork -o armsub.o armsub.c to compile the ARM code for interworking.

 

?/noropi        该选型生成非(只读)位置独立代码
?/ropi         
?/norwpi
?/rwpi
栈检查限定符
?/noswstackcheck
?/swstackcheck
 
Setting the source language
根据这些选项,可指定编译程序使用的编程语言,确定编译程序实施该语言的标准和约定的严格程度。默认情况下,C代码编译ISO C代码。编译C++代码的能力等同于ISO/IEC C++。有如下选项:
   -ansi
-ansic
-cpp
-embeddedcplusplus
-strict
 

Specifying search paths
利用这些选项可指定搜索包含头文件的目录
-Idir_name
-fk
-fd
-jdir-list
 

Setting preprocessor options
The following command-line options control aspects of the preprocessor.这些选项用于控制预处理程序某些方面。
-E        仅执行编译程序的预处理程序阶段。默认情况下,预处理程序的输出发送到   
            标准输出流,可用UNIX和MS-DOS进行重定向。
            armcc –E souce.c > raw.c
            默认情况下,-E选项会删除注释。 
头文件test.h
#define TEST_ONE 1
#define TEST_TWO 2

源文件test.c

 

#include "test.h"
/* include header file test.h */
int sum(int a, int b)
{
  
int k = TEST_ONE;
  
return a + b + k + TEST_TWO;   /* add a and b */
}

-E选项的输出为:

 

#line 1 "test.c"
#line 1 "test.h"


#line 2 "test.c"
 
int sum(int a, int b)
{
  
int k =  1 ;
  
return a + b + k +  2 ;  
}

 

-C         预处理程序中保留注释,同-E共同使用时,必须跟在-E后面
-M           仅执行编译程序的预处理阶段,该选项产生所用于make使用程序的   
                 makefile依赖列表。
                 test.o : test.h
                 test.o : test.c
                 而gcc –M的输出为
                 test.o : test.c test.h
-Dsymbol=value
                 将symbol定义为预处理程序的宏。同源文件开头#define symbol value具
                 有相同的作用。
-Dsymbol
                 将symbol定义为预处理程序宏
-Uname

                 删除宏name的任何初始定义

抱歉!评论已关闭.