S3C6410 ARM处理器启动流程

通过查阅芯片手册,我们来了解下s3c6410的启动模式:

S3C6410 ARM处理器启动流程_第1张图片

下面来总结一下S3C6410所支持的启动模式:

1. Nor Flash启动

通过Nor Flash启动,此时OM[4:1]为0100或0101,对应8bit和16bit。

2. Nand Flash启动

虽然在S3C6410User Manual中没有提到,但是也是支持的,从S3C6400 User Manual可以找到。OM[4:1]四个硬件管脚决定了Nand flash启动,以及支持的Nand flash的类型,包括大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等。


S3C6410 ARM处理器启动流程_第2张图片

ARM处理器上电后从0x000_0000处开始执行程序,从上表可以知道从0x000_0000有一个128MB的镜像区域,可以将不同的存储器件(iROM、Flash)映射到该地址。

S3C6410 ARM处理器启动流程_第3张图片

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中运行

下面是IROM的启动流程图:

S3C6410 ARM处理器启动流程_第4张图片


你可能感兴趣的:(启动流程,s3c6410,arm处理器)