Image$$RO$$Limit|等常量的问题

Image$$RO$$Limit|等常量的问题

|Image$$RO$$Limit|是不是指数据段,在flash中的起始地址阿(如果代码烧在flash中的话)!
|Image$$RW$$Base|是不是flash中的数据段的在sdram的执行起始地址阿![!21ki@][@21ki!]
|Image$$ZI$$Base|是不是sdram中0地址区起始阿!
|Image$$ZI$$Limit|是不是sdram中0地址区的结束地址阿 !
如果照我理解的没有错的话,下面那段代码把flash中的数据段复制到了sdram中的某个位置,[!21ki@][@21ki!]
然后再sdram中初始化了一个0区域,这个0区域的作用我不是很清楚,猜测是为c程序的变量做准备的,不知对不对!
那么还有一个问题,能不能把代码段也搬到sdram中运行,这样代码的运行速度不是更快了么?我看了好几个版本的启动代码,为什么大家都不这么做!谢谢
启动代码里面有这样一段:
    LDR r0, =|Image$$RO$$Limit| ;Get pointer to ROM data[!21ki@][@21ki!]
    LDR r1, =|Image$$RW$$Base| ;and RAM copy[!21ki@][@21ki!]
    LDR r3, =|Image$$ZI$$Base| [!21ki@][@21ki!] ;Zero init base => top of initialised data[!21ki@][@21ki!]
    CMP  r0, r1             ;Check that they are different[!21ki@][@21ki!]
    BEQ  %F1         ;若相等则跳转到1,相同,则不拷贝该区间,初始化零数据区
0  

    CMP  r1, r3                      ; 如果r0不等于r1,r1和r3比较,Copy init data[!21ki@][@21ki!]
    LDRCC   r2, [r0], #4      ; --> LDRCC r2, [r0] + ADD r0, r0, #4   [!21ki@][@21ki!]
    STRCC   r2, [r1], #4     ; --> STRCC r2, [r1] + ADD r1, r1, #4[!21ki@][@21ki!]
    BCC  %B0   ;当无符号数r1<r3时,跳转到0,也就是说如果r0不等于r1那么就要把r0开始处的数据全部移到r1开始处!r3得值,应该正好是r1的结尾处[!21ki@][@21ki!]
1  [!21ki@][@21ki!]
    LDR   r1, =|Image$$ZI$$Limit|  ;Top of zero init segment,     MOV   r2, #0     ;r2=0[!21ki@][@21ki!]
2  [!21ki@][@21ki!]
    CMP   r3, r1        ;比较r3和r1,注意这个时候r1是|Image$$ZI$$Limit|,Zero init[!21ki@][@21ki!]
    STRCC   r2, [r3], #4   ;当无符号数r3<r1时,把r2的值放到r3的地址处,然后r3=r3+4 --> STRCC r2, [r3] + ADD r3, r3, #4[!21ki@][@21ki!]
    BCC     %B2     ;当无符号数r3<r1时,跳转到2处,这样做就完成了zi区的初始化清0

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值