本文共 709 字,大约阅读时间需要 2 分钟。
代码搬移:将nand flash中的bootloader拷贝到内存
规范的代码搬移应该是将nand flash中的bootloader拷贝到内存,但由于到目前为止还没对nand flash进行初始化,且目前编写的bootloader远小于4KB,因此今天的代码搬移是将SRAM中的bootloader拷贝到内存 起点:SRAM 各芯片的SRAM起始地址有所不同,可通过芯片手册查询(S5PV210的SRAM的起始地址为0xd0020000,但因为芯片刚上电BL0从nand flash中拷贝BL1到SRAM时,代码BL1已经添加了16字节的头信息,因此从SRAM拷贝代码到内存时不能将这头信息也拷贝到内存,即起点地址变为0xd0020010)S3C2440 | S3C6410 | S5PV210 |
---|---|---|
0x0 | 0x0c000000 | 0xd0020010 |
终点:链接脚本中的代码起始地址
以S3C2440代码为例,汇编代码:copy_to_ram: ldr r0, =0x0 @起点 ldr r1, =0x30008000 @终点 add r3, r0, #1024*4 @拷贝4KBcopy_loop: ldr r2, [r0], #4 @将r0地址指令赋给r2寄存器,完成后r0地址加4 str r2, [r1], #4 @将r2寄存器指令写入r1地址,完成后r1地址加4 cmp r0, r3 @判断是否拷贝完成 bne copy_loop
转载地址:http://beigi.baihongyu.com/