Can4linux - Can4linux
can4linux je Otevřený zdroj UMĚT Linuxové jádro ovladač zařízení.Vývoj byl zahájen v polovině 90. let pro samostatný čip řadiče CAN Philips 82C200 CAN na JE Board AT-CAN-MINI. V roce 1995 byla vytvořena první verze pro použití sběrnice CAN s Linuxem pro laboratorní automatizaci jako projekt Laboratorní projekt Linux na FU Berlín.
Rostoucí šíření technologie CAN polní sběrnice pro automatizaci, zejména v vložený zařízení a růst Linuxu v této oblasti vede k rostoucímu významu ovladačů zařízení jako základny pro protokoly CAN vyšší vrstvy CANopen, J1939 a DeviceNet.
Kromě NXP SJA1000 jako nástupce prvního podporovaného řadiče CAN Philips 82C200 a Intel 82527, vývoj pro výkonné mikrokontroléry s integrovanými řadiči CAN, které jsou schopné provozovat operační systém Linux, jsou od roku 2005 intenzivnější. Jako příklady tohoto vývoje slouží procesory ColdFire společnosti Freescale [1] nebo ARM modely od ATMEL[2] a Freescale[3] ale také samostatný řadič CAN MCP2515,[4] připojeno přes SPI Autobus.
Seznam podporovaných řadičů CAN je k dispozici na webu projektu can4linux.[5]
V nejnovější verzi je a virtuální Je implementován režim CAN, který umožňuje aplikacím komunikovat bez hardwaru CAN, ale pouze pomocí softwarové vrstvy zařízení devicedriver. Tento režim již zahrnuje podporu pro nový formát rámce CAN s názvem CAN FD [6][7] což umožňuje délku datového rámce až 64 bajtů.
Používání
Aplikační software otevře deskriptor zařízení CAN a získá zpět deskriptor souboru. Pomocí tohoto deskriptoru souboru fungují standardní operační systémy jako číst()
a psát si()
se používají k výměně rámců CAN s jinými uzly CAN na sběrnici CAN.
Následující kód je příkladem, který umístí rámec CAN na sběrnici a poté čeká na rámec CAN přenášený jiným uzlem CAN. Další příklady jsou k dispozici na stránkách projektu can4linux.[8]
/ * jednoduchý příklad aplikace CAN * * použito pro článek na Wikipedii o can4linux */#zahrnout <stdio.h>#zahrnout <fcntl.h>#zahrnout <unistd.h>#zahrnout <can4linux.h>int hlavní(int argc,char **argv){ int fd; canmsg_t rám; /* otevřeno(), přenosová rychlost pochází z parametrů na proc / sys / dev / Can * / fd = otevřeno(„/ dev / can0“, O_RDWR); rám.id = 100; rám.délka = 2; rám.data[0] = 5; rám.data[1] = 0; psát si(fd, &rám, 1); / *! count je počet snímků, ne bajt * / číst(fd, &rám, 1); / *! count je počet snímků, ne bajt * / printf("přijato ID rámce CAN% ld, DLC =% d n", rám.id, rám.délka); vrátit se 0;}
can4linux lze kompilovat způsobem, který umožňuje více než jednomu procesu přístup ke stejnému hardwaru řadiče CAN pro čtení a zápis rámců na sběrnici CAN. Kromě skutečné aplikace mohou na sběrnici přistupovat další procesy, jako jsou datové záznamníky nebo jiné diagnostické procesy.
Reference
- ^ Freescale ColdFire
- ^ ATMEL SAM9263
- ^ Freescale i.MX35 Familie[trvalý mrtvý odkaz ]
- ^ Samostatně CAN MCP2515
- ^ web projektu can4linux
- ^ Specifikace CAN FD Archivováno 2013-08-22 na Wayback Machine (PDF; 314 kB)
- ^ Konferenční příspěvek CAN FD Archivováno 2012-11-13 na Wayback Machine (PDF; 624 kB)
- ^ Online can4linux-examples Archivováno 2018-06-28 na Wayback Machine