[英]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.