我正在爲Linux編寫一個PCIe驅動程序,目前沒有DMA,並且需要知道如何從用戶空間啓用PCIe設備時讀取和寫入PCIe設備。PCIe驅動程序 - 用戶空間如何訪問它?
在我做的基礎知識探頭()司機:
pci_enable_device();
pci_request_regions();
pci_iomap();
但後來怎樣訪問從用戶空間這個內存讀寫?我是否將文件操作添加到我的PCIe驅動程序?從pci_iomap的內存是否顯示用戶空間代碼可以調用的某些地方:
open('mapped memory location');
mmap(...);
如果是這樣,那麼位置是什麼?
注:的PCIe設備不會插入到任何Linux子系統,如音頻,以太網等
不知道是否是推薦的做事方式,但其他內核驅動程序會暴露類似'/ dev/vboxnetctl'的虛擬設備,我假設您可以發出命令。我不確定Linux內核是否會允許任何用戶空間程序無情地讀取/寫入PCIe設備,這聽起來像是危險的。 –
我也在看。有什麼我需要做的,爲了讓我的設備出現在那裏?例如,我可以在我的驅動程序中創建哪些API調用? – user2205930
也許看看VirtualBox驅動程序源代碼的想法。 –