ARM裸机开发bootloader代码搬移从SRAM到DRAM
时间:11-19
来源:互联网
点击:
本部分分两部分去阐述:
1、ARM启动流程
2、编写代码
一、2440:一上电,就从Nand中取出4KB的代码到SRAM中stepping stone运行,并对内存进行初始化。而后将Nand中代码全部到内存中。
6410:一上电,SROM中的BL0会将Nand中8KB的代码搬移到SRAM中stepping stone运行,并对内存进行初始化。而后将Nand中代码全部到内存中,剩余代码会在内存中运行。
210:一上电,SROM中的BL0会将Nand中代码到IRAM中运行,初始化内存。而后将Nand中全部代码搬移到内存中。
注:2440中stepping stone有4KB 6410中stepping stone有8KB 210中stepping stone 为96KB
二、编写代码
步骤:首先确定搬移的起点和终点,而后使用循环进行搬移。
起点:SRAM
2440:0x0
6410:0x0c000000
210:0x00020000
终点:内存的链接地址
链接起始地址:起始代码在内存中出现的地址。
下面很有必要介绍一下相对地址与绝对地址:
绝对地址:C语言中调用函数;对PC赋值
相对地址:汇编中的B指令,就是进行相对地址操作。它移动相对地址标号的位移。
以6410为例:起点:0x0c000000 终点0x50008000
copy_to_ram:ldr r0, =0x0c000000ldr r1, =0x50008000add r3, r0, #1024*4copy_loop:ldr r2, [r0], #4str r2, [r1], #4cmp r0, r3bne copy_loopmov pc, lr
ARM裸机开发bootloader代码搬移 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)