PCIe配置与VPD管理 - 页码154
深入分析:PCIe Memory Write 命令
PCIe Memory Write 命令允许管理控制器写入与 NVMe 控制器相关联的 PCIe 内存空间。该命令使用 PCIe Request Dwords 0、1 和 2 字段。
PCIe Request Dword 0(图162)
- Base Address Register (BAR):此字段指定要写入的 PCI 内存空间的基本地址寄存器(BAR)。BAR 在 PCI 配置空间从 0x10 开始,值指定该 BAR 的起始偏移。对于 64 位的 BAR,字段应对应于 BAR 的低 32 位。
- BAR Offset:此字段定义了要写入的 PCI 内存空间的起始位置。例如,值为 0h 表示从 0x10 偏移处开始,1h 表示从 0x14 偏移开始。
- Length (LENGTH):此字段指定要写入的字节数,即数据的长度。
PCIe Request Dword 1(图163)
- Offset (OFFSET):此字段指定要写入的 PCIe 内存地址空间中的起始偏移。它表示写入操作的低 32 位偏移。
PCIe Request Dword 2(图164)
- Offset (OFFSET):此字段指定要写入的 PCIe 内存地址空间中的起始偏移的高 32 位。
工作原理
- Base Address Register (BAR):指定写入操作的目标内存区域的起始位置。
- Length:定义写入的数据的字节数。
- Offset:指定写入数据的精确位置(包括低和高 32 位偏移)。
- 数据从 Request Data 字段中读取,按照指定的长度写入相应的 PCIe 内存区域。
错误处理
- 无效参数错误:如果 Base Address Register 字段与 NVMe 控制器不匹配,或者给定的 BAR 地址范围不是有效的内存区域,管理端点将响应“无效参数错误”。
- 如果 Offset + Length 超出了 BAR 指定的地址范围,也会返回“无效参数错误”。
总结
- PCIe Memory Write 命令提供了向 NVMe 控制器的 PCIe 内存空间写入数据的功能,支持高精度的内存访问。
- 错误处理机制确保写入操作的有效性和数据安全,避免无效或非法的写入操作。
如果你有其他具体问题或者想进一步探讨某些细节,请告诉我!