Linux 2.6 на imx: невозможно регистрировать отправленные кадры CAN с использованием Candump

У меня есть пользовательская сборка Linux 2.6, работающая на процессоре imx. Связь CAN с внешними узлами работает как чудо, но кадры, которые я отправляю на узлы из моего приложения, не печатаются при использовании в терминале "candump can0" (когда я запускаю то же самое приложение на своем хосте, используя ключ usb-CAN эта проблема не возникает).

Когда отправляются расширенные кадры CAN, они отображаются с использованием Candump.

Я понимаю, что может быть удобно, что отправляемые сообщения фильтруются, но я должен иметь возможность выбирать.

Любые подсказки приветствуются. Я думаю, что это может быть некоторая фильтрация в драйвере, которая вызывает это.

Драйвер FLexCAN имеет следующие конфигурационные файлы:

прервать br_propseg dump_rx_mb состояние обратной петли пробуждение bcc br_pseg1 dump_xmit_mb maxmb std_msg xmit_maxmb битрейт br_pseg2
ext_msg модальная подсистема boff_rec br_rjw fifo power tsyn br_clksrc драйвер прослушивает smp uevent br_presdiv
dump_reg local_priority srx_dis wak_src

2 ответа

Решение

Хорошо, я был в этом вопросе много раз, но сдался. Но знаете, я наткнулся на решение:

Файл настроек с именем srx_dis в папке FlexCAN контролирует это поведение. Итак, если вы хотите иметь возможность читать кадры CAN, отправленные на imx53_loco, сделайте следующее:

ifconfig can0 down
echo 0 > /sys/bus/platform/devices/FlexCAN.0/srx_dis
ifconfig can0 up

Причина, по которой я хочу сделать это для создания сервисного инструмента на том же устройстве, которое может регистрировать все кадры CAN.

Для пакета can-utils требуется SocketCAN, который был интегрирован в стандартное ядро ​​2.6.30.

Если вы используете SocketCAN, вы должны иметь возможность включить обратную связь, чтобы получать сообщения, которые передаются с вашего интерфейса (и они должны фактически передаваться по проводам, чтобы быть принятыми через обратную связь).

Из Баш:

ifconfig can0 down
ip link set can0 type can loopback on
ifconfig can0 up
candump can0|grep C0FFEE

и в другом терминале:

cansend can0 00C0FFEE#00112233445566
Другие вопросы по тегам