最近在研究从友坚买回来的S5PV210开发板,发现是通过USB和NAND来启动的,而S3C6410的板子大多数是支持SD卡和NAND启动的,所以感觉比较模糊,但一直都没有时间研究这个。但是最近想要在210板子上实现从SD卡启动,所以不得不开始研究这些问题了。(其实就是芯片手册没有好好看的原因)
本文主要将S3C6410和S5PV210的启动模式放到一起进行一个对比学习,先转载S3C6410的启动模式,来自ARM-WinCE,已经做了比较详细的分析,原文地址为http://blog.youkuaiyun.com/nanjianhui/article/details/4230565。之后再给出S5PV210的启动模式。
一、
先读一下
S3C6410 User Manual
的第
3
章
System Controller
,在
123
页列了一张表,如图:

这张表列出了
S3C6410
所支持的几种启动模式。首先介绍一下和启动模式相关的硬件管脚:
OM[4:0]
:选择启动设备及时钟源。
OM[0]
为
0
选择
XXTlpll
,为
1
选择
XEXTCLK
。
GPN[15:13]
:用于识别所支持的
Nandflash
的类型,包括
Page
的类型和地址周期。
XSELNAND
:选择
Nand
启动或者是
OneNand
启动。
0
为
OneNand
,
1
为
Nand
。
下面来总结一下
S3C6410
所支持的启动模式:
1. NORFlash
启动
通过
Nor Flash
启动,此时
OM[4:1]
为
0100
或
0101
,对应
8bit
和
16bit
。
2. NandFlash
启动
虽然在
S3C6410 User Manual
中没有提到,但是也是支持的,从
S3C6400 User Manual
可以找到。
OM[4:1]
四个硬件管脚决定了
Nandflash
启动,以及支持的
Nandflash
的类型,包括大
Page
和小
Page
,地址周期为
3
,
4
,
5
。当然,
XSELNAND
管脚也要为
1
。
3. OneNAND
启动
首先
XSELNAND
管脚为
0
,其次
OM[4:1]
为
0110
,为
OneNand
启动模式。
4. MODEM
启动
当
OM[4:1]
为
0111
的时候,为
MODEM
启动。
S3C6410
通过
MODEM
接口下载
boot
代码到内部
RAM
中,然后进行引导。
5. IROM
启动
当
OM[4:1]
为
1111
的时候,从
Internal ROM
中启动,此时
GPN[15:13]
用于识别设备的类型。这种模式以前没见过,这里具体介绍一下。
IROM
模式可以支持
MoviNand
,
SD/MMC
,
iNand
,
OneNand
和
Nand
等。关于
IROM
的引导,具体过程如图:

1.
处理器上电后,当
OM[4:1]=1111
时,运行
iROM
中的程序,这个程序被称为
Bootloader0(BL0)
,它会做一些初始化的工作。
2.
然后根据
GPN[15:13]
的管脚设置,选择从相应的设备
(SD/MMC/OneNand/Nand)
中的指定区域读取
4KB
的程序到
SteppingStone
中运行,这段代码被称为
Bootloader1(BL1)
。
3. BL1
可以初始化系统时钟,
UART
,
SDRAM
等设备,然后拷贝
Bootloader2(BL2)
到
SDRAM
中。
4.
跳转到
SDRAM
中的
BL2
,继续运行,
BL2
可以支持更强大的功能,可以将
OS
加载到
SDRAM
中,然后运行
OS
。
整个过程中,
IROM
是最先被运行的,它会首先做一些初始化,具体
IROM
的流程如下:
1.
禁用
Watch-dog
2.
初始化
TCM
3.
初始化设备拷贝函数,用于拷贝
BL1
到
SteppingStone
中
4.
初始化栈区域
5.
初始化
PLL
6.
初始化指令
Cache
7.
初始化堆区域
8.
拷贝
BL1
到
SteppingStone
中
9.
验证
BL1
10.
跳转到
SteppingStone
中运行
二、
S5PV210
的启动模式可以参照上面的介绍,这里给出
datasheet
中对应的图解,可以帮助理解。
首先是
S5PV210
支持的启动模式的设置。

其次是引导过程的执行顺序图。

最后是启动的流程图。

本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/602644,如需转载请自行联系原作者