Пакеты поддержки модулей для ЗОСРВ «Нейтрино» > AArch64 (ARM64) > BSP для микропроцессоров NXP серии i.MX8M > Описание компонентов > Список компонентов, входящих в состав ППМ > dev-can-mx35



dev-can-mx35

Драйвер can для CAN контроллеров MX35

Синтаксис:

dev-can-mx35 [опции] ["can#"[,sysirq]] ["ringocan#"] &

Опции:

-a
Отключить автоматическое управление разгрузкой шины (по умолчанию включено).
-b строка
Предопределенный битрейт. Доступные значения:
-B список
Задать битрейт. Для опции -B переменная список определяет список целых чисел, разделенных запятой. Вводимые параметры:
presdiv
Предделитель битрейта.
propseg
Время распространения.
pseg1
Фаза буфера 1 (0-7).
pseg2
Фаза буфера 2 (1-7).
rjw
Ширина скачка при повторной синхронизации битрейта (0-3).
-c частота
Установить частоту CAN шины. Для установления собственной частоты должно быть введено целочисленное число частота (по умолчанию 66500000).
-D
Отключить инициализацию мини-драйвера, если он присутствует и запущен (по умолчанию включено).
-i список
Установить индетификатор сообщения для приема и передачи. Для опции -i переменная список определяет список целых чисел, разделенных запятой. Вводимые параметры:
midrx
Идентификатор отправляемого сообщения.
midtx
Идентификатор принимаемого сообщения.
-l число
Размер данных в байтах в сообщении CAN шины (0-8) (по умолчанию – 8).
-L
Динамическая конфигурация размера данных в сообщении CAN шины в зависимости от размера передаваемого пакета (по умолчанию отключена)
-m число
Установить начальное значение времени в локальной сети.
-M
Включить сохранение полной информации о полученном сообщении (например, идентификатор сообщения, временную метку и т.д.).
-n число
Размер буфера сообщений почтового ящика каждого устройства (по умолчанию – 100).
-p
Использовать внешний источник тактового сигнала (по умолчанию используется заданный опцией -b ).
-s
Включить тройную выборку битрейта (по умолчанию одиночная).
-S
Включить сортировку сообщений mdriver на основе MID (по умолчанию все сохраняется на первом устройстве).
-t
Включить режим обратной самотестировки (по умолчанию отключен).
-u число
Добавить номер число к префиксу имени устройства (/dev/can). Значение по умолчанию – 1; дополнительным устройствам присваиваются номера в порядке возрастания.
-v
Включить режим только прослушивания (по умолчанию отключен).
-w
Включить приоритет на передачу буфера с наименьшим идентификатором.
-x
Включить расширенный 29-разрядный идентификатор сообщения CAN (по умолчанию используется стандартный 11-разрядный MID).
-z
Включить функцию синхронизации по таймеру (по умолчанию отключен).
can#
Использовать can0 или can1, где # определяет номер CAN шины (0 или 1).
sysirq
Задает номер системного прерывания.
ringocan#
Использовать предопределенные настройки для can0 или can1 для платы ADSMX35, где # определяет номер CAN шины (0 или 1).

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64

Описание:


Caution: Для запуска этого драйвера необходимо войти в систему под учетной записью root.

Драйвер для шины can для контроллеров MX35.

После запуска драйвер dev-can-mx35 создает устройство (по умолчанию – /dev/can1).

Примеры:

Запуск драйвера dev-can-mx35 для CAN контроллера:

dev-can-mx35 can0 can1

Функции драйвера:

Основные функции

Функция Поддержка
Режим Autobus
+
Режим Loopback
+
Ручная настройка параметров битрейта (TSEG1, TSEG2, SJW, BRP)
+
Аппаратная фильтрация по ID с маской для каждого приёмного ящика
+
Поддержка расширенного формата кадра (EFF)
+
Расширенная операция записи через CAN_DEVCTL_WRITE_CANMSG_EXT
+
Расширенная операция чтения через CAN_DEVCTL_READ_CANMSG_EXT
+
Дублирование принятых сообщений между приёмными почтовыми ящиками при пересечении фильтров
-
Установка идентификатора передаваемого кадра для конкретного mailbox’а через CAN_DEVCTL_SET_MID
+
Чтение текущего идентификатора mailbox’а через CAN_DEVCTL_GET_MID
+

Расширенные функции

Функция Поддержка
CAN FD
-
Аппаратный RX/TX FIFO
-
Режим Listen-Only
+
Передача/приём через DMA
-
Режим тройной выборки битрейта
+
Автоматический расчёт параметров битрейта по заданной скорости
+
Несколько независимых аппаратных mailbox’ов для передачи
+
Несколько независимых аппаратных mailbox’ов для приёма
+
Сброс CAN-контроллера через CAN_DEVCTL_RESET
-
Чтение регистров ошибок через CAN_DEVCTL_ERROR
+
Установка маски фильтра для конкретного приёмного mailbox’а через CAN_DEVCTL_SET_MFILTER
+
Чтение маски фильтра конкретного приёмного mailbox’а через CAN_DEVCTL_GET_MFILTER
+
Настройка локального приоритета отправки кадров через CAN_DEVCTL_SET_PRIO
+
Чтение локального приоритета отправки кадров через CAN_DEVCTL_GET_PRIO
+
Сброс счётчика временных меток через CAN_DEVCTL_SET_TIMESTAMP
+
Чтение текущего значения счётчика временных меток через CAN_DEVCTL_GET_TIMESTAMP
+
Вывод отладочной информации через CAN_DEVCTL_DEBUG_INFO на стандартный поток вывода или в лог
+

Работа с драйвером

По умолчанию драйвер настроен следующим образом:

Device Mailbox MID ============================ RX0/TX32 0x100C0000 RX1/TX33 0x101C0000 RX2/TX34 0x102C0000 RX3/TX35 0x103C0000 RX4/TX36 0x104C0000 RX5/TX37 0x105C0000 RX6/TX38 0x106C0000 RX7/TX39 0x107C0000 RX8/TX40 0x108C0000 RX9/TX41 0x109C0000 RX10/TX42 0x10AC0000 RX11/TX43 0x10BC0000 RX12/TX44 0x10CC0000 RX13/TX45 0x10DC0000 RX14/TX46 0x10EC0000 RX15/TX47 0x10FC0000 RX16/TX48 0x110C0000 RX17/TX49 0x111C0000 RX18/TX50 0x112C0000 RX19/TX51 0x113C0000 RX20/TX52 0x114C0000 RX21/TX53 0x115C0000 RX22/TX54 0x116C0000 RX23/TX55 0x117C0000 RX24/TX56 0x118C0000 RX25/TX57 0x119C0000 RX26/TX58 0x11AC0000 RX27/TX59 0x11BC0000 RX28/TX60 0x11CC0000 RX29/TX61 0x11DC0000 RX30/TX62 0x11EC0000 RX31/TX63 0x11FC0000

Значение фильтра каждого rx-mailboxа -0xFFFFFFFF` (проверять каждый бит идентификатора).
Работа должна вестись между четкой парой rx-tx устройств.

Примеры обмена данными между контроллерами.

Пример 1:

# echo test > /dev/can0/tx32 # cat /dev/can1/rx0 test

Пример 2:

# echo test > /dev/can0/tx32 # canctl -u1,rx0 -r READ_CANMSG_EXT: mid = 0x100C0000 timestamp = 0x3C48 dat len = 8 dat = test

Пример 3:

# canctl -u0,tx32 -W '0x100C0000;65,62,99' # canctl -u1,rx0 -r READ_CANMSG_EXT: mid = 0x100C0000 timestamp = 0x501E dat len = 8 dat = A>c

Настройка фильтров. При изменении ID у mailbox`ов, необходимо поменять ID у tx и rx устройств:

# canctl -u1,rx0 -m 0x13FC0000 # canctl -u1,rx0 -F MFILTER = 0xFFFFFFFF # canctl -u1,rx0 -M GET_MID = 0x13FC0000 # canctl -u0,tx32 -m 0x13FC0000 # canctl -u0,tx32 -M GET_MID = 0x13FC0000 # echo msg > /dev/can0/tx32 # cat /dev/can1/rx0 msg # canctl -u0,tx32 -W '0x13FC0000;83,87,68' # canctl -u1,rx0 -r READ_CANMSG_EXT: mid = 0x13FC0000 timestamp = 0xF3CA dat len = 8 dat = SWD

При необходимости получать все кадры нужно настроить фильтры.
Пример приема всех кадров: canctl -u1,rx0 -f 0x0. В таком случае устройство /dev/can1/rx0 будет принимать кадры с любым идентификатором.

Пример 1:

# canctl -u1,rx0 -F MFILTER = 0xFFFFFFFF # canctl -u1,rx0 -f 0x0 CANIMR0 = 0x00 # canctl -u0,tx32 -M GET_MID = 0x100C0000 # echo kpda > /dev/can0/tx32 # cat /dev/can1/rx0 kpda # echo kpda > /dev/can0/tx32 # canctl -u1,rx0 -r READ_CANMSG_EXT: mid = 0x100C0000 timestamp = 0xCD42 dat len = 8 dat = kpda

Пример 2:

# echo kpdtx33 > /dev/can0/tx33 # cat /dev/can1/rx0 kpdtx33 # echo kpdtx33 > /dev/can0/tx33 # canctl -u1,rx0 -r READ_CANMSG_EXT: mid = 0x101C0000 timestamp = 0x8F51 dat len = 8 dat = kpdtx33

Пример 3:

# canctl -u0,tx32 -W '0x1FFC0000;87,66,96,44' # canctl -u1,rx0 -r READ_CANMSG_EXT: mid = 0x1FFC0000 timestamp = 0xD53A dat len = 8 dat = WB`,

Классификация:

BSP для систем на базе процессора NXP i.MX8M, драйверы




Предыдущий раздел: перейти