UG585 Address Map
总览
| 起始地址 | 大小 | 说明 |
|---|---|---|
| 0x0000_0000 | 1024 MB | DDR DRAM 和 OCM |
| 0x4000_0000 | 1024 MB | PL AXI 从机端口 0 |
| 0x8000_0000 | 1024 MB | PL AXI 从机端口 1 |
| 0xE000_0000 | 256 MB | IOP 器件 |
| 0xF000_0000 | 128 MB | 保留 |
| 0xF800_0000 | 32 MB | 通过 AMBA APB 对可编程寄存器的访问 |
| 0xFA00_0000 | 32 MB | 保留 |
| 0xFC00_0000 | 64 MB --- 256 KB | 4 线 SPI 线性地址基址(除了顶端的 256kB OCM),保留了 64MB,目前只支持 32MB |
| 0xFFFC_0000 | 256 KB | 当映射到高地址空间时的 OCM |
表4-1:系统级地址映射
同一个地址范围在不同系统配置下的行为不同
被 SCU 过滤指 SCU 不负责这个地址访问的 cache 一致性
| 地址范围 | CPU及ACP | AXI_HP | 其他总线主设备¹ | 备注 |
|---|---|---|---|---|
| 0000_0000 ~ 0003_FFFF | OCM | OCM | OCM | 未被SCU过滤,OCM映射到低地址 |
| DDR | OCM | OCM | 被SCU过滤,OCM映射到低地址 | |
| DDR | 被SCU过滤,OCM未映射到低地址 | |||
| 未被SCU过滤,OCM未映射到低地址 | ||||
| 0004_0000 ~ 0007_FFFF | DDR | 被SCU过滤 | ||
| 未被SCU过滤 | ||||
| 0008_0000 ~ 000F_FFFF | DDR | DDR | DDR | 被SCU过滤 |
| DDR | DDR | 未被SCU过滤 ³ | ||
| 0010_0000 ~ 3FFF_FFFF | DDR | DDR | DDR | 所有互联主设备均可访问 |
| 4000_0000 ~ 7FFF_FFFF | PL | PL | 通用端口#0,连接PL,M_AXI_GP0 | |
| 8000_0000 ~ BFFF_FFFF | PL | PL | 通用端口#1,连接PL,M_AXI_GP1 | |
| E000_0000 ~ E02F_FFFF | IOP | IOP | I/O外设寄存器,见表4-6 | |
| E100_0000 ~ E5FF_FFFF | SMC | SMC | SMC存储器,见表4-5 | |
| F800_0000 ~ F800_0BFF | SLCR | SLCR | SLCR寄存器,见表4-3 | |
| F800_1000 ~ F880_FFFF | PS | PS | PS系统寄存器,见表4-7 | |
| F890_0000 ~ F8F0_2FFF | CPU | CPU私有寄存器,见表4-4 | ||
| FC00_0000 ~ FDFF_FFFF ⁴ | Quad-SPI | Quad-SPI | Quad-SPI线性地址(线性模式) | |
| FFFC_0000 ~ FFFF_FFFF ² | OCM | OCM | OCM | OCM映射到高地址 |
| OCM未映射到高地址 |
表4-2:系统级地址映射(保留地址)
| 地址范围 | CPU 与 ACP | AXI_HP | 其他总线主设备(1) | 说明 |
|---|---|---|---|---|
| C000_0000 到 DFFF_FFFF | --- | --- | --- | 保留 |
| E030_0000 到 E0FF_FFFF | --- | --- | --- | 保留 |
| E600_0000 到 F7FF_FFFF | --- | --- | --- | 保留 |
| F800_0C00 到 F800_0FFF | --- | --- | --- | 保留 |
| F881_0000 到 F889_0FFF | --- | --- | --- | 保留 |
| F8F0_3000 到 FBFF_FFFF | --- | --- | --- | 保留 |
| FE00_0000 到 FFFB_FFFF | --- | --- | --- | 保留 |
| 0xF889_E000 到 0xF88F_FFFF | --- | --- | --- | 保留 |
表4-3:SLCR寄存器映射
系统级控制寄存器(SLCR)由各类用于控制处理系统(PS)行为的寄存器组成。这些寄存器可通过中央互联,使用加载/存储指令进行访问。各寄存器的详细说明可参见附录B《寄存器详情》。SLCR寄存器及其基地址的汇总见下表4-3。
| 寄存器基地址 | 功能说明 | 参考章节/文档 |
|---|---|---|
F800_0000 |
SLCR写保护锁定与安全控制 | - |
F800_0100 |
时钟控制与状态 | 参见第25章《时钟》 |
F800_0200 |
复位控制与状态 | 参见第26章《复位系统》 |
F800_0300 |
应用处理单元(APU)控制 | 参见第3章《应用处理单元》 |
F800_0400 |
TrustZone安全扩展控制 | 参见UG1019《Xilinx Zynq-7000 SoC上的ARM TrustZone架构编程》 |
F800_0500 |
CoreSight SoC调试控制 | 参见第28章《系统测试与调试》 |
F800_0600 |
DDR DRAM控制器 | 参见第10章《DDR内存控制器》 |
F800_0700 |
MIO引脚配置 | 参见第2章《信号、接口与引脚》 |
F800_0800 |
MIO并行访问控制 | 参见第2章《信号、接口与引脚》 |
F800_0900 |
杂项控制 | 参见第29章《片上存储器(OCM)》 |
F800_0A00 |
片上存储器(OCM)控制 | 参见第29章《片上存储器(OCM)》 |
F800_0B00 |
MIO引脚I/O缓冲(GPIOB)与DDR引脚I/O缓冲(DDRIOB) | 参见第2章《信号、接口与引脚》 |
4.4 CPU Private Bus Registers(CPU私有总线寄存器)
表4-4中所示的寄存器仅可由CPU通过CPU私有总线访问。加速器一致性端口(ACP)无法访问任何CPU私有寄存器。这些CPU私有寄存器用于控制应用处理单元(APU)中的子系统。
| 寄存器基地址范围 | 功能说明 |
|---|---|
F890_0000 ~ F89F_FFFF |
顶层互联配置与全局程序员视图(GPV) |
F8F0_0000 ~ F8F0_00FC |
SCU(监听控制单元)控制与状态 |
F8F0_0100 ~ F8F0_01FF |
中断控制器CPU接口 |
F8F0_0200 ~ F8F0_02FF |
全局定时器 |
F8F0_0600 ~ F8F0_06FF |
私有定时器与私有看门狗定时器 |
F8F0_1000 ~ F8F0_1FFF |
中断控制器分发器 |
F8F0_2000 ~ F8F0_2FFF |
L2缓存控制器 |
4.5 SMC Memory(静态存储器控制器内存)
SMC存储器通过32位AHB总线进行访问(详见表4-5)。SMC控制寄存器的列表见表4-6。有关NAND和SRAM/NOR控制器功能的信息,请参考第11章《静态存储器控制器》。
| 寄存器基地址 | 功能说明 |
|---|---|
E100_0000 |
SMC NAND存储器地址范围 |
E200_0000 |
SMC SRAM/NOR片选0(CS0)存储器地址范围 |
E400_0000 |
SMC SRAM/NOR片选1(CS1)存储器地址范围 |
4.6 PS I/O Peripherals(处理系统I/O外设)
I/O外设寄存器通过32位APB总线访问,地址映射见表4-6。
| 寄存器基地址 | 功能说明 |
|---|---|
E000_0000, E000_1000 |
UART控制器0、1 |
E000_2000, E000_3000 |
USB控制器0、1 |
E000_4000, E000_5000 |
I2C控制器0、1 |
E000_6000, E000_7000 |
SPI控制器0、1 |
E000_8000, E000_9000 |
CAN控制器0、1 |
E000_A000 |
GPIO控制器 |
E000_B000, E000_C000 |
以太网控制器0、1 |
E000_D000 |
Quad-SPI控制器 |
E000_E000 |
静态存储器控制器(SMC) |
E010_0000, E010_1000 |
SDIO控制器0、1 |
4.7 Miscellaneous PS Registers(处理系统杂项寄存器)
PS系统寄存器通过32位AHB总线访问(详见表4-7)。
| 寄存器基地址 | 功能说明(缩写) | 寄存器集合 |
|---|---|---|
F800_1000, F800_2000 |
三定时器计数器0、1(TTC 0, TTC 1) | ttc. |
F800_3000 |
安全模式下的DMA控制器(DMAC S) | dmac. |
F800_4000 |
非安全模式下的DMA控制器(DMAC NS) | dmac. |
F800_5000 |
系统看门狗定时器(SWDT) | swdt. |
F800_6000 |
DDR内存控制器 | ddrc. |
F800_7000 |
设备配置接口(DevC) | devcfg. |
F800_8000 |
带FIFO的AXI_HP 0高性能AXI接口 | afi. |
F800_9000 |
带FIFO的AXI_HP 1高性能AXI接口 | afi. |
F800_A000 |
带FIFO的AXI_HP 2高性能AXI接口 | afi. |
F800_B000 |
带FIFO的AXI_HP 3高性能AXI接口 | afi. |
F800_C000 |
片上存储器(OCM) | ocm. |
F800_D000 |
eFuse(1) | - |
F800_F000 |
保留 | Reserved |
F880_0000 |
CoreSight调试控制 | cti. |
Notes:
- 一次性可编程非易失性存储器,用于支持FSBL的RSA认证。
14.3.6 Register Overview(寄存器概述)
GPIO寄存器的概述见表14-2(另请参见设备引脚章节14.2.1节"GPIO控制")。寄存器的详细说明见附录B《寄存器详情》。
表14-2:GPIO寄存器概述
| 功能分类 | 寄存器名称 | 功能概述 | 访问类型 |
|---|---|---|---|
| 数据读写 | gpio.MASK_DATA_{3:0}_{MSW,LSW} |
带位掩码的数据输出写入 | Mixed |
gpio.DATA_{3:0} |
32位数据输出写入 | R/W | |
gpio.DATA_{3:0}_RO |
32位输入数据读取 | RO | |
| I/O缓冲控制 | gpio.DIRM_{3:0} |
方向控制(输入/输出) | R/W |
gpio.OEN_{3:0} |
输出使能控制 | R/W | |
| 中断控制 | gpio.INT_MASK_{3:0} |
中断屏蔽(只读) | RO |
gpio.INT_EN_{3:0} |
中断使能(只写) | WO | |
gpio.INT_DIS_{3:0} |
中断禁用(只写) | WO | |
gpio.INT_STAT_{3:0} |
中断状态(写清除WTC) | WTC | |
gpio.INT_TYPE_{3:0} |
中断类型配置(电平/边沿) | RW | |
gpio.INT_POLARITY_{3:0} |
中断极性配置(高/低或上升/下降沿) | RW | |
gpio.INT_ANY_{3:0} |
任意边沿中断配置 | RW |
c
GPIO_BASE = 0xE000_A000
/**偏移**/
// 方向
DIRM_0 = 0x200
DIRM_1 = 0x204
DIRM_2 = 0x208
DIRM_3 = 0x20C
// 输出使能
OEN_0 = 0x240
OEN_1 = 0x244
OEN_2 = 0x248
OEN_3 = 0x24C
// 输出数据
DATA_0 = 0x000
DATA_1 = 0x004
DATA_2 = 0x008
DATA_3 = 0x00C
// 带掩码输出
MASK_DATA_0_LSW = 0x010
MASK_DATA_0_MSW = 0x014
MASK_DATA_1_LSW = 0x018
MASK_DATA_1_MSW = 0x01C
MASK_DATA_2_LSW = 0x020
MASK_DATA_2_MSW = 0x024
MASK_DATA_3_LSW = 0x028
MASK_DATA_3_MSW = 0x02C
// 输入数据
DATA_RO_0 = 0x040
DATA_RO_1 = 0x044
DATA_RO_2 = 0x048
DATA_RO_3 = 0x04C
28.4 Register Overview(寄存器概述)
根据CoreSight规范,每个CoreSight组件占用4KB地址空间。表28-5列出了各CoreSight组件的基地址。
| 组件 | 基地址 |
|---|---|
| DAP ROM | 0xF880_0000 |
| ETB | 0xF880_1000 |
| CTI(连接至ETB、TPIU) | 0xF880_2000 |
| TPIU | 0xF880_3000 |
| Funnel | 0xF880_4000 |
| ITM | 0xF880_5000 |
| CTI(连接至FTM) | 0xF880_9000 |
| FTM | 0xF880_B000 |
| Cortex-A9 ROM | 0xF888_0000 |
| CPU0 debug logic | 0xF889_0000 |
| CPU0 PMU | 0xF889_1000 |
| CPU1 debug logic | 0xF889_2000 |
| CPU1 PMU | 0xF889_3000 |
| CTI(连接至CPU0、PTM0) | 0xF889_8000 |
| CTI(连接至CPU1、PTM1) | 0xF889_9000 |
| PTM0(用于CPU0) | 0xF889_C000 |
| PTM1(用于CPU1) | 0xF889_D000 |
| 宏定义 | 偏移地址 | 绝对地址 | 功能说明 |
|---|---|---|---|
GPIO_DATA_0 |
0x000 |
0xE000A000 |
Bank0 数据寄存器(MIO0~31) |
GPIO_DATA_1 |
0x004 |
0xE000A004 |
Bank1 数据寄存器(MIO32~53) |
GPIO_DATA_2 |
0x008 |
0xE000A008 |
Bank2 数据寄存器(EMIO0~31) |
GPIO_DATA_3 |
0x00C |
0xE000A00C |
Bank3 数据寄存器(EMIO32~63) |
GPIO_MASK_DATA_0_LSW |
0x010 |
0xE000A010 |
Bank0 Mask Data LSW |
GPIO_MASK_DATA_0_MSW |
0x014 |
0xE000A014 |
Bank0 Mask Data MSW |
GPIO_MASK_DATA_1_LSW |
0x018 |
0xE000A018 |
Bank1 Mask Data LSW |
GPIO_MASK_DATA_1_MSW |
0x01C |
0xE000A01C |
Bank1 Mask Data MSW |
GPIO_MASK_DATA_2_LSW |
0x020 |
0xE000A020 |
Bank2 Mask Data LSW |
GPIO_MASK_DATA_2_MSW |
0x024 |
0xE000A024 |
Bank2 Mask Data MSW |
GPIO_MASK_DATA_3_LSW |
0x028 |
0xE000A028 |
Bank3 Mask Data LSW |
GPIO_MASK_DATA_3_MSW |
0x02C |
0xE000A02C |
Bank3 Mask Data MSW |
GPIO_DATA_RO_0 |
0x060 |
0xE000A060 |
Bank0 输入只读寄存器 |
GPIO_DATA_RO_1 |
0x064 |
0xE000A064 |
Bank1 输入只读寄存器 |
GPIO_DATA_RO_2 |
0x068 |
0xE000A068 |
Bank2 输入只读寄存器 |
GPIO_DATA_RO_3 |
0x06C |
0xE000A06C |
Bank3 输入只读寄存器 |
GPIO_DIRM_0 |
0x204 |
0xE000A204 |
Bank0 GPIO方向控制 |
GPIO_DIRM_1 |
0x244 |
0xE000A244 |
Bank1 GPIO方向控制 |
GPIO_DIRM_2 |
0x284 |
0xE000A284 |
Bank2 GPIO方向控制 |
GPIO_DIRM_3 |
0x2C4 |
0xE000A2C4 |
Bank3 GPIO方向控制 |
GPIO_OEN_0 |
0x208 |
0xE000A208 |
Bank0 GPIO输出使能 |
GPIO_OEN_1 |
0x248 |
0xE000A248 |
Bank1 GPIO输出使能 |
GPIO_OEN_2 |
0x288 |
0xE000A288 |
Bank2 GPIO输出使能 |
GPIO_OEN_3 |
0x2C8 |
0xE000A2C8 |
Bank3 GPIO输出使能 |
GPIO_INT_MASK_0 |
0x20C |
0xE000A20C |
Bank0 中断屏蔽状态 |
GPIO_INT_MASK_1 |
0x24C |
0xE000A24C |
Bank1 中断屏蔽状态 |
GPIO_INT_MASK_2 |
0x28C |
0xE000A28C |
Bank2 中断屏蔽状态 |
GPIO_INT_MASK_3 |
0x2CC |
0xE000A2CC |
Bank3 中断屏蔽状态 |
GPIO_INT_EN_0 |
0x210 |
0xE000A210 |
Bank0 中断使能 |
GPIO_INT_EN_1 |
0x250 |
0xE000A250 |
Bank1 中断使能 |
GPIO_INT_EN_2 |
0x290 |
0xE000A290 |
Bank2 中断使能 |
GPIO_INT_EN_3 |
0x2D0 |
0xE000A2D0 |
Bank3 中断使能 |
GPIO_INT_DIS_0 |
0x214 |
0xE000A214 |
Bank0 中断禁用 |
GPIO_INT_DIS_1 |
0x254 |
0xE000A254 |
Bank1 中断禁用 |
GPIO_INT_DIS_2 |
0x294 |
0xE000A294 |
Bank2 中断禁用 |
GPIO_INT_DIS_3 |
0x2D4 |
0xE000A2D4 |
Bank3 中断禁用 |
GPIO_INT_STAT_0 |
0x218 |
0xE000A218 |
Bank0 中断状态 |
GPIO_INT_STAT_1 |
0x258 |
0xE000A258 |
Bank1 中断状态 |
GPIO_INT_STAT_2 |
0x298 |
0xE000A298 |
Bank2 中断状态 |
GPIO_INT_STAT_3 |
0x2D8 |
0xE000A2D8 |
Bank3 中断状态 |
GPIO_INT_TYPE_0 |
0x21C |
0xE000A21C |
Bank0 中断类型配置 |
GPIO_INT_TYPE_1 |
0x25C |
0xE000A25C |
Bank1 中断类型配置 |
GPIO_INT_TYPE_2 |
0x29C |
0xE000A29C |
Bank2 中断类型配置 |
GPIO_INT_TYPE_3 |
0x2DC |
0xE000A2DC |
Bank3 中断类型配置 |
GPIO_INT_POLARITY_0 |
0x220 |
0xE000A220 |
Bank0 中断极性配置 |
GPIO_INT_POLARITY_1 |
0x260 |
0xE000A260 |
Bank1 中断极性配置 |
GPIO_INT_POLARITY_2 |
0x2A0 |
0xE000A2A0 |
Bank2 中断极性配置 |
GPIO_INT_POLARITY_3 |
0x2E0 |
0xE000A2E0 |
Bank3 中断极性配置 |
GPIO_INT_ANY_0 |
0x224 |
0xE000A224 |
Bank0 任意边沿中断配置 |
GPIO_INT_ANY_1 |
0x264 |
0xE000A264 |
Bank1 任意边沿中断配置 |
GPIO_INT_ANY_2 |
0x2A4 |
0xE000A2A4 |
Bank2 任意边沿中断配置 |
GPIO_INT_ANY_3 |
0x2E4 |
0xE000A2E4 |
Bank3 任意边沿中断配置 |