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

 
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
CP Jdirs
-I
Idirs ARMINC
CP, Idirs ARMINC
既有 -I 又有 -J
Jdirs Idirs
CP Idirs Jdirs
-fd
无影响
从搜索路径中删除 CP ,使搜索路径与尖括号调用的内容相同
-fk
无影响
使用 Kernighan Ritchie 搜索规则

 

调用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
提供包含 C C++ 源代码的一个或多个文本文件的文件名

 
·          从文件读取编译程序选项
当操作系统限制命令行长度时,可将命令行选项包含于文件中。使用
         --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的任何初始定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值