Image解读

|Image$$RO$$Base| 
表示RO 输出段运行时起始地址,也可以说是程序代码存放的起始地址,由 -ro-base 这个参数指定;
|Image$$RO$$Limit|
表示RO 输出段运行时存储区域界限,其值可通过 |Image$$RO$$Base|+Code sizes+RO Data sizes+4 计算得出; 是编译器内部产生的变,也就是只读属性的程序段的最后一个字句的地址,
|Image$$RW$$Base|
表示RW输出段运行时起始地址,记得是运行时的地址,而不一定是加载时的存放地址,因为 RW 输出段在加载时可能是在 ROM 中并紧跟着 RO 输出段存放的,当程序运行时才移动到 RAM 起始地址为 |Image$$RW$$Base| 的区域,由 -rw-base 这个参数指定;未指定的话,默认紧跟 RO 输出段,那么 |Image$$RW$$Base| |Image$$RO$$Limit|
|Image$$RW$$Limit|
表示RW 输出段运行时存储区域界限,其值可通过 |Image$$RW$$Base|+RW Data sizes+4 计算得出;
|Image$$ZI$$Base|
表示ZI 输出段运行时起始地址,它是运行时在 RAM 中生成的,紧跟着 RW 输出段存放,其值和 |Image$$RW$$Limit| 一样;
|Image$$ZI$$Limit|
表示ZI 输出段运行时存储区域界限,其值可通过 |Image$$ZI$$Base|+ZI Data sizes+4 计算得出。

一个程序包括只读的代码段和可读写的数据段。在ARM的集成开发环境中,只读的代码段和常量被称作RO(ReadOnly);可读写的全局变量和静态变量被称作RW(ReadWrite)RW段中要被初始化为零的变量被称为ZI(ZeroInit)。对于嵌入式系统而言,程序映象都是存储在Flash存储器等一些非易失性器件中的,而在运行时,程序中的RW段必须重新装载到可读写的RAM中。这就涉及到程序的加载时域和运行时域。简单来说,程序的加载时域就是指程序烧入Flash中的状态,运行时域是指程序执行时的状态。对于比较简单的情况,可以在ADS集成开发环境的ARMLINKER选项中指定RO BASERWBASE,告知连接器RORW的连接基地址。对于复杂情况,如RO段被分成几部分并映射到存储空间的多个地方时,需要创建一个称为分布装载描述文件的文本文件,通知连接器把程序的某一部分连接在存储器的某个地址空间。需要指出的是,分布装载描述文件中的定义要按照系统重定向后的存储器分布情况进行。在引导程序完成初始化的任务后,应该把主程序转移到RAM中去运行,以加快系统的运行速度。

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值