KasperskyOS Community Edition 1.3

Пример can_loopback

Пример использования драйвера CAN.

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

Для настройки порта используется CAN-интерфейс с именем can0, указатель на имя порта присваивается переменной CanPortName. Также драйвер CAN поддерживает имена can1 и can2, которые можно использовать в тестовом приложении.

Драйвер CAN поддерживает несколько режимов работы, и может работать как классический CAN, а также как CANFD. За режим CANFD отвечает флаг CAN_FLAGS_FD, который передается в функцию открытия CAN-порта тестового примера. Если флаг CAN_FLAGS_FD отсутствует в параметрах открытия порта, то будет использоваться классический CAN с соответствующими ограничениями по скорости.

В примере открывается порт и устанавливается скорость передачи 800 КБ/c. Для этого используется константа CAN_BR_800KBS.

При использовании флага CAN_FLAGS_FD, поддерживаются следующие константы скорости передачи данных:

  • CANFD_BR_500KBS_D_2MBS
  • CANFD_BR_500KBS_D_2_5MBS
  • CANFD_BR_1MBS_D_2MBS
  • CAN_BR_1MBS
  • CAN_BR_800KBS
  • CAN_BR_500KBS
  • CAN_BR_250KBS
  • CAN_BR_125KBS
  • CAN_BR_62_5KBS

Классический CAN не может использовать скорости выше 1 МБ/с, поэтому при отсутствии флага CAN_FLAGS_FD необходимо использовать только следующие константы для настройки скорости передачи:

  • CAN_BR_1MBS
  • CAN_BR_800KBS
  • CAN_BR_500KBS
  • CAN_BR_250KBS
  • CAN_BR_125KBS
  • CAN_BR_62_5KBS

Тестовый пакет CAN содержит идентификатор, длину поля данных и сами данные. Описание полей содержатся в структуре CanFrame. Для классического CAN, длина поля данных ограничена 8 байтами, для CANFD – 64 байтами.

Файлы примера

Код примера и скрипты для сборки находятся по следующему пути:

/opt/KasperskyOS-Community-Edition-<version>/examples/can_loopback

Сборка и запуск примера

Этот пример предназначен только для запуска на Radxa ROCK 3A.

При сборке и запуске этого примера на QEMU возникает ошибка. Это ожидаемое поведение, поскольку драйвера CAN для QEMU нет.

См. "Сборка и запуск примеров".