BDF 表 - 4.0 简体中文

QDMA Subsystem for PCI Express v4.0 产品指南 (PG302)

Document ID
PG302
Release Date
2022-05-20
Version
4.0 简体中文

AXI 地址的地址转换是基于 BDF 表编程(0x2420 到 0x2434)来完成的。这些 BDF 表格条目均可通过 AXI CSR 从接口 s_axil_csr_* 进行编程。其中提供了 8 个窗口,类似于 PCIe 总线上的 8 个 BAR。BDF 表格编程中的每个条目均表示 1 个窗口。如果用户需 2 个窗口,则需对 2 个条目进行编程,以此类推。

BDF 表格编程存在一些限制。

  1. 在对 BDF 进行编程前,所有 PCIe Slave Bridge 数据传输都必须保持禁止。
  2. 每个 BDF 表格条目都有 6 个寄存器。全部 6 个寄存器都必须完成编程才能构成 1 个有效的条目。即使部分寄存器包含 0 值,您仍需对该寄存器中的 0 值进行编程。
  3. 全部 6 个寄存器都需按顺序进行编程才能使对应条目有效。顺序如下所示。
    1. 0x2420
    2. 0x2424
    3. 0x2428
    4. 0x242C
    5. 0x2430
    6. 0x2434

BDF 表格条目起始地址 = 0x2420 + (0x20 * i),其中 i = 表格条目编号。

保护

通过 TrustZone 使用 AXI4 prot 字段有助于为 BAR 内的不同窗口指定保护级别。从 PMC 执行的任何访问操作都包含 a*prot[1]=0,因此将享有完全访问权。

对于 BDF 空间,保护域 ID 本身存储在 BDF 表中。如果传入请求包含 a*rpot[1]=0,那么将为其授予完整访问权。含 a*prot[1]=1 的请求仅有权访问保护级别较低的 BDF 条目。

下表对此行为进行了描述:

表 1. AXI BAR 保护级别
访问类型 BDF 表值 (prot[2:0]) a*prot[2:0] 中的值(AXI 接口) 操作
安全访问 3'hXXX 3'hX0X (bit 1=0) 允许
对安全条目执行非安全访问 3'hX0X 3'hX1X (bit 1=1) 不允许
对安全级别较低的条目执行非安全访问 3'hX1X 3'hX1X (bit 1=1) 如果在 a*prot 与 BDF 条目之间 bit [2] 与 bit [0] 相匹配,则允许