[uboot] uboot流程系列:
[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)
[uboot] (第一章)uboot流程——概述
[uboot] (第二章)uboot流程——uboot-spl编译流程
[uboot] (第三章)uboot流程——uboot-spl代码流程
[project X] tiny210(s5pv210)从存储设备加载代码到DDR
参考文档:
S5PV210-iROM-ApplicationNote-Preliminary-20091126
S5PV210_UM_REV1.1
建议先看《[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)》,根据例子了解一下上电之后的BL0\BL1\BL2阶段,以及各个阶段的运行位置,功能。
========================================================================================================
一、说明
1、疑问
前面文章中《[uboot] (第三章)uboot流程——uboot-spl代码流程》中,最后uboot-spl的操作是调用board_init_f了,在board_init_f中实现了加载BL2镜像(uboot.bin)到ddr上,然后跳转到相应位置。
那么前面有个坑,就是tiny210的board_init_f中,是 如何实现加载BL2镜像(uboot.bin)到ddr上,然后跳转到BL2的相应地址上?
这个也就是本文里面的主要介绍的:
s5pv210是如何实现把镜像从存储设备上加载到ddr上的?
2、原理
通过《[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)》, s5pv210的BL0会根据启动模式从相应存储设备上获取BL1的镜像到DDR上。
例如,当启动模式是SD boot的时候,BL0会从SD卡上获取BL1镜像,加载到对应位置上。当启动模式是nand flash boot的时候,BL0会从nand flash上获取BL1镜像,加载到对应位置上。
如下表格(从《[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)》截取的一部分)
| 模式 | 硬件支持 | BL1镜像存放起始位置 | BL1镜像是否需要header | 加载位置 | 跳转位置 |
|---|---|---|---|---|---|
| Nand Boot | Nand flash | page0 | 是 | 0xD002_0000 | 0xD002_0010 |
| SD / MMC Boot | SD / MMC | block1 | 是 | 0xD002_0000 | 0xD002_0010 |
同时,BL0是固化在s5pv210的IROM中的,是芯片在出厂的时候已经实现好了的。相应的,其从存储设备(SD/nand/eMMC)上获

本文详细介绍了S5PV210芯片在tiny210平台上如何从存储设备(如SD、nand flash)加载代码到DDR内存的过程。内容包括BL0如何加载BL1、BL2,以及存储设备代码拷贝函数的原理、函数指针存储位置和函数原型。重点讨论了CopySDMMCtoMem和NF8_ReadPage_Adv两个拷贝函数的使用。
最低0.47元/天 解锁文章
2059

被折叠的 条评论
为什么被折叠?



