[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Kategorie
K Komasetzung
 
(25 dazwischenliegende Versionen von 16 Benutzern werden nicht angezeigt)
Zeile 1:
'''can4linux''' ist ein [[openOpen sourceSource|Open-Source]] -[[Controller Area Network|CAN]] -Gerätetreiber für den [[Linux (Kernel)|Linux-Kernel]].
{{QS-Antrag|20. September 2010|2=[[WP:Wikifizieren]]: [[Wikipedia:Kategorien|Kategorien]] fehlen -- [[Benutzer:MerlBot/AutoQS|MerlBot]] 02:07, 20. Sep. 2010 (CEST)}}
Die Entwicklung begann Mitte der 1990er Jahre für den CAN-Controller-Baustein Philips 82C200 auf einem [[Industry Standard Architecture|ISA]] Board AT-CAN-MINI. Die erste Version entstand um 1995 im Rahmen des '''Linux Lab project''' an der [[Freie Universität Berlin|FU Berlin]], um unter Linux den CAN-Bus in der Laborautomatisierung zu nutzen.
{{Überarbeiten|[[Diskussion:Can4linux#Überarbeiten|Diskussionsseite]]}}
{{Portal|Freie Software}}
 
Durch die zunehmende Verbreitung von CAN in der Automatisierungstechnik insbesondere auch im embedded Bereich, in dem seit der Jahrtausendwende auch verstärkt Linux eingesetzt wird, kommt Gerätetreibern als Basis für höhere CAN basierende Protokolle wie [[CANopen]], [[J1939]] und [[DeviceNet]]. eine gestiegene Bedeutung zu.
'''can4linux''' ist ein [[open source]] [[Controller Area Network|CAN]] Gerätetreiber für den [[Linux (Kernel)|Linux-Kernel]].
Die Entwicklung begann Mitte der 1990er Jahre für den CAN Controller Baustein Philips 82C200 auf einem [[Industry_Standard_Architecture|ISA]] Board AT-CAN-MINI.
Die erste Version entstand um 1995 im Rahmen des
'''Linux Lab project'''
an der FU-Berlin,
um unter Linux den CAN Bus in der Laborautomatisierung zu nutzen.
 
Neben dem NXP SJA1000 als Nachfolger des CAN Controllers Philips 82C200 und dem Intel 82527 wurden ab 2005 verstärkt Anpassungen für sogenannte integrierte CAN Controller in leistungsstarken [[Mikrocontroller]]n, für die Linux-Portierungen existieren, erstellt. Als Beispiele sollen hier die Freescale-ColdFire-Prozessoren oder ARM-Derivate von ATMEL<ref>[http://www.atmel.com/dyn/products/product_card.asp?part_id=4056 ATMEL SAM9263]</ref> und Freescale<ref>[http://www.freescale.com/webapp/sps/site/overview.jsp?code=IMX35_FAMILY Freescale i.MX35 Familie]</ref>
Durch die zunehmende Verbreitung von CAN in der Automatisierungstechnik insbesondere auch im embedded Bereich, in dem seit der Jahrtausendwende auch verstärkt Linux eingesetzt wird, kommt Gerätetreibern als Basis für höhere CAN basierende Protokolle wie
aber auch der Stand-Alone CAN Controller MCP2515,<ref>[http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010406 Stand Alone CAN MCP2515]</ref> angeschlossen über den [[Serial Peripheral Interface|SPI]] Bus, dienen.
[[CANopen]],
[[J1939]]
und
[[DeviceNet]].
eine gestiegene Bedeutung zu.
 
*Eine Liste befindet sich auf der can4linux Projektseite.<ref>[http://sourceforge.net/projects/can4linux/ can4linux Projekt SeiteProjektseite]</ref>
Neben dem NXP SJA1000 als Nachfolger des CAN Controllers Philips 82C200 und dem Intel 82527 wurden ab 2005 verstärkt Anpassungen für
so genannte integrierte CAN Controller in leistungsstarken [[Mikrocontroller]]n, für die Linux Portierungen existieren, erstellt.
Als Beispiele sollen hier die
Freescale ColdFire Prozessoren
<ref>
[http://en.wikipedia.org/wiki/Freescale_ColdFire Freescale ColdFire]
</ref>
oder ARM Derivate von ATMEL und Freescale
<ref>
[http://www.freescale.com/webapp/sps/site/overview.jsp?code=IMX35_FAMILY Freescale i.MX35 Familie]
</ref>
genannt werden.
 
Die neueste Version unterstützt eine ''virtuelle'' CAN Betriebsart, in welcher sich Anwendungen ohne spezielle CAN Hardware nur über den Treiber CAN Nachrichten austauschen können.
Eine Liste befindet sich auf der can4linux Projekt Seite
In dieser Betriebsart ist auch schon das Frame-Format für CAN FD<ref>[http://www.can-cia.org/services/conferences/icc/ CAN FD Spezifikation] (PDF; 624&nbsp;kB)</ref> implementiert, welches Datenlängen bis zu 64 Byte erlaubt.
<ref>
[http://sourceforge.net/projects/can4linux/ can4linux Projekt Seite]
</ref>.
 
== Benutzung ==
Die Anwendungssoftware öffnet einen CAN Device Descriptor und erhält einen File Descriptor. Über diesen werden die CAN Frames über die Standard Betriebssystem Funktionen <code>read()</code> und <code>write()</code> mit anderen Teilnehmern am CAN -Bus ausgetauscht.
 
Der folgende Code ist ein Beispiel, welches einen Frame sendet und anschließend auf einen Frame von einem anderen Bus -Teilnehmer wartet. Weitere Beispiele befinden sich auf der ProjektProjektseite.<ref>Online [https://gitlab.com/hjoertel/can4linux/tree/master/can4linux-examples Seitecan4linux-examples]</ref>
Die Anwendungssoftware öffnet einen CAN Device Descriptor und erhält einen File Descriptor. Über diesen werden die CAN Frames über die Standard Betriebssystem Funktionen <code>read()</code> und <code>write()</code> mit anderen Teilnehmern am CAN Bus ausgetauscht.
 
<sourcesyntaxhighlight lang="c">
Der folgende Code ist ein Beispiel, welches einen Frame sendet und anschließend auf einen Frame von einem anderen Bus Teilnehmer wartet. Weitere Beispiele befinden sich auf der Projekt Seite
/* simple CAN application example
<ref>
*
Online
[http://can4linux.svn.sourceforge.net/viewvc/can4linux/trunk/can4linux-examples/ can4linux-examples]
</ref>.
 
<source lang="c">
/* simple CAN application example
*
* used for the Wikipedia article on can4linux
*/
Zeile 58 ⟶ 30:
int main(int argc,char **argv)
{
int fd;
canmsg_t frame;
 
fd = open("/dev/can0", O_RDONLYO_RDWR);
 
frame.id = 100;
Zeile 69 ⟶ 41:
write(fd, &frame, 1); /* ! count enthält Anzahl Frames, nicht Byte */
 
read(fd, &frame, 1); /* ! count enthält Anzahl Frames, nicht Byte */
printf("received CAN Frame Id %ld, DLC=%d\n", frame.id, frame.length);
return 0;
}
</syntaxhighlight>
</source>
 
can4linux kann so übersetzt werden, dass verschiedenenverschiedene Prozesse auf den gleichen CAN Controller Lesendlesend und Schreibendschreibend zugreifen können. Auf diese Weise kann z.&nbsp;B. neben der eigentlichen Anwendung ein unabhängiger Diagnoseprozess den Bus beobachten.
Auf diese Weise kann z.B. neben der eigentlichen Anwendung ein unabhängiger Diagnoseprozess den Bus beobachten.
 
==References Siehe auch ==
* [[SocketCAN]]
 
== Weblinks ==
<references/>
* [https://gitlab.com/hjoertel/can4linux can4linux Projektseite]
 
== Einzelnachweise ==
==Weblinks==
<references />
* [http://sourceforge.net/projects/can4linux/ can4linux Projekt Seite]
 
[[CategoryKategorie:Linux drivers-Software]]
[[Kategorie:Treiber (Software)|!]]
[[Kategorie:Betriebssystemkomponente]]