嵌入式Linux引导过程之1.5——从BootRom到Xloader

本文介绍了嵌入式Linux系统启动过程中,从BootRom加载到Xloader的流程。当系统上电,BootRom中的代码开始执行,检查Flash的第0号sector是否存在uboot或Xloader image。若未找到uboot,会寻找Xloader image,并根据image header加载到SRAM的指定地址,然后跳转执行Xloader。Xloader的加载地址由Makefile中的TEXT_BASE参数决定。
摘要由CSDN通过智能技术生成

--by FeCen

在开始看Xloader_Entry的代码之前,我想先总结一下从芯片上电到开始运行Xloader的代码的过程,这是我目前理解的一个过程,可能有所出入,待以后继续完善。
当系统上电之后,首先会将PC寄存器设置成BootRom里面的代码对应的一个地址。BootRom是芯片内部集成的一块很小的存储区,里面一般会固化一段启动代码。至于BootRom所占用的地址空间,每个芯片的定义可能会有所不同,具体的可以参考芯片的用户手册中的Memory Map部分的说明。在spearplus中,BootRom位于从0xFF000000到0xFFFFFFFF的16M大小的地址区间。当然,BootRom的大小不一定要那么大,这只是说,这些地方给你用了,具体你用了多少随你自己,够用就行。在spearplus里面是32k。
那么BootRom有那么大的一片地址区域可以用,具体系统上电的时候会跳转到哪一个地址去执行代码呢?这就取决于CPU的定义了。对于spearplus里面使用的ARM926EJS来说,它是这么定义的:Following reset, the ARM core starts to fetch instructions either from 0x00000000 or 0xFFFF0000 depending on the signal level of VINITHI* input signal to ARM core. If after reset VINITHI signal level is LOW then ARM core will start fetching code from address 0x00000000 otherwise ARM core will start fetching code from 0xFFFF0000. So there must be some executable code accessible
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值