RSS

Samsung原版44B0X的Bootloader分析(2)

来源:网络 作者:匿名 时间:2007-01-06 Tag: 点击:

2.RO中的数据是不需要再次拷贝到运行地址处的。

3.RO的代码的加载地址和运行地址是相同的。

4.说明:将数据段拷贝到RAM中,将ZI数据段清零,跳入C语言的main函数执行。到这里Bootloader初步引导结束。拷贝|Image$$RO$$Limit|起始的大小为(|Image$$ZI$$Base|-|Image$$RW$$Base|)的数据拷贝到|Image$$RW$$Base|对应的数据单元处。

 

    ;********************************************************

    ;*    Copy and paste RW data/zero initialized data             *

    ;********************************************************

    LDR           r0, =|Image$$RO$$Limit|      ; Get pointer to ROM data,

;获得ROM中的加载/运行时的RW地址

    LDR           r1, =|Image$$RW$$Base|      ; and RAM copy

                                        ;获得运行时的RW地址

    LDR           r3, =|Image$$ZI$$Base|        ;获得运行时的ZI地址

       ;Zero init base => top of initialised data

                    

    CMP           r0, r1          ; Check that they are different

                                                 ;比较指定的加载RW地址是否与运行时的RW地址相同。

BEQ           %F1                     ;如果相同不需要拷贝RW数据,因为它们的在加载和运行时的地址相同

0            

    CMP           r1, r3          ; Copy init data,因为对RW指定了不同的加载和运行地址,因此需要拷贝

    LDRCC   r2, [r0], #4       ;--> LDRCC r2, [r0] + ADD r0, r0, #4        

    STRCC   r2, [r1], #4         ;--> STRCC r2, [r1] + ADD r1, r1, #4

    BCC     %B0

1            

    LDR           r1, =|Image$$ZI$$Limit|       ;Top of zero init segmen

                                                                      ;初始化ZI数据为0

    MOV          r2, #0

2            

    CMP           r3, r1          ; Zero init
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
教程下载