ARM引导过程(s5pv210)

ARM引导过程(s5pv210)


1. 引导过程

s5pv210处理器有 iROM 与 iRAM 两个存储器作为内部存储器。iROM 有 64k 的空间,而 iRAM 有 96k 的空间。iROM 位于内部 ROM 中,而 iRAM 位于内部 SRAM 中。

在进行安全启动的过程中,引导程序固化在 iROM 中。采用了 e-fuse (只能进行一次编程,以后便不能再进行更改)的形式。

引导程序主要由 iROM、第一引导顺序(the first booting loader, BL1)与第二引导顺序(the second booting loader, BL2)组成。iROM 又称为 BL0。其详细内容见如下表格:

名字 依赖关系 存储位置
iROM 平台独立 内部存储区
BL1 平台独立 外部存储区
BL2 指定平台 外部存储区

2. 引导顺序

    其引导顺序如下图所示:     

这里写图片描述

  1. iROM 初始化时钟,堆栈等
  2. iROM将来自指定的引导设备的第一引导顺序相关代码加载到 SRAM 中,然后进行完整性检测(160 个 e-fuse 会对加载验证公钥进行验证),然后对BL1进行完整性检测。引导设备由OM引脚指定,引导设备可以是

    • General NAND Flash memory
    • OneNAND memory
    • SD/ MMC memory (such as MoviNAND and iNAND)
    • eMMC memory
    • eSSD memory
    • UART and USB devices

  3. BL1 对 BL2 进行加载并进行完整性检测。

  4. BL2 对时钟、UART、DRAM进行初始化,在完成对 DRAM 的初始化检测后,加载OS(操作系统)镜像,由引导设备加载到 DRAM 。然后对 OS 镜像进行完整性检测。
  5. 引导完成后,将一切都交给操作系统。

3. 引导顺序例子

例子中的引导过程可以分为三个部分,如下图所示:
这里写图片描述

  1. 内部 iROM 加载过程
    1-1. 关闭看门狗
    1-2. 初始化指令缓存控制器
    1-3. 初始化堆栈与堆区域
    1-4. 检查安全钥匙
    1-5. 设置时钟分频,时钟节拍,锁相环(PLL)和时钟源
    1-6. 检测OM引脚及从 iRAM 加载 BL1。
    1-7. 如果安全启动成功,则执行完整性检测。
    1-8.完整性检测通过,则将跳转到BL1进行执行(0xDOO2_0010)。前16个字节存储安全秘钥。
  2. 内部 iRAM 加载过程
    2-1. 将BL2从引导驱动设备加载到 iRAM。
    2-2. 如果安全启动成功,则执行完整性检测。
    2-3. 如果完整性检测通过,则将跳转到BL2进行执行。
    2-4. 如果完整性检测失败,则停止BL1。
    2-5. BL2 初始化 DRAM 控制器。
    2-6. 从指定的引导设备中加载 OS 镜像到 DRAM
    2-7. 跳转到 OS 代码进行执行(在 DRAM 中,0x2000_0000或者0x4000_0000)。
  3. DRAM加载过程
    3-1. 如果s5pv210在睡眠,深度睡眠等状态中苏醒,则恢复原先装载
    3-2. 跳转到 OS 代码进行执行

参考文献

[1] S5PV210芯片手册

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章