按照此链接 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0333h/Chdfjdgi.html
下
系统启动顺序…
对分区检查器进行编程,以分配可用于非安全OS的物理内存。
什么是分区检查器?它是一个有寄存器的子系统吗,它的编程模型是什么?
什么是分区检查器?
它超出了CPU 的 TrustZone 规范。但是,在坚果壳中,它将存储空间分区或划分为不同的允许访问。如果不允许访问,则会引发 外部BUS错误 。
它是一个有寄存器的子系统吗,它的编程模型是什么?
通常,它是一堆寄存器。它可能有多个寄存器文件。例如,一个系统中可能同时存在APB(外围总线),AHB(旧的ARM总线)和新的AXI(TrustZone感知总线)。甚至可能有多条APB总线,等等。
在同一页面上,
TrustZone内存管理的原理是将物理内存划分为安全和非安全区域。
应该补充的是,将 母版* 划分 为 安全 和 非安全 分区 也很重要。该 分区 超出了ARM CPU TrustZone规范;它是BUS体系结构的一部分。实施此任务取决于总线控制器/结构。总线控制器同时连接了 主设备 (CPU,DMA外设等)和 从 设备(内存设备,寄存器接口等)。 * __
__在ARM TrustZone文档的上下文中进行 分区 有点模糊,因为实现每个细节取决于每个SOC和总线控制器(和层次结构)。如上所述,它将存储空间分区或划分为不同的允许访问。这就像使用传统ARM(AMABA)AHB总线进行管理员访问与用户访问一样。AXI接口增加了NS一点。
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”位置1。这是 TrustZone的 区别。对于 超级 用户 和 超级 用户来说 ,这是一个传统HPROT。同样,每个 主机 都会声明一个WRITE /〜READ信号(也许极性是不同的,但是我们不是软件而是硬件)。
SCR
HPROT
DMA主设备(以太网,USB等)也可以向BUS发送请求。通常,这些是在引导时设置并锁定的。如果您的安全世界使用以太网,那么它可能是访问安全内存的安全DMA主设备。以太网芯片通常还具有 从 寄存器接口。必须将其标记(或分区)为 secure 。如果 正常 世界访问 以太网 寄存器文件,则将引发BUS错误。供应商还可以使DMA外设NS根据命令结构动态设置该位。在中国汽车工业协会是一个 加密 的驱动程序,可以将安装工作说明同时处理 正常 和 安全 访问,例如做这两种操作的DMA主站。
CPU(例如Cortex-M4或Cortex-R)也可能是全局 安全的 或 正常的 。只有具有完整 TrustZone 的Cortex- A系列(和ARMv6)会动态切换 NS 位,从而使CPU既 安全 又 正常 ,具体取决于上下文。
从属外围设备可能已分区。例如,SDRAM的前10MB可能是正常的和安全的读写,以 进行世界间的 通信。然后是下一个54MB,也许正常情况下只能正常读取/写入。然后为安全世界提供最终64MB的读/写安全性。通常,外设的寄存器接口为 全或无 设置。
这些都不在MMU的范围之内,并且仅处理 物理 地址。如果SOC在引导后将其锁定,则任何人都无法更改映射。如果安全世界代码为 只读 ,则设计漏洞利用程序可能会更加困难。
通常,所有APB总线都分层放置在AHB总线上,该AHB总线像树一样连接到AXI主总线。AXI总线是Cortex- A的默认设置。每个BUS都有一个从站和主站列表,并支持各种 yes 和 no 配置,这可能是上面列表的一个子集;即,它可能不关心 读/写 或 超级/用户 或其他一些排列。每个ARM系统的情况都不同。在某些情况下,供应商甚至可能不支持它。在这种情况下,使系统变得安全甚至使用TrustZone可能会更加困难。