Próbuję znaleźć adres bazowy (pamięci) portu równoległego, który podłączyłem do mojego laptopa za pomocą karty PCI Express. Uruchomienie lspci -v
pokazuje, że mój komputer rozpoznaje port równoległy i podaje porty we/wy (1000 i 1008), ale nie adres pamięci (inne wpisy mają zarówno porty, jak i lokalizacje w pamięci ... ta karta jest jedynym wpisem bez adresu pamięci). Ponadto, gdy patrzę w /proc/ioports
otrzymuję te same porty podane w lspci. Jednak gdy próbuję użyć któregoś z tych adresów w uruchomionym programie (EMC2 do sterowania silnikami krokowymi), nie znajdzie on portu równoległego pod tym adresem.Znajdowanie adresu pamięci portu równoległego w systemie Linux
To, co byłoby naprawdę świetne, to gdyby był analogowy do Menedżera urządzeń systemu Windows -> Porty -> Zasoby. Czy jest jakiś sposób na zrobienie tego w Ubuntu? Czy istnieje standardowa lokalizacja pamięci dla urządzeń PCIe?
Edit: Wyjście z lspci -v
04:00.0 Parallel controller: Oxford Semiconductor Ltd Device c110 (prog-if 02)
Subsystem: Oxford Semiconductor Ltd Device c110
Flags: bus master, fast devsel, latency 0, IRQ 18
I/O ports at 1000 [size=8]
I/O ports at 1008 [size=4]
Capabilities: [40] Power Management version 3
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Capabilities: [70] Express Legacy Endpoint, MSI 00
Capabilities: [100] Device Serial Number 10-01-00-11-11-e0-30-00
Capabilities: [110] Power Budgeting <?>
Kernel driver in use: parport_pc
Kernel modules: parport_pc
I odsyłającym inny wpis, który pokazuje lokalizację pamięci:
0c:03.0 FireWire (IEEE 1394): Agere Systems FW322/323 (rev 61) (prog-if 10)
Subsystem: Agere Systems FW322/323
Flags: bus master, fast Back2Back, medium devsel, latency 248, IRQ 19
Memory at 8c000000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [44] Power Management version 2
Kernel driver in use: ohci1394
Kernel modules: firewire-ohci, ohci1394
Czy możesz dołączyć wyjście 'lspci -w' na karcie portu równoległego? Mogę powiedzieć, że nie ma standardowej lokalizacji pamięci dla urządzeń PCIe i że porty równoległe często nie mają regionów adresowych pamięci. –
@adrian lspci narzeka, że -w nie jest prawidłową flagą. Czytałem, że 0x378, 0x278 i 0x3BC są trzema standardowymi lokalizacjami dla portu równoległego, ale moje nie znajdują się w żadnym z tych miejsc. Czy istnieje sposób na określenie adresu pamięci z numeru portu we/wy? – Sam
Dokumentacja EMC2 http://wiki.linuxcnc.org/emcinfo.pl?TroubleShooting musisz zwolnić moduł jądra parport_pc, ponieważ prawdopodobnie przejmuje kontrolę nad adresami portu równoległego i twoje oprogramowanie nie może uzyskać do nich dostępu. Użyj 'lsmod' i' rmmod', aby usunąć wszystkie moduły połączone z parport (jak parport_pc, parport, ppdev) i spróbuj ponownie. – Zuljin