Page tree
Skip to end of metadata
Go to start of metadata

ROM代码是复位后执行的第一个代码。

以下是ROM 启动流程图

设备状态

  • Open state: 设备默认是在open状态。 身份验证不是强制性的。 身份验证错误不会阻止FSBL启动。
  • Closed state: 设备可以被配置为closed 状态,需要对OTP WORD0的bit 6写入数据。在closed 状态的设备,身份验证是强制性的。身份验证错误会阻止从FSBL启动。
  • RMA state: closed 状态的设备可以一次处于RMA状态,然后再次置于closed状态。 在处于RMA状态的设备上,除用于再次进入closed状态的功能以外,所有ROM代码功能均已禁用。


Secure boot

The ROM code ensures the first stage of the STM32MP15 secure boot, implemented in the trusted boot chain:

ROM代码确保STM32MP15的第一阶段安全引导,这些功能在trusted boot chain中实现:

  • 它会从选定的引导接口中加载FSBL文件
  • 它会验证FSBL文件
  • 如果已通过身份验证,然后跳转到FSBL文件入口点


启动设备选择

如下图所示,引导接口由引导引脚、OTP和TAMP寄存器给出的配置决定。


镜像文件加载

ROM代码将图像加载到地址0x2ffc2400处的SYSRAM内存中。

FSBL 身份验证

ROM代码实现STM32MP15安全启动,认证处理章节中描述的认证过程。

跳转到FSBL

如果映像验证成功,则ROM代码将引导上下文的地址存储在r0寄存器中,并跳转到映像文件头中定义的FSBL入口点。

引导上下文(参见TF-A代码的plat/st/stm32mp1/include/boot_API.h中的boot_api_context_t结构)位于SYSRAM的前512个字节中。它包含有关引导过程的信息(例如所选的引导设备)以及指向ROM代码服务的指针(用于安全引导身份验证)。


  • No labels