1.9.S5PV210启动过程详解(二)

三星的S5PV210的启动方式是:Internal ROM Booting 即 iROM启动


To use IROM boot loader, several hardware features are required.
S5PV210X microprocessor based on CortexA8
64KB Internal ROM (iROM)
96KB Internal SRAM
General SDRAM and Controller
4/8 Bit High Speed SD/MMC Controller
      4-bit SD / 4-bit MMC / 4 or 8-bit eMMC
Nand Flash Controller
OneNand Controller(AUDI)
eSSD Controller
UART/USB contorller

要使用iROM引导加载程序需要的几个硬件特性:

* S5PV210X 微处理器基于 Cortex A8内核

* 64KB的内部ROM(iROM)

* 96KB的内部SRAM 

* 通用的SDRAM和其控制器

* 4/8 位的高速 SD/MMC控制器

   4位的SD 、4位的MMC、4/8位的eMMC

* NandFlash 控制器

* OneNand 控制器

* eSSD控制器

* UART/USB 控制器


Feature
OneNand Boot(Mux/Demux)
Nand Boot (with H/W 8/16-Bit ECC)
MMC Boot (MMC Specification 4.3 compatible including eMMC)
eSSD Boot
UART/USB Boot
Secure boot mode support
- Verify Integrity of Bootloader for all boot-up devices except for UART/USB boot.
- To support secure boot mode, Security key value should be written in S5PV210.
If no key is written in S5PV210, It is non-secure boot mode.
Otherwise It’s secure boot mode. To do that, Samsung should write security key in manufacture step.
Second boot support
- When 1
st boot mode fails, SD/MMC boot will be tried through SD/MMC channel 2 with 4-bit data

特性:

* OneNand 启动

* Nand 启动

* MMC 启动

* eSSD 启动

* UART/USB 启动

* 安全模式启动

* 二次启动(当第一次启动失败时,它会通过 4位数据宽度的SD/MMC通道2 来用 SD/MMC启动)


下面这个时启动的整体引导图:

1.9.S5PV210启动过程详解(二)_第1张图片

iROM can do initial boot up : initialize system clock, device specific controller and booting device.
iROM boot codes can load boot-loader to SRAM. The boot-loader is called BL1.then iROM verify integrity of BL1 in case of secure boot mode.
BL1 will be executed: BL1 will load remained boot loader which is called BL2 on the SRAM,then BL1 verify integrity of BL2 in case of secure boot mode.
BL2 will be executed : BL2 initialize DRAM controller then load OS data to SDRAM.
Finally, jump to start address of OS. That will make good environment to use system.

①iROM可以初始化:初始化系统时钟,初始化指定的设备控制器和启动设备。

②iROM的引导代码将引导加载程序加载到SRAM,这部分引导加载程序称为BL1。如果选择了安全启动模式,iROM将要验证BL1的完整性。

③执行BL1:BL1把BL2加载到SRAM中,如果选择了安全启动模式,BL1将要验证BL2的完整性。

④执行BL2:BL2初始化DRAM控制器然后将OS数据加载到SDRAM。

⑤最后,程序跳到OS的起始地址开始执行,这样将为使用系统创造一个好的环境。


BL0做的一些事情:

1. Disable the Watch-Dog Timer
2. Initialize the instruction cache
3. Initialize the stack region.
4. Initialize the heap region. 
5. Initialize the Block Device Copy Function. 
6. Initialize the PLL and Set system clock. 
7. Copy the BL1 to the internal SRAM region 
8. Verify the checksum of BL1.
If checksum fails, iROM will try the second boot up. (SD/MMC channel 2)
9. Check if it is secure-boot mode or not.
If the security key value is written in S5PV210, It’s secure-boot mode.
If it is secure-boot mode, verify the integrity of BL1.
10. Jump to the start address of BL1

1.关闭看门狗

2.初始化指令缓存

3.初始化栈区

4.初始化堆区

5.初始化块设备复制函数

6.初始化PLL和设置系统时钟

7.复制BL1到内部SRAM中

8.检验BL1的校验和(如果检验和失败,iROM将会通过 SD/MMC 通道2进行二次启动

9.安全模式下需要的(这里先不考虑)

10.程序跳转到BL1的起始地址


更详细的启动引导图:

1.9.S5PV210启动过程详解(二)_第2张图片

所以完整的启动顺序应该是:

1.开机启动运行iROM(BL0)的固化代码

这里所做的事情就可以结合上面最左边的图和之前说的BL0做的一些事情,然后接下来程序跳到BL1的起始地址执行。

2.执行BL1代码

从图中可以看出它的主要作用就是将BL2从启动介质内复制到内部的SRAM中,并将程序将要运行的地址转向BL2首地址。

3.执行BL2代码

BL2做的就是先初始化SDRAM/DRAM,也就是内存,并把操作系统程序代码复制到内存中,然后程序调到内存中继续执行,整个过程完成。


下面这是当1st启动失败后2nd启动过程:

1.9.S5PV210启动过程详解(二)_第3张图片

关于BL1和BL2里面放的什么代码,具体代码的操作后面会继续详细学习。总之学习是一个需要坚持不懈过程,切忌半途而废,共勉!

你可能感兴趣的:(ARM汇编)