



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Arm 系统中常用的段分类说明一基本概念: .text段是代码段。它用来放程序代码(code)。它通常是只读的。 .data段是数据段。它用来存放初始化了的(initailized)全局变量(global)和初始化了的静态变量 (static)。它是可读可写的。 .bss段是全局变量数据段。它用来存放未初始化的(uninitailized)全局变量(global)和未初始化的静 态变量(static)。它也是可读可写的。bss是英文Block Started by Symbol的缩写。之所以把bss跟data 分开来,是因为系统会为这些bss段的变量的初值清零。 .rodata段是常量数据段。它用来存放常量(const)。它也是只读的。 可以归类代码段1、栈(存放着局部变量和函数参数等数据),向下生长 (可读可写可执行)2、堆(给动态分配内存是使用),向上生长 (可读可写可执行)3、数据段(保存全局数据和静态数据) (可读可写不可执行)4、代码段(保存代码) (可读可执行不可写)注:向上增长:向高地址增长向下增长:向低地址增长代码段和数据段之间有明确的分隔,但是数据段和堆栈段之间没有,而且栈是向下增长,堆是向上增长的,因此理论上来说堆和栈会“增长到一起”,但是操作系统会防止这样的错误发生二进一步阐释,在ARM的集成开发环境中: 1、只读的代码段称为Code段,即上述的.text段。 2、只读的常量数据段,被称作RO Data段,即上述的.constdata段。 以上两个段统称为RO段(Read Only),放在ROM或FLASH等非易失性器件中。 3、可读可写的初始化了的全局变量和静态变量段,被称作RW Data段(ReadWrite),即上述的.data段 。 4、可读可写的未初始化的全局变量和静态变量段,被称作ZI Data段(Zero Init),即上述的.bss段。 因为这个段里的变量要被初始化为零,所以叫ZI段。 以上两个段统称为RW段,在运行时,它必须重新装载到可读可写的内部RAM中。 方法:可执行文件通过一定的方式内存映射在ADS下,可执行文件,种类:有两种:一种是.axf文件,带有调试信息,可供AXD调试工具使用.另一种是.bin 文件,可执行的二进制代码文件。bin文件的组成。我们把可执行文件分为两种情况:分别为存放态和运行态。 1. 存放态是指可执行文件通过fromelf产生后,在存储介质(flash或磁盘)上的分布. 此时可执行文件一般由两部分组成:分别是代码段和数据段。代码段又分为可执行代码段(.text)和只读数据段(.rodata), 数据段又分为初始化数据段(.data)和未初始化数据段(.bss)。可执行文件的存放态,装载前 ROM分布如下: | . | +-+- | .bss | ZI 段+-+- +-+- 数据段 | .data | RW 段 +-+-+-+- | .rodata | |+-+-_| 代码段(RO 段) | .text |+-+-| . | 2. 运行态可执行文件通过装载过程, 搬入到RAM中运行, 这时候可执行文件就变成运行态。在ADS下对可执行代码各段有另一个名称: 当可执行文件装载后, 在RAM中的分布如下: | . | +-+- ZI段结束地址 | ZI 段 | +-+- ZI段起始地址 | 保留区2 | +-+- RW段结束地址 | RW 段 | +-+- RW段起始地址 | 保留区1 | +-+- RO段结束地址 | RO 段 | +-+- RO段起始地址 | . | 装载后所以装载过程必须完成把执行文件的各个段从存储介质上搬到RAM指定的位置。而这个装载过程由谁 来完成呢?由启动程序来完成. 3.如何装载?装载过程在ADS中,可以通过两种方式来指定可执行代码各段在RAM中的位置一种是用armlink来指定,一种是用scatter文件来指定.RAM区的起始地址:0x30000000. 1. armlink指定代码段地址。我们通常的代码,只用指定两个段开始地址, RO段的起始地址和RW段的起始地址, ZI段紧接在RW段之后. 2. scatter指定代码段地址。通过scatter文件指定可执行文件各段的详细地址. Scatter文件,例如: MYLOADER 0x30000000 ;/MYLOADER: 为可执行文件的名称, 可自定义 ;0x3000000: 起始地址 RO 0x30000000 ; /RO 只读代码段的名称 ;0x30000000: 只读代码段的起始地址 init.o (Init, +First) ;/ Init代码段为可执行文件的第一部分. (+RO) ;/所有其它的代码段和只读数据段放在该部分 RW +0 ;/RW: RW段的名称 ;+0: 表示RW段紧接着RO段 (+RW) ; /所有RW段放在该部分 ZI +0 ;/ZI: ZI段的名称 ;+0: 表示ZI段紧接着RW段 *(+ZI) ;/所有ZI段放在该部分 3. ADS产生的各代码段宏 |Image$RO$Base| /* RO代码段起始地址 */ |Image$RO$Limit| /* RO 代码段结束地址 */ |Image$RW$Base| /* RW代码段起始地址 */ |Image$RW$Limit| /* RW 代码段结束地址 */ |Image$ZI$Base| /* ZI 代码段起始地址 */ |Image$ZI$Limit| /* ZI 代码段结束地址 */ 注意:在两个$之间的名称, 与scatter中指定的段的名称相同. 4. 装载过程说明l 当从NorFlash启动时, 要把flash芯片的首地址映射到0x00000000位置, l 系统启动后, 启动程序本身把自己从 flash中搬到RAM中运行. 搬移后的各段起始地址, 由以上宏来确定. l 当从NandFlash启动时, S3C2410会自动把前NandFlash的前4k搬到S3C2410的内部RAM中,并把内部 RAM的首地址设为0x00000000,CPU从0x00000000开始执行. 所以, 在nandFlash的前4k程序中,必须 包含从 NandFlash把BootLoader的其余部分装入RAM的程序. 附:TI 编译中常用的段说明 系统常用的段定义: .cinit:包含未用const声明的外部(external)或静态(static)数据表 .const:包含已用const声明的外部或静态数据表以及字符串常量。 .text:包含所有可执行的代码以及常量。 .bss:用于为cinit段以及未初始化的全局和静态变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疼痛科课件教学课件
- 小学语文人教版二年级上册第二单元《树歌》教育教学课件
- 2025年出口贸易合同模板示例
- 道路设计管理课件
- 滕王阁序教案
- 2025年私人出租住房租赁合同协议书
- 造价工程师课件网校网盘
- 待定系数法讲课文档
- 第治疗中枢神经系统退行性疾病药讲课文档
- 2026届四川省自贡市富顺二中学中考联考数学试题含解析
- 理疗店合伙协议合同范本
- 2025年施工员-土建方向-岗位技能(施工员)考试题库
- 2025年度跨境电商平台合作运营合同
- 物业相关法律知识培训
- 2025发展对象培训班考试试题及参考答案
- 呼吸内科专科建设
- 2024广西专业技术人员继续教育公需科目参考答案(97分)
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 施工班组考核评分表
- 航运上市公司的绩效评价概述
- 初中虚拟语气讲解PPT精品文档
评论
0/150
提交评论