2012-06-25 18 views
9

Mam interesujący problem. Pracuję nad osadzonym pudełkiem z wieloma instancjami systemu Linux działającymi na procesorze ARM. Są one połączone przez wewnętrzną sieć 1GBps. Mam węzeł urządzenia portu szeregowego dołączony do procesora A (powiedzmy, że działa na nim Linux-A). Mam program działający na procesorze B (powiedzmy na Linux-B) dostęp do urządzenia portu szeregowego tak, jakby był lokalnie podłączony do Linux-a.
Mój program wywołuje wywołania term i-o typu api w węźle urządzenia, aby sterować echo tty, wejście trybu znakowego. Zastanawiam się, czy istnieje sposób na stworzenie wirtualnego urządzenia szeregowego, które jest dostępne na Linux-B, jakoś rozmawia z rzeczywistym urządzeniem szeregowym na Linux-A przez wewnętrzną sieć.
W jaki sposób utworzyć urządzenie wirtualne io w systemie Linux, które przesyła dane do rzeczywistego urządzenia?

Mam na myśli coś takiego: Linux-B ma/dev/ttyvirtual. Wszystko, co zostanie do niej zapisane, zostanie przetransportowane przez gniazdo sieciowe do serwera-seryjnego Linux-a. Serwer szeregowy rozgłasza wywołania api na prawdziwym urządzeniu, powiedzmy/dev/ttys0. Wszystkie dane oczekujące na ttys0 zostaną przetransportowane z powrotem do/dev/ttyvirtual.

Co należy zrobić, aby zrobić to szybko?

Dzięki
Videoguy

Aktualizacja: znalazłem dyskusję na http://fixunix.com/bsd/261068-network-socket-serial-port-question.html z wielkich wskaźników.
Inną użyteczną link jest http://blog.philippklaus.de/2011/08/make-rs232-serial-devices-accessible-via-ethernet/

+0

schemat byłby pomocny;) – Merlin

Odpowiedz

7

skończyło się używając socat

Przykłady można znaleźć tutaj: socat examples

Ty socat plecami do siebie na obu maszynach. Jeden słucha na porcie TCP i przekazuje dane do lokalnego portu wirtualnego lub pty. Socat na innym polu używa prawdziwego urządzenia jako wejścia i przekazuje dowolne dane do portu TCP.

8

Spójrz na openpty(3). Dzięki temu możesz utworzyć pseudo-TTY (na przykład /dev/pts/0, sortowanie używane przez połączenia ssh), które będzie reagować tak, jak normalnie TTY, ale da ci bezpośrednią kontrolę programową nad połączeniami.

W ten sposób można obsługiwać urządzenie szeregowe (np. /dev/pts/5), które przesyłają dane między połączeniami sieciowymi, a następnie inne aplikacje mogą wykonywać na nim operacje szeregowe bez znajomości powiązanego mostu sieciowego.