SPV210的SD卡启动编程代码实战

1、任务:大于16KB的bin文件使用SD卡启动

(1)总体思路:将我们的代码分为2部分:第一部分BL1小于等于16KB,第二部分为任意大小,iROM代码执行完成后从SD卡启动会自动读取到BL1到SRAM中执行;BL1执行时负责初始化DDR,然后手动将BL2从SD卡copy到DDR中正确的位置,然后BL1远跳到BL2中执行BL2。

(2)细节1:程序怎么安排?程序整个分为2个文件夹BL1和BL2,各自管理各自的项目。

(3)细节2:BL1中要完成:关看门狗、设置栈、开iCashe、初始化DDR、从SD卡复制BL2到DDR中特定位置,跳转执行BL2。

(4)细节3:BL1在SD卡中必须从Block1开始(Block0不能用,这个是三星官方规定的),长度为16KB,我们就定16KB(也就是32block);BL1理论上可以从33扇区开始,但是实际实际上为了安全都会留一些空扇区作为隔离,譬如可以从45扇区开始,长度由自己决定(实际根据自己的BL2大小来分配长度,我们实验时BL2非常小,因此我们定义的BL2长度为16KB,也就是32扇区)。

(5)细节4:DDR初始化好了后,整个DDR都可以使用了,这时在其中选择一段长度足够BL2的DDR空间即可。我们选0x23E00000(因为我们BL1中只初始化了DDR1,地址范围是0x20000000~0x2FFFFFFF)

猜你喜欢

转载自blog.csdn.net/weixin_40405692/article/details/81587238