2012-11-01 33 views
5

Lesen Ausgabe von cat /dev/ttyACM0 Ergebnisse Beagle Board Einfrieren. Es löst sich auf, wenn ich die USB-Serie abziehe.Lesen Ausgabe von/dev/ttyACM0 Ergebnisse Beagle Board Einfrieren (Embedded Zeug)

Also im Wesentlichen mein Setup ist ein Beagle-Board über einen USB-Anschluss an meinen Laptop, der mit ihm über COM6 kommuniziert. Wir haben es auch über Web-Sharing mit dem Internet verbunden. Ich habe auch einen anderen USB von einem Arduino Teensy ++ Controller angeschlossen. Dieser Controller sendet Daten über USB Serial an die Beagle-Platine. Der Zweck dieser Übung ist es, die Daten aus der USB-Serie zu lesen.

Der Lesevorgang, den ich verwende, ist cat /dev/ttyACM0. Dies führt zum Ausdruck der ersten 2 Datenzeilen, dann friert das gesamte Beagle-Board ein. Wenn Sie das Teensy ++ trennen, wird es wie 10-20 Zeilen gedruckt (unter der Annahme, was auch immer der Puffer enthält). Nicht sicher, warum das passiert.

Kann jemand helfen? Danke

+0

Verwendet es einige zusätzliche Steuerleitungen wie CTS? Vielleicht wartet das Beagleboard darauf. – Evert

+0

Nicht sicher. Ich werde das überprüfen. Aber sobald das Beagle - Board abgeschlossen ist, ziehe ich den USB - Stecker aus und spucke aus, was auf dem Buffer ist (im wesentlichen alles, was seit dem Lockup gesendet wurde. Manchmal bekomme ich den folgenden Fehler, wenn ich den USB entferne: [1757.210482] cdc_acm 1 -1: 1.1: acm_start_wb - usb_submit_urb (write bulk) fehlgeschlagen: -19 " –

+0

Überprüfen Sie auch, ob das teensy ++ die seriellen Daten erfolgreich sendet, indem Sie es mit einer Windows-basierten Standardanwendung zum Lesen von seriellen Daten, zum Beispiel Schreien, überprüfen Terminal oder terterm. Außerdem denke ich, dass es etwas mit der Art und Weise zu tun hat, wie Ihr Embedded-Linux das serielle USB-Gerät handhabt. Ich weiß nicht, was es ist. EDIT: Ich denke, es hat etwas mit der seriellen Schnittstelle zu tun gelesen wird. Ich denke, es wartet auf Newline-Zeichen (und vielleicht minimale Byte gelesen) von teensy ++. Versuchen Sie, die serielle Schnittstelle mit stty in den Raw-Modus zu setzen: 'stty raw -F/dev/ttyACM0' – Evert

Antwort

2

Überprüfen Sie die Geschwindigkeit, mit der Sie Daten senden, habe ich festgestellt, wenn Sie Daten zu schnell an Arduino senden können Sie den Arduino-Puffer füllen und es scheint zu sperren. Versuchen Sie, den Ausgabedaten eine Verzögerung hinzuzufügen, oder stellen Sie sicher, dass der Arduino den Puffer schnell genug entleert.

+0

Danke. Ich werde es versuchen. –