- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京大学出版社出版 杨宗德编著 嵌入式ARM系统原理与实例开发 北京大学出版社 出版 杨宗德 编著 2007年7月 ADS1.2软件环境开发流程 ARM命令参数说明 (1.armasm汇编编译指令,) 此命令用来编译汇编程序,其命令格式: armasm [选项] -o 目标文件 源文件 参数选项说明如下: -Errors 错误文件名 ;指定一个错误输出文件 -I 目录 [,目录] ;指定源文件搜索目录 -PreDefine 预定义宏 ;指定预定义的宏 -NOCache ;编译源代码时禁止使用Cache进行优化 -MaxCache n ;编译源代码时使用Cache进行优化 -NOWarn ;关闭所有的警告信息 -G ;输出调试表 -keep ;在目标文件中保存本地符号表 -LIttleend ;生成小端(Little-endian)ARM代码 -BIgend ;生成大端(Big-endian)ARM代码 -CPU target-cpu ;设立目标板ARM核类型,如: arm920t -16 ;建立16位的thumb指令 -32 ;建立32位的ARM指令 编译一个汇编文件命令示例如下: c:\armasm -LIttleend -cpu ARM920T -32 test.s 2. armcc/armcpp C/C++编译器 armcc用来编译C程序,armcpp用来编译C++程序,其命令格式如下: 1. 命令:armcc [选项] 源文件1 源文件2 ... 源文件n 这两个命令的选项说明如下: -c ;编译但是不连接 -D ;指定一个编译时使用的预定义宏常量 -E ;仅仅对C源文件做预处理 -g ;产生调试信息表 -I ;指头文件的搜索路径 -ofile ;指定一个输出的目标文件 -O[0/1/2] ;指定源代码的优化级别 -S ;输出汇编代码来代替目标文件 -CPU target-cpu ;设立目标板ARM核类型,如arm920t 编译一个C程序命令示例如下: c:\armcc -c -O1 -cpu ARM920T test.c 3. armlink链接器 此命令用来链接目标文件,其命令格式如下: armlink [选项] 输入文件 此命令选项参数说明如下: -partial ;合并目标文件 -Output 文件 ;指定输出文件名 -scatter 文件 ;按照指定的文件为可执行文件建立内存映射 -ro-base 地址值 ;只读代码段的起始地址 -rw-base 地址值 ;RW/ZI段的起始地址 示例 c:\armlink -partial bdmain.o bdport.o bdserial.o bdmmu.o bdisr.o -o testd.o c:\armlink bd.o bdinit.o -scatter bdscf.scf -o test.axf 4. fromelf 此命令从axf格式文件生成一个二进制可执行文件。其命令格式如下: fromelf [选项] 输入文件 此命令选项说明如下: -bin 二进制文件名 ;产生的二进制文件 -elf elf文件名 ;产生一个elf文件 -text text文件名 ;产生text文件 产生一个可执行的二进制代码示例如下: c:\fromelf test.axf –bin –o test.bin 此命令从test.axf生成二进制文件test.bin。 可执行文件结构及内存映射 在ADS下,可执行文件有两种: 一种是.axf文件,带有调试信息,可供ADS平台下的AXD调试工具使用,进行调试工作。 一种是.bin文件,可执行的二进制代码文件,下载到嵌入式硬件设备中FLASH中运行。 存放态可执行文件存储方式 运行态代码分布 RO段:此部分对应原来的只读部分,包括.rodata和.text两个部分。 RW段:此部分为原来的.data部分,主要存储的可读写数据。 ZI段:此部分为.bss段,所有内容初始化为0。 程序装载过程 在ADS中,可以通过两种方式来指定可执行代码各段在RAM中的位置: 一个是用armlink来指定。 一种是用scatter文件来指定。 在ADS中,各代码段宏定义如下: |Image$$RO$$Base| ;RO代码段起始地址 |Image$$RO$$Limit| ;RO代码段结束地址 |Image$$RW$$Base| ;RW代码段起始地址 |Image$$RW$$Limit| ;RW代码段结束地址 |Image$$ZI$$Base|
文档评论(0)