Piszę sterownik PCIe dla systemu Linux, obecnie bez DMA, i muszę wiedzieć, jak czytać i zapisywać dane na urządzeniu PCIe po włączeniu go z przestrzeni użytkownika.Sterownik PCIe - Jak ma do niego dostęp użytkownik?
W sterowniku robię podstawy w sondzie():
pci_enable_device();
pci_request_regions();
pci_iomap();
Ale to w jaki sposób mogę uzyskać dostęp do tej pamięci z przestrzeni użytkownika do odczytu i zapisu? Czy dodaję operacje na plik do mojego sterownika PCIe? Czy pamięć z pci_iomap pokazuje miejsce, w którym kod przestrzeni użytkownika może wywoływać:
open('mapped memory location');
mmap(...);
Jeśli tak, to jaka jest lokalizacja?
Uwaga: urządzenie PCIe nie podłączając do jakichkolwiek podsystemów systemu Linux, takich jak audio, Ethernet, itp
Nie jestem pewien, czy jest to zalecany sposób robienia rzeczy, ale inne sterowniki jądra udostępniają urządzenia wirtualne, takie jak '/ dev/vboxnetctl', które zakładam, że możesz wydać polecenia. Nie jestem pewien, czy jądro Linuksa pozwoliłoby programowi przestrzeni użytkownika na odczytywanie/zapisywanie na urządzeniu PCIe, ale to brzmi groźnie. –
Patrzyłem też na to. Czy jest coś, co muszę zrobić, aby moje urządzenie się tam pojawiło? Na przykład, jakie wywołania interfejsu API wprowadzam w moim sterowniku? – user2205930
Być może spójrz na kod źródłowy sterownika VirtualBox dla pomysłów. –