您的位置 首页 IC

ARM裸机开发bootloader代码搬移从SRAM到DRAM

本部分分两部分去阐述:1、ARM启动流程2、编写代码一、2440:一上电,就从Nand中取出4KB的代码到SRAM中steppingstone运行,并对内存进行…

本部分分两部分去论述:

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/265147.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部