Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Отладочные платы » SK-iMX53
CAN. Прием отправленных пакетов на том же интерфейсе.
andysm
Добавлено 13.11.2013 17:43
0
Сообщение: 1
andysm
0

Пункты: 188
Регистрация: 07.07.2011
В общем, видимо проблема в некотором непонимании CAN...
Отправляю пакет и тут же получае его обратно на том же интерфейсе. Все кто висит на шине его тоже получают.

Сокет открываю вот так...
s[i] = socket(PF_CAN, SOCK_RAW, CAN_RAW);
Отправляю и принимаю через select.
select ( maxDescriptor + 1, &RxSockSet, &TxSockSet, NULL, &selTimeout )

Манипуляции с CAN_RAW_LOOPBACK и CAN_RAW_RECV_OWN_MSGS как то не помогли...

Вопрос.
1. Это нормально что я получаю этот пакет?
2. Как сделать так что бы я его не получал (не фильтрами).
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 13.11.2013 23:26 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
вероятно у вас что-то самописное - поищите исходники can-utils.. если у вас buildroot, то они должны быть в его пакетах в исходных кодах..
думаю, что там можно посмотреть - как формируются пакеты и как работать с can сетью..

я совсем чутка коснулся этого типа интерфейса - проверка между интерфейсами на одной плате стандартными утилитами:
Код
root@dm8148:~/src/can-utils-2f35ace# ./cangen can1
^Croot@dm8148:~/src/can-utils-2f35ace# ./cansend can1 5A1#11.2233.44556677.88
root@dm8148:~/src/can-utils-2f35ace# ./cansend can1 5A1#11.2233.44556677.88

в другом созерцаю
Код
root@dm8148:~/src/can-utils-2f35ace# ./candump can0
can0 113 [2] 68 76
can0 30C [3] 63 C3 62
can0 B0 [4] E0 31 9D 64
can0 1FC [5] 16 24 ED 69 D2
can0 55 [8] 76 7C A3 58 19 0E 38 63
can0 54A [5] 2F 5A 77 07 7C
can0 48 [8] 36 95 17 3D B7 EE A5 5F
can0 6D6 [4] 14 09 F4 7B
can0 376 [8] 8F 83 D8 32 82 EE 70 31
can0 5B0 [2] 7F 6E
can0 7D6 [8] 4B 4F 31 22 D2 19 68 4C
can0 315 [1] A5
can0 6AC [8] 83 21 3F 06 F6 23 9E 0B
can0 361 [3] 72 42 94
can0 2AF [8] 60 B2 61 75 86 01 31 0C
can0 5A1 [8] 11 22 33 44 55 66 77 88
can0 5A1 [8] 11 22 33 44 55 66 77 88

в обратном направление
Код
root@dm8148:~/src/can-utils-2f35ace# ./cansend can0 5A1#11.2233.44556677.99

Код
root@dm8148:~/src/can-utils-2f35ace# ./candump can1
can1 5A1 [8] 11 22 33 44 55 66 77 99

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.11.2013 08:27 Редактировалось 14.11.2013 08:44 Сообщение: 3
sasamy
4.70

Пункты: 77331
Регистрация: 14.08.2009
https://www.kernel.org/doc/Documentation/networking/can.txt

Цитата

The loopback functionality is enabled by default to reflect standard
networking behaviour for CAN applications. Due to some requests from
the RT-SocketCAN group the loopback optionally may be disabled for each
separate socket. See sockopts from the CAN RAW sockets in chapter 4.1.


Цитата

Манипуляции с CAN_RAW_LOOPBACK и CAN_RAW_RECV_OWN_MSGS как то не помогли..


Надо посмотреть доки - 2.6.35 староватое ядро, может там и не работает. Если не нужна мультимедиа ( GPU и VPU) лучше взять ванильное ядро - в фрискейловском ядре драйвер flexcan написан отвратно, я делал бэкпорт драйвера из ванильного ядра 2.6.38 - этот драйвер интегрирован в этом ядре
http://starterkit-org.googlecode.com/files/linux-2.6.35.3-11.09.01-sk.tar.bz2
но с CAN плотно не работал - не могу сказать насколько там все хорошо
Спуститься к концу Подняться к началу
Персональная информация
andysm
Добавлено 14.11.2013 10:01 Сообщение: 4
andysm
0

Пункты: 188
Регистрация: 07.07.2011
Ядро у меня от starterkit для i.mx53 OEM...
canutils я естественно изучил.

ядро у меня
# uname -a
Linux buildroot 2.6.35.3-1129-g691c08a #452 PREEMPT Wed Oct 23 16:25:31 MSK 2013 armv7l GNU/Linux


to Jury093: Если не затруднит запустите candump на передающем интерфейсе (одновременно с передачей. can1 в первом случае). Возможно результат вас удивит... =)
Заодно и повторяемость посмотрим.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 15.11.2013 00:57 Сообщение: 5
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
to Jury093: Если не затруднит запустите candump на передающем интерфейсе (одновременно с передачей. can1 в первом случае). Возможно результат вас удивит... =)
Заодно и повторяемость посмотрим.

чего то никто никуда не трансферит..
чешу в затылке - а как оно тогда взлетело..
ни dm8148, ни imx535 даже "му" не сказали в интерфейсы..
не раньше выходных сделаю еще подход (если хардвара не навалится)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Arm-a-bot
Добавлено 15.11.2013 22:43 Сообщение: 6
Arm-a-bot
0

Пункты: 1540
Регистрация: 16.01.2012
Цитата
Отправляю пакет и тут же получае его обратно на том же интерфейсе.

Это нормально для Socket Can.
Здесь описание

Можно запретить loopback
Код
int loopback = 0; /* 0 = disabled, 1 = enabled (default) */
int ec = setsockopt(*pSocket, SOL_CAN_RAW, CAN_RAW_LOOPBACK, &loopback, sizeof(loopback));
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 18.11.2013 00:42 Сообщение: 7
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
to Jury093: Если не затруднит запустите candump на передающем интерфейсе (одновременно с передачей. can1 в первом случае). Возможно результат вас удивит... =)
Заодно и повторяемость посмотрим.

попинал can и запустил..
не очень понял. как сделать и в чем физический смысл одновременного старта утилит..
в одном окошке candump
Код
^Croot@dm8148:~# candump any
can0 5A1 [8] 11 22 33 44 55 66 77 88
can1 5A1 [8] 11 22 33 44 55 66 77 88
^Croot@dm8148:~# candump can1
can1 5A1 [8] 11 22 33 44 55 66 77 88
can1 5A1 [8] 11 22 33 44 55 66 77 88
can1 5A1 [8] 11 22 33 44 55 66 77 88
^Croot@dm8148:~# candump can0
can0 5A1 [8] 11 22 33 44 55 66 77 88
can0 5A1 [8] 11 22 33 44 55 66 77 88

во втором cansend
Код
root@dm8148:~# cansend can1 5A1#11.22.33.44.55.66.77.88
root@dm8148:~# cansend can0 5A1#11.22.33.44.55.66.77.88
root@dm8148:~# cansend can1 5A1#11.22.33.44.55.66.77.88
root@dm8148:~# cansend can0 5A1#11.22.33.44.55.66.77.88
root@dm8148:~# cansend can0 5A1#11.22.33.44.55.66.77.88
root@dm8148:~# cansend can1 5A1#11.22.33.44.55.66.77.88

результат не зависит, куда посылать - напрямую в порт can0 или через шлейф в can1
вам уже подсказали, видимо надо эхо выключать или еще что-то в своей софтине..
если сорц не секретный и не очень сложный для сборки, то выложите куда-нить нужный кусок (на Си надеюсь) - могу попробовать запустить на своем железе..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
misha
Добавлено 12.12.2013 01:48 Сообщение: 8
misha
5

Пункты: 1208
Регистрация: 20.02.2013
Из: СПб
подтверждаю. я тоже пользуюсь ядром из комплекта и тоже не смог отключить loopback штатными средствами. из-за этого были даже некоторые проблемы с canfestival (обработчик приема посылки SYNC вызывался по 2 раза).
Спуститься к концу Подняться к началу
Персональная информация
VB
Добавлено 26.10.2017 12:16 Сообщение: 9
VB
0

Пункты: 1817
Регистрация: 20.02.2017
Пол: Мужчина
Из: Самара
Делаю проверку:
Первое окно:
# cansend can0 123#DEADBEEF
# ifconfig
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP NOARP MTU:16 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:16 (16.0 B) TX bytes:0 (0.0 B)
Interrupt:33
Второе окно:
# candump can0

То есть во втором тишина, хотя 16 байт вроде ушло.
Пробовал и с замкнутыми оконечниками и с разомкнутыми.
Что- то я не доделал?
По виду интерфейс нормально поднялся.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 26.10.2017 12:52 Редактировалось 26.10.2017 13:24 Сообщение: 10
sasamy
4.70

Пункты: 77331
Регистрация: 14.08.2009
Цитата

# cansend can0 123#DEADBEEF
...
# candump can0


поднимите второй интерфейс и соедините между собой

# cansend can0 123#DEADBEEF
...
# candump can1

или включите loopback если на одном интерфейсе надо

# ip link set can0 down
# ip link set can0 type can bitrate 125000 triple-sampling on loopback on
# ifconfig can0 up

на какой плате проверяете ?
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-iMX53