Herunterladen Inhalt Inhalt Diese Seite drucken

Linux Kernel Treiber; Allgemein; Verwendung Des Can-Treibers; Öffen Und Schließen (Open, Close) - synertronixx CAN2Web Advanced Handbuch

Inhaltsverzeichnis

Werbung

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

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis