Can4linux - Can4linux

can4linux является Открытый исходный код МОЖЕТ Linux-ядро драйвер устройства.Разработка автономного чипа CAN-контроллера Philips 82C200 началась в середине 1990-х годов. ЭТО Плата AT-CAN-MINI. В 1995 году была создана первая версия для использования CAN-шины с Linux для автоматизации лабораторий в качестве проекта Проект Linux Lab в FU Berlin.

Растущее распространение технологии полевой шины CAN для автоматизации, особенно в встроенный устройств, и рост Linux в этой области приводит к растущему значению драйверов устройств как основы для протоколов CAN более высокого уровня, таких как CANopen, J1939 и DeviceNet.

Помимо NXP SJA1000 как преемника первого поддерживаемого CAN-контроллера Philips 82C200 и Intel 82527, разработка для мощных микроконтроллеры со встроенными контроллерами CAN, способными запускать операционную систему Linux, было усилено с 2005 года. В качестве примеров для этой разработки служат процессоры Freescale ColdFire [1] или модели ARM от ATMEL[2] и Freescale[3] но также автономный контроллер CAN MCP2515,[4] подключен через SPI Автобус.
Список поддерживаемых контроллеров CAN доступен на сайте проекта can4linux.[5]

В последней версии есть виртуальный Реализован режим CAN, который позволяет приложениям обмениваться данными без оборудования CAN, но только с использованием уровня программного обеспечения devicedriver. Этот режим уже включает поддержку нового формата кадра CAN под названием CAN FD. [6][7] что позволяет иметь длину кадра данных до 64 байтов.

использование

Прикладное программное обеспечение открывает дескриптор устройства CAN и возвращает дескриптор файла. Используя этот файловый дескриптор, стандартные функции операционной системы, такие как читать() и записывать() используются для обмена кадрами CAN с другими узлами CAN на шине CAN.

Следующий код представляет собой пример, который помещает кадр CAN на шину, а затем ожидает кадра CAN, переданного другим узлом CAN. Другие примеры доступны на сайте проекта can4linux.[8]

/ * простой пример приложения CAN  *  * используется для статьи в Википедии о can4linux */#включают <stdio.h>#включают <fcntl.h>#включают <unistd.h>#включают <can4linux.h>int главный(int argc,char **argv){    int fd;    canmsg_t Рамка;        /* открыто(),       скорость передачи данных определяется параметрами в proc / sys / dev / Can * /    fd = открыто("/ dev / can0", O_RDWR);    Рамка.я бы      = 100;    Рамка.длина  = 2;    Рамка.данные[0] = 5;    Рамка.данные[1] = 0;    записывать(fd, &Рамка, 1); / *! count - это количество кадров, а не байт * /    читать(fd, &Рамка, 1);  / *! count - это количество кадров, а не байт * /    printf("получен идентификатор кадра CAN% ld, DLC =% d п", Рамка.я бы, Рамка.длина);    возвращаться 0;}

can4linux может быть скомпилирован таким образом, чтобы позволить нескольким процессам иметь доступ к одному и тому же оборудованию CAN-контроллера для чтения и записи кадров на шине CAN. Помимо реального приложения, к шине могут получить доступ другие процессы, такие как регистраторы данных или другие процессы диагностики.

Рекомендации

внешняя ссылка