CAN2Web Advanced
CAN-Ethernet-Gateway Linux Kernel Treiber
7 Linux Kernel Treiber
7.1 Allgemein
Der bereitgestellte Linux-Treiber für den CAN-Bus bietet die Möglichkeit eigene Applika-
tionen in C/C++ zu erstellen.
Die Hardware unterstützt die beiden Varianten CAN 2.0A (11Bit Identifier) und CAN 2.0B
(29 Bit Identifier), wobei die Daten in der Struktur TCANMsg gekapselt werden.
Die implementierten Treiberroutinen beinhalten CAN-Message-Puffer für Sende- und
Empfangsbetrieb. Eingehende Meldungen werden durch den Treiber Interrupt-gesteuert
in den Empfangspuffer eingelesen. Im Empfangspuffer können max. 256 Meldungen
zwischengespeichert werden. Der Puffer muss durch die Anwendung daher rechtzeitig
ausgelesen werden, damit kein Datenverlust auftritt.
Der Sendepuffer kann ebenfalls 256 CAN-Meldungen aufnehmen. Das Versenden der
Meldungen erfolgt ebenfalls Interrupt-gesteuert durch den Treiber.
Tabelle 22 :Header-Dateien
Header-Datei
can_driver.h
can_driver.ko
7.2 Verwendung des CAN-Treibers
Anhand der nachfolgenden Quelltexte wird exemplarisch die Verwendung des Treiber
erklärt. Weitere Erläuterungen zur Verwendung der Routinen befinden sich auch im
Quelltext von catest.c, mit dem das Beispielprogramms catest.exe erzeugt werden
kann.
Der Zugriff auf den Treiber erfolgt dabei prinzipiell analog zum Zugriff auf Dateien. Dazu
muss zunächst eine „Datei" geöffnet werden, um danach Lese- und Schreibvorgänge
durchführen zu können. Im Gegensatz zu Dateien gibt es zusätzlich Kontroll- und Konfi-
gurationsbefehle. Wird die „Datei" nicht mehr benötigt, sollte sie geschlossen werden.
7.2.1 Öffen und Schließen (open, close)
Die Befehle open bzw. close öffnen eine Verbindung zum CAN-Treiber bzw. schließen
diese wieder. open gibt einen gültigen file descriptor zurück, wenn der Vorgang erfolg-
reich war, anderenfalls sollte überprüft werden, ob der CAN-Treiber läuft.
Beispiel 9 : Öffnen/Schliessen einer Verbindung zum CAN-Treiber
int fd_can;
....
fd_can = open("/dev/can", O_RDWR);
synertronixx, 29. Juni 2010
Beschreibung
Header Datei zur Erstellung eigener Applikationen
Kernel Treiber für den CAN-Bus
// file descriptor
// open CAN device for read/write
39