Forum: Mikrocontroller und Digitale Elektronik BeagleBoneBlack CAN HighSpeed-Problems


von Daniel B. (l31n)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
wie der Betreff schon sagt, geht es um die Nutzung des CAN Bus auf dem 
BeagleBone Black. Die Receiver-Schaltung befindet sich im Anhang. (Es 
wird der ISO1050 verwendet). An sich funktioniert der CAN Bus ganz gut. 
Probleme treten nur dann auf, wenn zwischen den einzelnen CAN Frames 
sehr geringe Verzögerungen eingehalten werden. Aktiviert wurde des CAN 
Device nach folgender Anleitung: 
http://www.embedded-things.com/bbb/enable-canbus-on-the-beaglebone-black/
Der Versuchsaufbau ist folgender:
Auf der einen Seite befindet sich ein AT90CAN128 Board, welches mit 
Hilfe der CAN-Library von Fabian Greif 
(http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek) 
ununterbrochen CAN Frames versendet. Es werden immer 8 Frames in den 
Write-Buffer geschrieben, 1ms gewartet und dann wieder 8 Frames...
Bitrates bei der dieses Problem festgestellt werden konnte, waren 
50000KBit/s oder mehr.
Auf der anderen Seite befindet sich das BeagleBone Black welches die 
Daten entgegennehmen soll. Auf dem Beaglebone läuft ein Ubuntu Precise 
12.04 (http://www.armhf.com/index.php/boards/beaglebone-black/#precise). 
Sowohl am AT90 als auch beim BBB befinden sich Abschlusswiderstände mit 
120 Ohm. Ausgelesen werden die Frames mit dem Tool 'candump' vom project 
can-utils 
(https://gitorious.org/linux-can/can-utils/source/9c82d462f4251bf0f8292a969d6063e782c42d43:)
Das eigentliche Problem ist nun, dass sich das BeagleBone Black nach 
einer gewissen Zeit einfach aufhängt und dann nurnoch die Möglichkeit 
bleibt, es per ResetButton wieder neu zu starten. Auffällig ist, dass es 
sich nur aufhängt, wenn auch mit einer Software wie candump die Daten 
gelesen werden. Reproduzierbar ist der Fehler nicht wirklich, da es 
vorkommen kann, dass es 15min zu keinem Zwischenfall kommt und ein 
anderes Mal bereits nach 5 Sekunden. Falls irgendjemand eine Vermutung 
hätte, woran ein solches Verhalten liegen könnte, oder eine Idee, wie 
man weiter vorgehen kann um den Fehler genauer einzugrenzen, wäre ich 
sehr dankbar :)

Viele Grüße
L31N

: Bearbeitet durch User
von Daniel B. (l31n)


Lesenswert?

Ich habe mein Problem inzwischen gelöst.
Es hat nicht am CAN oder an den Sockets gelegen,
sondern hatte den Ursprung darin, dass der Ausgabestream durch die 
Ausgabe aller empfangenen Frames schlichtweg überlastet wurde und sich 
das Linux deshalb hin und wieder einfach aufgehängt hat.

Vielen Dank dabei an dr_coolgood, aus dem Forum hier !

Grüße L31N

@moderator -- kann als gelöst markiert werden.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.