Studienarbeit
Entwicklung eines CAN-Treibers für Linux
Completion
2006/04
Students
Maik Hentsche
student
Advisers
R. Baumgartl
Description (German)
Die SYS TEC electronic GmbH ist seit vielen Jahren ein führender Anbieter von
CANopen-Produkten im Hard- und Softwarebereich. Die Kernkomponente hierbei ist der im
eigenen Haus implementierte CANopen-Protokollstack. Dieser Stack setzt auf einem
hardwareunabhängigen Treiberinterface auf und arbeitet so mit einer Vielzahl verschiedener
CAN-Controller zusammen, für die ein entsprechender Hardware-Treiber existiert.
Voraussetzung für den Einsatz des CANopen-Protokollstacks unter Linux ist ein geeigneter
Kernel-Treiber. Der zu entwickelnde Linux-Treiber soll auf die bereits verfügbaren
Hardware-Treiber für die verschiedensten CAN-Controller aufsetzen und diese im
Kernel-Space um das für Linux-Treiber typische IoCtrl-Interface erweitern. Komplementär
dazu ist im User-Space ein Wrapper notwendig, der das vom CANopen-Protokollstack genutzte
hardwareunabhängige Treiberinterface auf IoCtrl-Aufrufe abbildet.
Der CAN-Treiber für Linux soll folgende Funktionalitäten unterstützen:
1. Einbindung des CAN-Treibers als Character-Device unter /dev/can0, /dev/can1 usw.
2. Zugriff auf den Treiber über File-Funktionen, wobei eine Treiberinstanz über ein
entsprechendes Filehandle repräsentiert wird
3. Treiberintern ist der für CANopen notwendige Instanzpointer aus dem File-Handle
aufzulösen
4. Implementierung von blockierenden und nicht-blockierend Read-/Write-Operationen auf
Basis des beim Öffnen des Treibers übergebenen Filehandles
Der CAN-Treiber soll vorrangig auf Embedded Systemen unter µCLinux zum Einsatz kommen.
Voraussetzungen zur Bearbeitung des Themas sind:
* Programmierkenntnisse in C sowie im Umgang mit der GNU-Toolchain
* Kenntnisse in der Linux-Programmierung sowie Erfahrungen im Umgang mit Embedded Systemen
* Kenntnisse in der Linux-Treiberprogrammierung sowie Erfahrungen mit CANopen sind
wünschenswert

