U-boot

U-BOOT
cortexa8的引导过程,及存储空间的排布
芯片内部集成有irom,iram,其中,irom的起始地址就是0地址,程序启动时,先从0地址开始运行,此处集成的是三星厂家的引导程序,它的功能是:
通过nand控制器,从nand里面读取boot的前16K(iram的大小为16K)到iram中去执行。
uboot编译好后,已经有链接地址,并且大小大于16K,所以完整的uboot不可能放到iram中去执行,所以,iram只是一个跳板作用:通过u-boot的前16K,
完成把所有的u-boot搬移到ram中去,并跳转到ram中去执行。
听起来很完美,可是有一个问题,那就是编译bootload时,我们已经确定好了链接地址,即程序运行的位置,也就是说,程序必须位于它所在的链接地址,才能完美运行。
可是,不论我们的u-boot的链接地址是多少,irom始终把前16k放在固定的位置(iram的地址已经固定),所以必须保证u-boot的前16K必须用相对指令b、bl等,他们跳转的都是相对当前pc的偏转,不是绝对地址,和链接地址没关系。
决不能使用ldr pc xx,这是绝对地址,在链接时已经确定好了。


前16K代码初始化好ram,并把u-boot完整的搬移到链接地址的地方,跳转,就可以继续执行剩下的u-boot。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值