我想记录设备驱动程序的所有读/写 PCI 事务。有没有办法通过linux命令或软件来做到这一点?
内存映射 I/O Trace 现在位于主线内核中,请参阅 /usr/src/linux/Documentation/trace/mmiotrace.txt 了解文档。
PCI/PCIe 完全在非常低级别的硬件中实现,软件通常对总线上发生的实际操作没有任何可见性,这与以太网或 USB 等协议不同,其中大部分堆栈是由软件处理的。因此,像 DMA 这样的东西不可能直接从软件中监控,因为它们完全由硬件处理。由 CPU (MMIO) 发起的操作只是对 IO 映射内存进行加载和存储操作,因此原则上应该可以像监视软件中的任何其他内存访问一样监视这些操作。
如果您确实需要了解 PCI 或 PCIe 总线上发生的情况,那么您需要一个称为协议分析器的硬件。这将捕获和解码所有总线传输,并以类似于wireshark的方式显示它们。