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. 引导顺序
其引导顺序如下图所示:
- iROM 初始化时钟,堆栈等
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 devicesBL1 对 BL2 进行加载并进行完整性检测。
- BL2 对时钟、UART、DRAM进行初始化,在完成对 DRAM 的初始化检测后,加载OS(操作系统)镜像,由引导设备加载到 DRAM 。然后对 OS 镜像进行完整性检测。
- 引导完成后,将一切都交给操作系统。
3. 引导顺序例子
例子中的引导过程可以分为三个部分,如下图所示:
- 内部 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个字节存储安全秘钥。 - 内部 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)。 - DRAM加载过程
3-1. 如果s5pv210在睡眠,深度睡眠等状态中苏醒,则恢复原先装载
3-2. 跳转到 OS 代码进行执行
参考文献
[1] S5PV210芯片手册