ioremap

liaocj 2024-12-03 09:02:56
Categories: Tags:

ecam 机制

物理地址 = [总线号 | 设备号 | 功能号 | 寄存器偏移]

CPU 发起访问到生成 TLP 的完整路径
以下是访问流程的完整步骤:

CPU 发起虚拟地址访问:

驱动程序通过虚拟地址(ioremap 映射得到)访问 PCIe 配置空间。
示例代码:
c
复制代码
writel(0x1234, virt_addr + offset);
MMU 将虚拟地址转换为物理地址:

根据页表,MMU 确定虚拟地址对应的物理地址(属于 PCIe 配置空间)。
内存控制器解码地址:

内存控制器检测到物理地址在 PCIe 配置空间范围内。
请求被转发到 PCIe 控制器,而非 DRAM。
PCIe 控制器生成 TLP 报文:

PCIe 控制器根据物理地址生成配置 TLP。
地址中的高位字段(总线号、设备号、功能号)用于目标设备的定位。
PCIe 总线传输:

TLP 报文通过 PCIe 交换机传输到目标设备。
设备处理请求:

PCIe 设备根据 TLP 的内容,访问其配置寄存器。
设备响应:

设备将结果封装为完成报文(Completion TLP),返回给 PCIe 控制器。
最终,数据通过内存控制器返回到 CPU。