Sto scrivendo un driver PCIe per Linux, attualmente senza DMA, e ho bisogno di sapere come leggere e scrivere sul dispositivo PCIe una volta abilitato dallo spazio utente.Driver PCIe - In che modo lo spazio utente lo accede?
Nel driver che faccio le basi in sonda():
pci_enable_device();
pci_request_regions();
pci_iomap();
Ma allora come faccio ad accedere a questa memoria da user space a leggere e scrivere? Aggiungo le operazioni sui file al mio driver PCIe? Ha la memoria da pci_iomap mostrare un po 'di posto in cui il codice di spazio utente può chiamare:
open('mapped memory location');
mmap(...);
Se è così allora che cosa è la posizione?
Nota: il dispositivo PCIe non collegandolo ad una qualsiasi sottosistemi Linux come audio, Ethernet, ecc
Non sono sicuro che sia il modo consigliato di fare le cose, ma altri driver del kernel espongono dispositivi virtuali come '/ dev/vboxnetctl', che presumo tu possa impartire comandi a. Non sono sicuro che il kernel di Linux consentirebbe a qualsiasi programma userspace di leggere/scrivere su un dispositivo PCIe, volente o nolente, che potrebbe sembrare pericoloso. –
Anche io lo stavo guardando. C'è qualcosa che devo fare per far visualizzare il mio dispositivo lì? Ad esempio, quali chiamate API faccio nel mio driver? – user2205930
Forse date un'occhiata al codice sorgente del driver VirtualBox per le idee. –