簡體   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