根据此链接 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0333h/Chdfjdgi.html
下的
系统启动顺序 ...
对分区检查程序进行编程,以分配可用于非安全操作系统的物理内存。
什么是分区检查程序?它是一个具有寄存器的子系统,它的编程模型是什么?
答案 0 :(得分:2)
什么是分区检查程序?
它位于CPU的 TrustZone 规范之外。但是,在坚果壳中,它将存储空间划分或划分为不同的允许访问。如果不允许访问,则会抛出外部BUS错误。
它是一个具有寄存器的子系统,它的编程模型是什么?
通常,它是一堆寄存器。它可能是多个寄存器文件。例如,APB(外围总线),AHB(旧的ARM总线)和新的AXI(TrustZone感知总线)都可以存在于一个系统中。甚至可能有多个APB总线等。
从同一页面
TrustZone内存管理的原则是将物理内存划分为安全和非安全区域。
应该添加分区 母版作为安全和非安全也很重要。 分区在ARM CPU TrustZone规范之外;它是BUS架构的一部分。由总线控制器/结构来实现这一点。总线控制器连接了主设备(CPU,DMA外设等)和从设备(存储设备,寄存器接口等)。
在ARM TrustZone文档的上下文中, 分区有点模糊,因为每个SOC和总线控制器(和层次结构)都需要实现细节。如上所述,它将存储空间划分或划分为不同的允许访问。这就像使用传统ARM(AMABA)AHB总线的主管与用户访问一样。 AXI接口添加NS
位。
以下是支持总线控制器的可能组合。
| Read | Write
-------------+--------+-------
Normal User | yes/no | yes/no
Normal Super | yes/no | yes/no
Secure User | yes/no | yes/no
Secure Super | yes/no | yes/no
SCR
NS
位将动态确定' NS'在总线访问时设置位。这是 TrustZone 的区别。对于 super 和用户,有一个传统的HPROT
位。同样,每个主机将断言WRITE / ~READ信号(可能极性不同,但我们的软件不是硬件)。
DMA主设备(以太网,USB等)也可以向总线发送请求。通常,这些是在启动时设置和锁定的。如果您的安全世界使用以太网,那么它可能是访问安全内存的安全DMA主设备。以太网芯片通常还具有从寄存器接口。必须将其标记(或分区)为 secure 。如果 normal world访问 ethernet 寄存器文件,则抛出BUS错误。供应商还可以根据命令结构制作动态设置NS
位的DMA外设。 CAAM是加密驱动程序,可以设置作业说明以处理正常和安全访问,作为DMA的示例两个都做的主人。
CPU(比如Cortex-M4或Cortex-R)也可以是全局安全或正常。只有具有完整 TrustZone 的Cortex-A系列(和ARMv6)才会动态切换 NS 位,从而允许CPU同时安全和正常,取决于具体情况。
从属外围设备可能已分区。例如,对于世界间通信,前10MB的SDRAM可能是正常的和安全的读写。然后接下来的54MB,也许只是普通世界的正常读/写。然后为安全世界提供最后64MB的读/写安全保护。通常,外设的寄存器接口是 all或none 设置。
这些都超出了MMU的范围,只处理物理地址。如果SOC在引导后锁定它们,则任何人都无法更改映射。如果安全世界代码是只读,则设计漏洞可能更加困难。
通常,所有APB总线都在AHB总线上分层,AHB总线连接到像树一样的AXI主总线。 AXI总线是Cortex-A的默认总线。每个BUS都有一个从站和主站列表,并支持各种是和 no 配置,这些配置可能是上面列表的一部分;即,它可能不关心读/写或超级/用户或其他一些排列。每个ARM系统都会有所不同。在某些情况下,供应商可能甚至不支持它。在这种情况下,使系统安全甚至使用TrustZone可能更加困难。请参阅:Handling ARM TrustZones,其中详细介绍了一些公交车问题。
请参阅:TrustZone versus Hypervisor,其中提供了更多详细信息。