2012-11-01 5 views
5

wynik odczytu z cat /dev/ttyACM0 powoduje zamarzanie tablicy beagle. Odmaga się, gdy odłączam serial usb.wynik odczytu z/dev/ttyACM0 powoduje zamrożenie tablicy beagle (Embedded stuff)

Zasadniczo moja konfiguracja to płyta Beagle podłączona za pośrednictwem usb do mojego laptopa, który komunikuje się z nią za pośrednictwem COM6. Mamy go również połączony z internetem poprzez udostępnianie w Internecie. Mam też inny usb podłączony do niego z kontrolera Arduino Teensy ++. Kontroler przesyła dane za pośrednictwem portu USB do płyty Beagle. Celem tego ćwiczenia jest odczytanie danych z portu USB.

Proces czytania i używania to cat /dev/ttyACM0. Powoduje to wydrukowanie pierwszych 2 linii danych, a następnie zamarza cała plansza Beagle. Kiedy odłączysz teensy ++, wypisuje się jak 10-20 linii (zakładając, że cokolwiek zawiera bufor). Nie wiem, dlaczego tak się dzieje.

Czy ktoś może pomóc? Dzięki

+0

Czy używa niektórych dodatkowych linii kontrolnych, takich jak CTS? Może na to czeka beagleboard. – Evert

+0

Nie jestem pewien. Zamierzam to sprawdzić. Ale gdy tylko płyta Beagle zostanie zamknięta, odłączam USB i wypluwa to, co znajduje się w buforze (zasadniczo wszystko, co zostało wysłane od momentu blokady, czasami pojawia się następujący błąd po odłączeniu USB: " [1757.210482] cdc_acm 1 -1: 1.1: acm_start_wb - usb_submit_urb (write bulk) nie powiodło się: -19 " –

+0

Sprawdź również, czy teensy ++ poprawnie wysyła dane szeregowe przez cały czas, sprawdzając je za pomocą standardowej aplikacji Windows do odczytu danych szeregowych, na przykład bray terminal, czy terraterm, poza tym myślę, że ma coś wspólnego ze sposobem, w jaki twój wbudowany linux obsługuje urządzenie szeregowe USB, ale nie wiem co jeszcze. EDYCJA: Myślę, że ma coś wspólnego ze sposobem portu szeregowego czyta się, myślę, że czeka na znaki nowej linii (i może odczytywane co najmniej bajty) z teensy ++. Spróbuj ustawić port szeregowy w trybie surowym z stty: 'stty raw -F/dev/ttyACM0' – Evert

Odpowiedz

2

Sprawdź szybkość, z jaką wysyłasz dane. Stwierdziłem, że jeśli przesyłasz dane zbyt szybko do arduino, możesz wypełnić bufor arduino i wydaje się, że się blokował. Spróbuj dodać opóźnienie do danych wyjściowych lub upewnij się, że arduino wystarczająco szybko opróżnia bufor.

+0

Dzięki. Dam temu szansę. –