S5PV210的启动过程概述

时间:2021-01-29 05:07:05

S5PV210的启动过程概述主要参考《S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf》。
本文不讲解uboot代码细节。
笔者使用的开发板:九鼎X210V3S开发板

S5PV210的启动过程概述

IROM启动的优势

1.降低物料的成本

使用IROM来引导系统从Movinand/iNAND/MMC/eMMC card、eSSD等介质启动,那么就不需要额外的启动存储设备(例如norflash)。

2.Improve the Read Disturbance

  • In iROM booting with nand flash, S5PV210 can support 8/16-bit H/W ECC
  • All nand boot can be supported 8-bit H/W ECC.
  • But, 16-bit ECC is supported only one type of Nand which is 4KB
    5cycle.

电路设计

1、通过OMpin来选择IROM启动的设备

2、V210的所有存储类启动设备都有一个SD/MMC通道2 作为第二启动。

3、OneNand启动,Xm0CSn4/NFCSn2/ONANDXL_CSn0信号必须有效。(BL1代码起始处必须包含校验和数据,也就是我们后面需要提及的16字节校验头)。

4、Nand启动,Xm0CSn2/NFCSn0信号必须有效。(BL1代码起始处必须包含校验和数据)。

5、SD/MMC/eMMC启动,MMC的通道0被作为第一启动,并且通道2被作为第二启动(BL1代码起始处必须包含校验和数据)。

这里的SD/MMC/eMMC启动方式的通道2是我们开发板sd卡的启动方式。我们如果需要从sd卡启动,那么我们除了需要把OMpin配置成为“SD/MMC/eMMC启动”外,我们还需要使开发板跳过通道0,而*使用通道2来启动。

那么,怎么使开发板跳过通道0呢? 答案是搽除uboot(或者说是使通道0的uboot失效),下面提供两种方法:
1.在linux和android系统下,擦除uboot的方法: busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync
sync

2.在uboot底下如何擦除uboot:
movi write u-boot 0x30000000

6、UART启动,使用通道2

系统启动顺序

S5PV210的启动过程概述

注:uboot被分成两部分,分别是BL1和BL2。S5PV210的启动过程分为BL0,BL1,BL2三个阶段。

这里的BL1/BL2从启动设备被复制到内部SRAM区域,BL1不得超过16KB,BL2不得超过80KB。

从上图Overall boot-up diagram可以看出,IROM(BL0)(64KB)通过OMpin来识别/选择开发板从哪个外部设备启动,图中假设是从OneNand/SD/MMC/eMMC/Nand/eSSD/NOR Flash启动的。

(这里拿九鼎的uboot进行讲解)
BL0初始化Soc成功后,BL0从启动设备中读取BL1放到内部SRAM中,BL1快结束时,从启动设备中读取BL2放到内部SRAM中,BL2初始化SDRAM,然后把OS放到SDRAM中,然后重定位,之后系统就在DDR中跑起来了。

BL0的初始化顺序(参考Overall boot-up diagram)

1、关看门狗
2、初始化指令Cache
3、初始化栈区(设置中断栈、SVC栈)
4、初始化堆区
5、初始化块设备复制函数
6、初始化PPL和设置系统时钟
7、复制BL1到内部SRAM区域
8、核实BL1的校验和,如果校验和失败,将会从SD/MMC的通道2启动。
9、检测是否是安全启动模式。
如果 “security key”被写入“S5PV210”,那么是安全启动模式;
如果是安全启动模式,那么就校验BL1的整数和(也就是说,写好的BL1需要进行加工,前面的16字节为校验头信息)。
10、跳转到BL1的开始地址。

V210 boot-up diagram

(图放上来不清晰,就不放了= =,读起来不难理解)
这里有一点需要注意的!
当我们通过usb下载BL1镜像到开发板时,
在UART、USB启动模式下BL1不需要头信息,BL1代码烧录的地址是0xD0020010。
在其他启动模式下,BL1必须有头信息,BL1代码烧录的地址是0xD0020000。
(上面两个烧录地址相差0x10,很显然,这里的0x10就是相差的那16个校验头信息)

内存映射

(图也太大了,^_^)
这里需要注意的,这个memory map是cpu的地址总线分配出来给SRAM使用的,cpu通过这个地址总线控制SRAM。
S5PV210的启动过程概述

为什么需要设计iROM和iRAM?
答案是为了支持多种外部设备启动。