Pytanie:
Podłączyłem urządzenie (tj. Modem GSM) przez port szeregowy (inaczej RS-232) i muszę sprawdzić, z jakim plikiem w /dev/
systemie plików to urządzenie było powiązane, aby móc się z nim komunikować. Niestety nie ma nowo utworzonego pliku /dev/
ani nie widać niczego w dmesg
danych wyjściowych. To wydaje się trudne pytanie.
Tło:
Nigdy nie pracowałem z urządzeniem szeregowym, więc wczoraj, gdy pojawiła się taka potrzeba, próbowałem to zrobić w Google, ale nie znalazłem nic pomocnego. Spędziłem kilka godzin w poszukiwaniu i chcę podzielić się znalezioną odpowiedzią, ponieważ może być komuś pomocna.
devices
tty
serial-port
Cześć aniele
źródło
źródło
Odpowiedzi:
Niestety porty szeregowe nie obsługują PlugNPlay, więc jądro nie wie, które urządzenie zostało podłączone. Po przeczytaniu samouczka HowTo wpadłem na pomysł.
/dev/
Katalog UNIX jak poniekąd zawiera pliki o nazwach jak ttySn (gdzie n jest liczbą) . Większość z nich nie odpowiada istniejącym urządzeniom. Aby dowiedzieć się, które z nich działają, wydaj polecenie:Powyżej znajduje się przykładowe wyjście mojego komputera. Możesz zobaczyć inicjalizację kilku portów szeregowych:
ttyS0
,ttyS1
,ttyS4
,ttyS5
.Jedno z nich będzie miało dodatnie napięcie na podłączonym urządzeniu. Więc porównując zawartość pliku
/proc/tty/driver/serial
z podłączonym urządzeniem i bez niego, możemy łatwo znaleźć ttyS związane z naszym urządzeniem. Więc teraz:(od) podłącz urządzenie
Następnie sprawdź różnicę między dwoma plikami. Poniżej znajduje się wyjście mojego komputera:
Porównując trzy liczby z wyjściem dmesg, możemy ustalić, który z nich jest portem:
Dlatego nasze urządzenie jest
/dev/ttyS0
, misja zrealizowana!źródło
dmesg
powinienem otrzymać komunikat o przypisaniu IRQ do urządzenia szeregowego. A jeśli nie, przypuszczam, że mam problem ze sprzętem. To tylko założenie i może się mylić, ale gdybym debugował taki problem, zacząłem badania z myślą, że port szeregowy powinien zostać zainicjowany.