www.wikidata.de-de.nina.az
SocketCAN ist eine Sammlung von CAN Treibern und einer Netzwerkschicht beigestellt von der Konzernforschung der Volkswagen AG zum Linux Kernel als Open Source Sie ist auch bekannt als Low Level CAN Framework LLCF Typisches Schichtenmodell der CAN Kommunikation mit SocketCAN links oder konventionell rechts Vorherrschende CAN Treiber basieren auf dem Modell eines zeichenorientierten Gerates character device Typischerweise erlauben diese Treiber fur einen CAN Controller nur das Senden und Empfangen Die Implementierungen fur diese Gerateklasse erlauben meist nur einem einzigen Prozess auf das Gerat zuzugreifen d h fur alle anderen Prozesse ist diese serielle Schnittstelle blockiert Daruber hinaus ist die Schnittstelle des Treibers zur Anwendung im Detail unterschiedlich und nicht vereinheitlicht was die Portabilitat einer CAN Anwendung verringert Das SocketCAN Konzept hingegen nutzt das Modell der Netzwerkgerate Es gestattet mehreren Anwendungen gleichzeitig auf CAN Funktionen zuzugreifen Auch konnen einzelne Anwendungen mehrere CAN Netzwerke parallel nutzen Im Namen SocketCAN verbirgt sich bereits der wesentliche Aspekt von Sockets Das SocketCAN Konzept erweitert die klassische Berkeley Socket API eines Betriebssystems SocketCAN fugt dazu eine gemeinsame Protokoll Familie genannt PF CAN dem Netzwerk Stack18 hinzu welches neben anderen bekannten Protokoll Familien wie z B PF INET furs Internet unabhangig koexistiert Elementar besteht SocketCAN selbst aus Netzwerk Treibern fur CAN Controller und einer Infrastruktur fur neue CAN Protokolle Mit Raw Sockets kann direkt auf den CAN Bus zugegriffen werden Daneben gibt es Erweiterungen fur Transportprotokolle wie z B ISO TP ISO TP kann grossere Datentelegramme bis 4095 Bytes in eine Folge kleinerer CAN Frames segmentieren Durch eine Adressierung in Form von zwei CAN ID Paaren ist der Aufbau einer Punkt zu Punkt Verbindung moglich Zusatzlich gibt es in SocketCAN ein Broadcast Manager der es ermoglicht CAN Botschaften zu filtern und periodisch zu verschicken Die Unterstutzung fur SocketCAN ist zum jetzigen Zeitpunkt ausschliesslich fur Linux ab der Kernel Version 2 6 25 gegeben SocketCAN wird aktiv weiter entwickelt standig kommen weitere Netzwerk Treiber fur CAN Controller hinzu Inhaltsverzeichnis 1 Benutzung 2 Siehe auch 3 Weblinks 4 EinzelnachweiseBenutzung BearbeitenDie Anwendung richtet zunachst den Zugang der CAN Schnittstelle durch Initialisierung eines Sockets ahnlich einer TCP IP Kommunikation bindet diesen Socket bind an eine Schnittstelle oder alle Schnittstellen sofern von der Anwendung beabsichtigt Bei erfolgreicher Anbindung ist der Socket durch z B die Funktionen furs Lesen read und Schreiben write nutzbar Python unterstutzt SocketCan ab Version 3 3 1 Das nachfolgende einfache Beispiel sendet und liest ein Paket durch die Nutzung des RAW Socket include lt sys types h gt include lt sys socket h gt include lt sys ioctl h gt include lt net if h gt include lt linux can h gt include lt linux can raw h gt include lt string h gt At time of writing these constants are not defined in the headers ifndef PF CAN define PF CAN 29 endif ifndef AF CAN define AF CAN PF CAN endif Somewhere in your app Create the socket int skt socket PF CAN SOCK RAW CAN RAW Locate the interface you wish to use struct ifreq ifr strcpy ifr ifr name can0 ioctl skt SIOCGIFINDEX amp ifr ifr ifr ifindex gets filled with that device s index Select that CAN interface and bind the socket to it struct sockaddr can addr addr can family AF CAN addr can ifindex ifr ifr ifindex bind skt struct sockaddr amp addr sizeof addr Send a message to the CAN bus struct can frame frame frame can id 0x123 strcpy char frame data foo frame can dlc strlen const char frame data int bytes sent write skt amp frame sizeof frame Read a message back from the CAN bus int bytes read read skt amp frame sizeof frame Siehe auch Bearbeitencan4linuxWeblinks BearbeitenSocketCAN Linux CAN Projekt Website Werkzeuge fur SocketCAN CAN Userspace Tools Userspace Library fur SocketCAN Linux CAN mailing list Linux CAN mail archive gmane Linux CAN mail archive marc Aktuelle SocketCAN Dokumentation im Linux Kernel Quellcode englisch Ursprungliche LLCF SocketCAN Dokumentation 2006 PDF 283 kB Einzelnachweise Bearbeiten bugs python org Abgerufen von https de wikipedia org w index php title SocketCAN amp oldid 225602993