S5PV210启动
S5PV210内部ROM(iROM)固化有厂家设置的用于引导启动的程序代码,支持从NAND、SD卡等多种常用存储设备启动。在上电过程初始阶段,S5PV210通过读取外部OM[5:0]引脚的高低电平来识别用于加载引导程序的设备。
引导过程
(来自于芯片手册)
1.3.5 SECURITY SUBSYSTEM
The key features
of security subsystem include:
•
On-chip secure boot
ROM
-
64 KB secure boot
ROM for secure boot
•
On-chip secure RAM
-
128 KB secure RAM
for security function
•
Hardware Crypto
Accelerator
-
Securely integrated
DES/ TDES, AES, SHA-1, PRNG and PKA
-
Access control
(Security Domain Manager with the ARM TrustZone Hardware)
-
Enables enhanced
secure platform for separate (secure/ non-secure) execution environment for
security
sensitive application
•
Secure JTAG
-
Authentication of
JTAG user
-
Access control in
JTAG mode
来自于手册的一个例子:
BL0程序代码功能
(1) 禁用Watch-dog。
(2) 初始化指令cache。
(3) 初始化栈区(参考存储器映像)。
(4) 初始化堆区(参考存储器映像)。
(5) 初始化块设备复制功能。
(6) 初始化PLL和系统时钟。
(7) 复制BL1到内部SRAM区(首地址为:0xd00020000)。
(8) 验证BL1的校验和。若验证BL1校验错,则使用SD/MMC channel 2进行二次引导。
(9) 检测是否为安全引导模式。若S5PV210被写入了安全密钥则为安全引导模式。该模式下,需要验证BL1的完整性。
(10) 跳转到BL1的首地址开始运行程序。
BL1程序代码主要功能是
(1)完成板级初始化工作。
(2)复制完整启动代码到SDRAM。
(3)在SDRAM中运行启动代码。
当设置为SD卡启动模式时,BL1代码需要存放于SD卡中。S5PV210通过运行BL0将存放于SD卡中的BL1复制到内部IRAM的指定空间(0xD0020000
- 0xD0023FFF),并跳转到0xD002_0010处执行。为了保证可靠复制,对BL1的约束条件是:
(1)BL1段代码最大长度为16KB。
(2)
BL1段代码前16个字节为特定数据含有规定信息。数据格式如下所示。
在复制BL1过程中,BL0依据长度字复制BL1,若长度字超限,将最多复制16KB字节到IRAM。复制结束后会求出BL1数据和,并与16字节中的校验字相比较,如果相同表示校验通过。当成功复制到IRAM后,CPU将跳过16字节,从0xD0020010处运行BL1。否则尝试其它方式启动。
BL1格式代码生成方法:
首先编写无16字节文件头的启动程序,然后借助工具mkv210_image.c(来自互联网),在程序头按要求格式追加16字节文件,生成BL1(tiny210-spl.bin)。
依据S5PV210启动模式要求,当设定为SD卡启动模式时,要求BL1代码存放在SD的指定扇区。