Jump to content

Can4linux

can4linux — это с открытым исходным кодом CAN Linux-Kernel драйвер устройства . В середине 1990-х годов началась разработка автономного чипа CAN-контроллера Philips 82C200 на плате ISA AT-CAN-MINI. В 1995 году была создана первая версия для использования CAN-шины с Linux для автоматизации лабораторий в рамках проекта Linux Lab Project в Берлинском университете .

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

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

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

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

[ редактировать ]

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

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

/* simple CAN application example 
 * 
 * used for the Wikipedia article on can4linux
 */
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

#include <can4linux.h>

int main(int argc,char **argv)
{
    int fd;
    canmsg_t frame;
    
    /* open(),
       bit rate comes from parameters at proc/sys/dev/Can */
    fd = open("/dev/can0", O_RDWR);

    frame.id      = 100;
    frame.length  = 2;
    frame.data[0] = 5;
    frame.data[1] = 0;
    write(fd, &frame, 1); /* ! count is number of frames, not byte */

    read(fd, &frame, 1);  /* ! count is number of frames, not byte */
    printf("received CAN Frame Id %ld, DLC=%d\n", frame.id, frame.length);
    return 0;
}

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

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2fb5b8ff695bad1824b42ec27309a234__1722710160
URL1:https://arc.ask3.ru/arc/aa/2f/34/2fb5b8ff695bad1824b42ec27309a234.html
Заголовок, (Title) документа по адресу, URL1:
Can4linux - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)