2012-01-12 11 views
6

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 
+0

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. –

+0

@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

+0

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

Odpowiedz

3

Wypróbuj cat /proc/ioports | grep parport, aby przefiltrować wyjście z ioports.

2

Szybka odpowiedź: nie jest nie miejsce w pamięci dla port równoległy. Porty równoległe mają tylko przydzielone im porty IO. W ten sposób interfejsy portu równoległego działały przez dziesięciolecia i nikt nie odczuł potrzeby stworzenia niezgodnego interfejsu mapowania pamięci, który wymagałby specjalnych sterowników.

Teraz muszę zapytać, dlaczego zamierzasz znaleźć lokalizację pamięci portu? Co chcesz z tym zrobić?

+0

Staraliśmy się skonfigurować EMC2 (oprogramowanie sterowane komputerowo) do użytku z moim komputerem, ale nie rozpoznawaliśmy sprzętu podłączonego przez port równoległy. Ale potem zaczęło działać. – Sam

+0

Ale jeśli musisz zapytać, czy możesz teraz odpowiedzieć? – clearlight

Powiązane problemy