繁体   English   中英

Linux如何测试PCIe驱动程序?

[英]Linux How to test a PCIe driver?

我编写了一个简单的PCIe驱动程序,我想测试它是否有效。 例如,是否还可以对设备使用的内存进行读写操作。

我怎样才能做到这一点?

哪些东西也应该被证明?

您需要找到设备的sysfs条目,例如

/sys/devices/pci0000:00/0000:00:07.0/0000:28:00.0

(通过/sys其他子目录中的符号链接(例如/sys/class/... )可以更轻松地到达那里)

在此目录中,应该有一个名为resource... (伪)文件resource...它们与设备的各个地址范围(基地址寄存器)相对应。 我认为这些可以通过mmap()编辑(但我从未做到过)。

/ sys中的条目还可以做很多其他事情。 有关更多详细信息,请参见内核文档。

要测试内存,您可以按照以下方法进行:

1)做lspci -v

Output of this command will be something like this

0002:03:00.1 Ethernet controller: QUALCOMM Corporation Device ABCD (rev 11)
Subsystem: QUALCOMM Corporation Device 8470
Flags: fast devsel, IRQ 110
Memory at 11d00f1008000 (64-bit, prefetchable) [disabled] [size=32K]
Memory at 11d00f0800000 (64-bit, prefetchable) [disabled] [size=8M]
Capabilities: [48] Power Management version 3
Capabilities: [50] Vital Product Data
Capabilities: [58] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [a0] MSI-X: Enable- Count=1 Masked-
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [150] Power Budgeting <?>
Capabilities: [180] Vendor Specific Information: ID=0000 Rev=0 Len=028 <?>
Capabilities: [250] #12

2)我们可以在上面看到输出存储器被禁用。 要启用它,我们可以执行以下命令:

setpci -s 0002:03:00.1 COMMAND=0x02

该命令将启用以下地址的内存:11d00f1008000

现在,尝试使用处理器读取命令读取该内存,它应该可以访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM