单片机
返回首页

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

2016-06-07 来源:eefocus

本部分分两部分去阐述:

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

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

 

copy_to_ram:
	ldr r0, =0x0c000000
	ldr r1, =0x50008000
	add r3, r0, #1024*4
copy_loop:
	ldr r2, [r0], #4
	str r2, [r1], #4
	cmp r0, r3
	bne copy_loop
	mov pc, lr
 

 


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 光控音效发生器电路

  • 非常简单的150W功放电路图

  • 一个简单的警笛电路图

  • 一个简单的立体声平衡指示器电路

  • 分享一个电网倾角计电路

  • 使用NE555和磁簧开关的橱柜照明电路

    相关电子头条文章