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)。