Trusty OS (TOS) 分区

Trusty 是 Google 对与 Android 并行运行的可信执行环境 (TEE) OS 的实现。这是使用 Arm Trustzone 技术提供 TEE 的设备的规范。如果您的 ARM 设备使用 Trusty 作为安全 OS 解决方案,请按照以下部分所述实现引导加载程序。

初始化 TOS

要加载和初始化 Trusty OS (TOS),引导加载程序应

  • 设置和配置所有可用的 RAM。
  • 初始化至少一个串口。
  • 验证 TOS 映像的签名。
  • 将 TOS 加载到 RAM 中(不支持从闪存或 TCM 执行)。
  • 在设置状态和寄存器后(如下所述),跳转到 TOS 映像中的第一条指令。

调用 TOS 映像

配置启动时的以下状态

  • MMU 已关闭
  • 数据缓存已刷新并关闭(指令缓存可以开启或关闭)
  • 所有中断(IRQ 和 FIQ)均已禁用
  • CPU 在 ARMv7 上处于 SVC 模式,在 ARMv8 上处于 EL3 模式
  • 寄存器处于以下状态
    • r0/x0:分配给 TOS 的内存大小。
    • r1/x1:包含平台特定启动参数的连续内存块的物理地址。此块的布局是平台特定的。
    • r2/x2:上述内存块的大小。
    • r14/x30:TOS 初始化后要跳转到的返回地址(在非安全模式下)。

在 64 位平台上

  • 只有 w0-w2 用于参数,因此 x0-x2 应仅包含 32 位值。
  • x30 可以包含 64 位值。
  • x0 中的值添加到 TOS 入口点的基地址时,应得到一个 32 位值。同样适用于寄存器 x2 中的大小,当其添加到 x1 中的启动参数块地址时。

从 TOS 返回

在 TOS 完成初始化后,它以非安全模式(SCR.NS 设置为 1)返回到引导加载程序,以便引导加载程序可以继续加载主操作系统(即 Android)。