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. Помимо реального приложения, к шине могут получить доступ другие процессы, такие как регистраторы данных или другие процессы диагностики.
Рекомендации
- ^ Freescale ColdFire
- ^ Банкомат SAM9263
- ^ Freescale i.MX35 Familie[постоянная мертвая ссылка ]
- ^ Автономный CAN MCP2515
- ^ сайт проекта can4linux
- ^ CAN FD Спецификация В архиве 2013-08-22 в Wayback Machine (PDF; 314 kB)
- ^ Документ конференции CAN FD В архиве 2012-11-13 в Wayback Machine (PDF; 624 kB)
- ^ В сети can4linux-примеры В архиве 2018-06-28 в Wayback Machine