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