三十一.代码搬移

本文介绍U-Boot启动过程中因垫脚石空间限制而采用的内存迁移技术。详细讲解了如何通过相对跳转和绝对跳转将U-Boot剩余部分从垫脚石复制到内存,并说明了这一过程的具体实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.垫脚石空间不够存放完整的uboot,所以要利用前面能够存放在垫脚石里的代码将剩余uboot复制到内存

2.相对跳转和绝对跳转

3.起始地址:(在本课由于未初始化NAND,所以起始地址在垫脚石)垫脚石的起始地址。
终点:链接器脚本里指定的起始链接地址

4.搬移方式,地址每次自动增加4个字节,利用一个中转寄存器。

5.代码:
@将bin文件从_start开始到bss_start结束的数据搬移到_start指定的链接地址(0x50008000)
copy_to_ddr:
	adr	r0,	_start
	ldr	r1,	=_start
	ldr	r2,	=bss_start
	
copy_loop:
	ldr	r3,[r0],#4
	str	r3,[r1],#4
	cmp	r1,r2
	bne	copy_loop
	
	mov	pc,	lr


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值