c语言lst文件,ARM空间分段(lst文件夹下map文件)

局部变量占用栈(stack)空间。

程序中动态申请的如malloc()和new函数申请的内存空间占用堆(heap)空间。本文引用地址:http://www.eepw.com.cn/article/201611/317739.htm

|ImageRO

Base|

表示RO输出段运行时起始地址,也可以说是程序代码存放的起始地址,由-ro-base这个参数指定;

|ImageRO

Limit|

表示RO输出段运行时存储区域界限,其值可通过|ImageRO

Base|+Codesizes+RO Data sizes+4计算得出;

|ImageRW

Base|

表示RW输出段运行时起始地址,记得是运行时的地址,而不一定是加载时的存放地址,因为RW输出段在加载时可能是在ROM中并紧跟着RO输出段存放的,当程序运行时才移动(在有些书中说是移动,个人觉得应该只是复制,希望大家能帮我解释一下,谢谢!)到RAM起始地址为|ImageRW

Base|的区域,由-rw-base这个参数指定;未指定的话,默认紧跟RO输出段,那么|ImageRW

Base|=|ImageRO

Limit|;

|ImageRW

Limit|

表示RW输出段运行时存储区域界限,其值可通过|ImageRW

Base|+RW Data sizes+4计算得出;

|ImageZI

Base|

表示ZI输出段运行时起始地址,它是运行时在RAM中生成的,紧跟着RW输出段存放,其值和|ImageRW

Limit|一样;

|ImageZI

Limit|

表示ZI输出段运行时存储区域界限,其值可通过|ImageZI

Base|+ZI Data sizes+4计算得出。

CODE 是 RO-CODE同义词,也是.text同义词

CONST是RO-DATA同义词,也是.constdata同义词

DATA是RW-DATA同义词,也是.data同义词

ZI是.bss的同义词

Total RO Size (Code + RO Data) 12216 ( 11.93kB)

Total RW Size (RW Data + ZI Data) 292 ( 0.29kB)

Total ROM Size (Code + RO Data + RW Data) 12412 ( 12.12kB)

应用程序的堆栈(stack)和堆(heap)是在C库函数初始化过程中建立起来的,在ADSl.2或更新版本中,在缺省状态下C库函数初始化代码会将连接器生成的符号ImageZI

Limit地址作为堆的基地址。在分散加载时,连接器会将用户的__user_initidl_stackheap()函数代替C库函数默认的堆栈和堆初始化函数,并将其连接到用户的镜像文件中,用户可通过重新实现__user_initial_stackheap()函数来改变堆栈和堆的位置,从而适合自己的目标硬件。

__user_initial_stackheap()可以用C或汇编语言来实现。它必须返回如下参数:

r0—堆基地址;

r1—堆栈基地址;

r2—堆长度限制值(需要的话);

r3—堆栈长度限制值(需要的话)。

当用户使用分散加载功能的时候,必须重新实现一user_initial_staacklaeap(),否则连接器会报错:

Error:L6218E:Undefined symbol ImagerZI

一Limit(referred from sys_stackheap.o)。

注:ImageZI

Limit变量为零初始化段(ZI段)的末地址。未使用分散加载时,堆默认就定位在ZI段的末地址,而栈通常位于RAM的顶端

fa0db3aacdf677530e440b913d867b74.png

(2)使用两个存储区

汇编语言如下:

ed81046088476eedc3f1d29636f5b166.png

这种方式定义的堆栈和堆分别采用两个不同存储区。堆栈采用向下增长,从地址Ox40000到地址Ox20000;堆采用向上增长,从地址0x28000000到地址0x28080000,如图4所示。

aa2648250ba84390e404a687a4606529.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值