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

本文详细介绍了不同ARM设备如2440、6410及210的启动流程,包括从Nand闪存加载初始代码到SRAM或IRAM的过程。此外,还提供了具体的代码示例来说明如何实现从SRAM到内存的代码搬运。
部署运行你感兴趣的模型镜像

本部分分两部分去阐述:

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, =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

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值