PCIe配置与VPD管理 - 页码152
深入分析:PCIe I/O Write 和 PCIe Memory Read
PCIe I/O Write(图157 和图158)
PCIe I/O Write 命令允许管理控制器向与 NVMe 控制器相关联的 PCIe I/O 空间写入内容。它使用 PCIe Request Dwords 0 和 1 字段。PCIe Request Dword 2 是保留字段,不使用。
PCIe Request Dword 0 的详细格式如下:
字段名 | 描述 |
---|---|
Reserved | 保留字段,不使用。 |
Base Address Register (BAR) | 此字段指定要写入的 PCI 基地址寄存器(BAR)。该字段值表示与该 BAR 关联的 PCI I/O 空间的起始偏移量。对于 64 位的 BAR,该字段应对应于该 BAR 的最低有效 32 位。 |
Length (LENGTH) | 此字段指定要写入的字节数,控制写入的数据范围。 |
PCIe Request Dword 1 的详细格式如下:
字段名 | 描述 |
---|---|
Offset (OFFSET) | 此字段指定要写入的 PCIe 地址空间中的偏移量。它与 Base Address Register 字段配合使用,确定写入操作的起始位置。 |
工作原理: 1. Base Address Register (BAR):指定与 NVMe 控制器关联的 PCIe I/O 空间的起始位置。 2. Length (LENGTH):指定写入数据的字节数。 3. Offset (OFFSET):指定开始写入的 PCIe 地址空间中的偏移量。
错误处理: - 如果 BAR 字段对应的不是 NVMe 控制器实现的 I/O BAR,或者 Offset + Length 超出了配置空间的范围,将导致“无效参数错误”响应,并指明是 BAR 或 Offset 字段有问题。
PCIe Memory Read(图159、图160 和图161)
PCIe Memory Read 命令允许管理控制器读取与 NVMe 控制器相关联的 PCIe 内存空间的内容。它使用 PCIe Request Dwords 0、1 和 2 字段。
PCIe Request Dword 0 的详细格式如下:
字段名 | 描述 |
---|---|
Reserved | 保留字段,不使用。 |
PCIe Request Dword 1 和 PCIe Request Dword 2 的具体格式将在后续详细介绍,它们用于指定读取操作的详细参数,如内存空间的偏移量、读取的字节数等。
总结
- PCIe I/O Write 和 PCIe Memory Read 命令提供了对 PCIe I/O 空间 和 PCIe 内存空间 的读写操作。
- 这些命令通过 Base Address Register (BAR) 和 Offset (OFFSET) 字段精确控制数据的读取和写入起始位置。
- Length 字段用于控制数据的传输大小,确保数据对齐并按照正确的边界进行传输。
- 错误处理机制确保了当 BAR 或 Offset + Length 超出有效范围时,系统能够响应错误。
如果你对 PCIe 命令集 的其他方面有疑问,或希望进一步探讨如何在系统中实现这些命令,随时可以向我提问。