ARM安全模式中的分区检查程序是什么?

按照此链接http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0333h/Chdfjdgi.html

系统启动顺序…

编程分区检查器以分配可用于非安全OS的物理内存。

什么是分区检查器? 它是一个有寄存器的子系统,它的编程模型是什么?

Solutions Collecting From Web of "ARM安全模式中的分区检查程序是什么?"

什么是分区检查器?

它不属于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差异。 对于超级 用户来说 ,有一个传统的HPROT位。 而且,每个主机都会发出一个WRITE / READ信号(可能极性是不同的,但我们是软件而不是硬件)。

DMA主设备(以太网,USB等)也可以向BUS发送请求。 通常情况下,这些设置和启动时锁定。 如果您的安全世界使用以太网,那么它可能是一个安全的DMA主机来访问安全的内存。 以太网芯片通常也有一个寄存器接口。 它必须被标记(或分区)为安全的 。 如果正常的世界访问以太网寄存器文件,则会引发BUS错误。 供应商也可以根据命令结构制作动态设置NS位的DMA外设。 CAAM是一个加密驱动程序,可以设置工作描述来处理正常安全的访问,作为一个DMA主机的例子。

CPU(比如Cortex-M4或Cortex-R)也可能是全局安全的正常的 。 只有具有完整TrustZone的Cortex-A系列(和ARMv6)才会动态地切换NS位,从而使CPU既安全正常 ,具体取决于上下文。

从属外设可能是分区的。 例如,第一个10MB的SDRAM可能既是正常的也是安全的读写用于世界间通信。 然后下一个54MB,也许正常只有正常的世界读/写。 然后最后64MB的读/写安全的世界。 通常情况下,外设的寄存器接口是全部设置或没有设置。

这些都在MMU的范围之外,只处理物理地址。 如果SOC在启动后锁定它们,任何人都不可能改变映射。 如果安全的世界代码是只读的 ,那么设计一个漏洞可能会更困难。

通常情况下,所有的APB总线都分层安装在一个AHB总线上,AHB总线连接到一个像AXI树一样的AXI总线。 AXI总线是Cortex-A的默认设置。 每个BUS将有一个从站和主站的列表,并将支持各种否的配置,这可能是上面列表的一个子集; 即,它可能不关心读/写超级/用户或其他排列。 每个ARM系统都会有所不同。 在某些情况下,供应商甚至可能不支持它。 在这种情况下,使系统安全甚至使用TrustZone可能会更困难。 请参阅: 处理ARM TrustZones ,其中一些总线问题在较少的细节上触及。

请参阅: TrustZone与Hypervisor ,它提供了更多的细节。