Şu an DMA olmadan Linux için bir PCIe sürücüsü yazıyorum ve kullanıcı alanından etkinleştirildikten sonra PCIe aygıtının nasıl okunacağını ve yazılacağını bilmem gerekiyor.PCIe Sürücüsü - Kullanıcı alanı nasıl erişir?
pci_enable_device();
pci_request_regions();
pci_iomap();
Ama sonra okuma yazma kullanıcı uzaydan Bu belleğine erişim nasıl: Ben sonda() içinde temel yapmak sürücüsünde
? PCIe sürücüsüne dosya işlemleri ekledim mi?
open('mapped memory location');
mmap(...);
Eğer öyleyse o zaman konumu nedir: pci_iomap bellek kullanıcı uzay kod çağırabilir bir yere görünür mü?
Not: PCIe aygıtı tür Sen register_chrdev
ve device_create
gibi işlevleri kullanarak cihazları kayıt olabilirsiniz
Önerilen bir işlem yapmanın yolu olup olmadığından emin değilsiniz, ancak diğer çekirdek sürücüleri, komutları verebileceğinizi düşündüğüm, sanal aygıtları/dev/vboxnetctl gibi açığa çıkarır. Linux çekirdeğinin, herhangi bir kullanıcı-uzay programının bir PCIe aygıtını nemli-nilly okumasına/yazmasına izin vereceğinden emin değilim, bu tehlikeli olabileceğine benziyor. –
Ben de ona bakıyordum. Cihazımın orada görünmesi için yapmam gereken bir şey var mı? Örneğin, sürücümde hangi API çağrılarını yapıyorum? – user2205930
Belki de fikirler için VirtualBox sürücü kaynak koduna bakın. –