Trusty 操作系统 (TOS) 分区

Trusty 是 Google 的可信执行环境 (TEE) 操作系统实现,在 Android 之外独立运行。本文介绍了使用 Arm Trustzone 技术提供 TEE 的设备需遵循的规范。如果您的 ARM 设备将 Trusty 用作安全操作系统解决方案,则应按照下面几个部分所述的内容实现引导加载程序。

初始化 TOS

如需加载并初始化 Trusty 操作系统 (TOS),引导加载程序应:

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

调用 TOS 映像

请在入口配置以下状态:

  • 将 MMU 设为已关闭
  • 清空并关闭数据缓存(可以开启或关闭指令缓存)
  • 将所有中断(IRQ 和 FIQ)设为已停用
  • 在 ARMv7 上,将 CPU 设为 SVC 模式;在 ARMv8 上,将 CPU 设为 EL3 模式
  • 将寄存器配置为以下状态:
    • r0/x0:分配给 TOS 的内存大小。
    • r1/x1:一个连续内存块(包含平台专用的启动参数)的物理地址。此块的布局因平台而异。
    • r2/x2:上述内存块的大小。
    • r14/x30:TOS 初始化后(在非安全模式下)要跳转到的返回地址。

在 64 位平台上:

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

从 TOS 返回

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