gpt4 book ai didi

ARM TrustZone - 调度程序在安全和非安全操作系统中的行为

转载 作者:行者123 更新时间:2023-12-05 05:27:00 47 4
gpt4 key购买 nike

有人可以向我解释一下,在 CPU 进入安全模式后(监控程序设置 NS = 0),安全操作系统是如何调度的?是不是现在 CPU 处于安全模式,定时器滴答中断将由安全操作系统而不是非安全世界处理?

最佳答案

监控模式设置 NS=0 会将 CP15 寄存器设置为在监控模式下可见。请参阅:monitor mode IFAR/IFSR... .当监控模式切换到另一种模式并且NS=0时,那么该模式就是secure world版本;这意味着存储的 CP15 寄存器是安全版本。此外,NS 位在总线周期 上清零。

如果设置了NS=1,那么当监控模式切换时,banked CP15 寄存器是正常版本;主要是 正常 世界 MMU 将处于事件状态。此外,NS 位在总线周期 上设置。 TZ vs hypervisor

How does the secure OS gets scheduled?

监控模式就是这样做的。 SCR (cp15 c1, c1, 0) 具有确定是否使用monitor 向量表当前 CPU 世界(安全正常)。如果您在一个正常世界中,并且您希望计时器打断那个世界,您需要监控模式来处理它。

您可以通过两种可能的方式设置监控模式,

  1. 将所有安全中断设为 FIQ
  2. 捕获所有中断以进行监控。

推荐首选。在此模式下,监控 代码必须确保SCR#FIQ(位 2)在正常 世界中设置,但在< em>安全世界。 SCR#IRQ(位 1)将在运行安全操作系统时设置(如果您希望正常中断中断安全操作系统)并在正常时清除 世界。

因此,当安全 定时器有一个FIQ 中断时,它会陷入监视模式,从而执行世界切换ref1 并运行安全操作系统计时器代码。此安全计时器 可能会导致安全世界重新安排时间。 正常安全 世界调度程序交互的方式取决于软件。即,没有通用的答案。这取决于,

  1. 监控模式
  2. 安全操作系统。
  3. 正常世界操作系统。

主要是 ARM TrustZone 本身不处理安全操作系统调度。您需要编写使用提供的原语来实现它的软件。 ARM TrustZone 只是促进了不同的实现方式。 TrustZone Whitepaper

参见:How to develop programs for TrustZone对于一些替代设置。
Ref1:世界开关 保存/恢复所有使用 模式的所有通用 CPU 寄存器。即,在从正常安全世界的切换中,R0-R15(以及所有银行副本)加上可能的 NEON/VFP 必须保存到正常世界 商店。同样,必须为安全世界 重新加载寄存器。监控模式 sp 为访问这些 world contexts 提供了一个很好的 anchor 。监控模式 sp 应该在安全启动期间设置,在 正常 世界初始化之前。这很像传统的操作系统上下文切换。 SCR#NS(位 0)已适当设置;您可以在寄存器切换之前或之后执行此操作,具体取决于您保存寄存器的方式(即,通过模式切换或通过 srs)。

关于ARM TrustZone - 调度程序在安全和非安全操作系统中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22659472/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com