一尘不染

什么是ARM安全模式下的分区检查器

linux

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

系统启动顺序…

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

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


阅读 327

收藏
2020-06-03

共1个答案

一尘不染

什么是分区检查器?

它超出了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”位置1。这是 TrustZone的 区别。对于 超级 用户超级 用户来说
,这是一个传统HPROT。同样,每个 主机 都会声明一个WRITE /〜READ信号(也许极性是不同的,但是我们不是软件而是硬件)。

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都有一个从站和主站列表,并支持各种 yesno 配置,这可能是上面列表的一个子集;即,它可能不关心 读/写
超级/用户
或其他一些排列。每个ARM系统的情况都不同。在某些情况下,供应商甚至可能不支持它。在这种情况下,使系统变得安全甚至使用TrustZone可能会更加困难。

2020-06-03