<<< Previous topic - Next topic >>> |
|
Author |
Message |
hne
Joined: 11 Jul 2008 Posts: 210 Location: Hannover
|
Posted: 03.07.2009, 15:36 Post subject: can4linux im OTP/57V und EUI/57V |
|
|
can4linux im OTP/57V und EUI/57V mit eSOM/2586
Das Projekt can4linux unterstützt den CAN-Controller im Produkt OTP/57V und EUI/57V als Linux-Modul. Installiert wird dieser durch das Debian-Paket "can4linux-3.4.6-6_esom2586.deb"
Bei Auslieferung sind einige Beispiele (can_send, transmit, receive, acceptance) im Verzeichnis /usr/local/bin/can installiert und der CAN-Treiber is als Modul bereits geladen. So daß man die Beispile sofort benutzen kann. "transmit" und "receive" sind selbst erklärend und für "can_send" benutzen Sie bitte "can_send --help", um eine Hilfe zu erhalten. Ein Überblick über die Beispiele steht in der Datei "/usr/share/doc/can4linux_examples/README", weitere Dokumentation zum CAN-Treiber des eSOM/2586 stehen in der Datei "/usr/share/doc/can4linux/README.esom2586".
Die Baudrate können Sie einfach setzen, indem Sie diese in das Proc-Dateisystem schreiben.
z.B.:
Code: | export PATH=$PATH:/usr/local/bin/can
echo "20" >/proc/sys/Can/Baud
transmit
receive
can_send --help
|
Auf den Systemen ist ein CAN-Sniffer installiert, der die Daten des CAN-Bus per Java grafisch anzeigt. Diesen starten Sie über die grafische Oberfläche. _________________ Henry Nestler |
|
Back to top |
|
|
hne
Joined: 11 Jul 2008 Posts: 210 Location: Hannover
|
Posted: 03.07.2009, 15:40 Post subject: can4linux-examples für eSOM/2586 selbst compiliert |
|
|
can4linux-examples für eSOM/2586 selbst compiliert
Wenn Sie die C-Beispiele selbst compilieren, müßten Sie eine Kleinigkeit gegenüber Default-Installation beachten. Mit dieser Kommandozeile wurden die Beispiele compiliert:
Code: | make CC=gcc CAN4LINUX_BYTE_COUNT=1 -C can4linux-examples |
Die Besonderheit besteht in der Option "CAN4LINUX_BYTE_COUNT=1". Der CAN-Treiber wurde zur Benutzung unter Java angepasst. Damit wird beim "read" bzw. "write" die echte Anzahl Bytes des Buffers übergeben. Das entspricht den offiziellen Kernel-Konventionen bei der Übergabe von Daten für read bzw. write und damit auch der Arbeitsweise von Dateioperationen in den Hochsprachen wie Java.
Der Unterschied besteht im letzten Parameter des read bzw. write.
Code: | Java: write(fd, buffer, AnzahlMessages*sizeof(struc canmsg_t))
vorher: write(fd, buffer, AnzahlMessages) |
Die ursprüngliche API des CAN4Linux sah vor, die Anzahl Messages beim "read" zu benutzen. Sie können das wieder so einstellen, indem Sie die Option "rwsize=1" beim Laden des Moduls entfernen.
Dazu bearbeiten Sie bitte die Datei /etc/modules und entfernen die Option "rwsize=1" in der Zeile "can rwsize=1", also nur einfach "can" stehen lassen.
Nach dem Neustart "init 6" werden Ihre selbst compilierten Beispiele mit der alten API sofort funktionieren.
Unsere voinstallierten Beispiele arbeiten dann natürlich nicht mehr, und das Java-Programm (CAN-Sniffer) auch nicht. _________________ Henry Nestler |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|