目录
1、基本介绍
Zynq®UltraScale+ MPSoC可以支持最多1TB物理地址空间的单个地址映射配置。Arm v8-A架构允许通过软件来配置物理地址。
1.1 全局地址映射
全局地址映射由多个包含的地址映射组成,具体取决于master接口的地址位宽。Zynq UltraScale+ MPSoC地址映射为40位(物理地址空间最大为40位)。
1.1.1 32bit(4GB)地址映射
我们之前提到,A53也兼容32位,那么为了保持和32位软件的兼容性,低4GB的地址映射为所有设备提供了接口。所有外设地址空间都分配在较低的4GB中,而且是固定的地址映射。
1.1.2 36bit(64GB)地址映射
36位地址映射是32位地址映射的扩展集。超过4GB的地址空间分配给了PL、PCIe接口和DDR控制器。在这个区域中,DDR控制器占用了32GB。
1.1.3 40bit(1TB)地址映射
40位地址映射是36位地址映射的扩展集。超过64GB的地址空间分配给PL、PCIe接口和DDR控制器。
1.1.4 系统地址映射互联
全局地址映射表如下:
SMMU支持两个阶段的转换:
阶段1是从虚拟地址(VA)到中间物理地址(IPA),阶段2是从中间物理地址(IPA)到物理地址。PS主接口的虚拟化目标主要是阶段2的转换,例如hypervisor场景仅使用阶段2转换。PL可以使用阶段1和/或阶段2的转换。
对于阶段1的地址转换,ARM v8架构支持最多49bit的寻址;对于阶段2的地址转换,ARM v8架构则支持最多48bit的中间物理地址。
完整的系统地址映射如下图所示:
二、系统地址寄存器概述
2.1 系统层级控制寄存器(SLCR寄存器)
SLCR寄存器用来控制PS的行为,其中每个寄存器的详细描述可以参考UG1087。其中有一部分寄存器需要安全模式访问,所有的寄存器都需要通过XPPU进行访问,XPPU可以设置访问要求包括安全访问、读写访问和被master接口访问。SLCR寄存器及其基本地址的概要描述如下表所示:
2.2 私有CPU寄存器
RPUs和APUs都有单独私有的CPU寄存器用来配置中断控制器,寄存器地址如下表。APU_GIC在AXI互连上,可以通过使用FPD_XMPU保护单元来让APU专用。
2.3 PS I/O外设寄存器
I/O外设寄存器可以通过32bit的APB总线访问,低功耗域和全功耗域外设的基地址如以下两表:
2.4 PS系统寄存器
还有些寄存器之前没有覆盖的可见下表:
三、详细参考
Zynq UltraScale+的详细寄存器手册可以见UG1087。在Zynq 7000时,寄存器单独附在ug585文档最后,到了U+有了单独的文档,但是现在不是PDF格式的,而是网页版,还好搜索查找都比较方便,详见地址:https://www.xilinx.com/html_docs/registers/ug1087/ug1087-zynq-ultrascale-registers.html#_overview.html。有时想在没网络的情况下查看寄存器手册,那么可以把网页存下来离线查看。