Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Отладочные платы » SK-iMX53
iMX53 CAN
std_logic
Добавлено 09.10.2012 01:28 Редактировалось 09.10.2012 01:34
0
Сообщение: 1
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
Добрый день.
Имеется пару плат SK-iMX53. На обоих значится ревизия V2.B, однако одна покупалась несколько месяцев назад, а вторая совсем недавно. Возникли трудности с CANом, с коим под линуксом ранее работать не приходилось. На "старой" плате он работает с пол тыка, настраиваю простенько:
Код
system("ifconfig can0 down");
system("echo 250000 > /sys/devices/platform/FlexCAN.0/bitrate");
...
system("ifconfig can0 up");

ну и дальше создание сокета и прочее по даташиту.
На "новой" плате ввиду изменений в драйвере CANа пришлось настраивать его чуть иначе:
Код
system("ip link set can0 type can bitrate 250000");
...

Настройки применяются, сокет создается и функции чтения и записи в него ошибок не возвращают. Однако обмена по шине нет, CAN-анализатор на любую попытку траффика в любую сторону выдает error warning level. Оснастка точно рабочая, терминатор на месте.
К ковырянию в исходниках линукса пока морально не готов, нет ни времени ни опыта. Быть может дело в какой-нибудь мелочи, которую я пока не увидел? Буду рад любым советам.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.10.2012 02:49 Редактировалось 09.10.2012 08:29 Сообщение: 2
sasamy
4.71

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

ip link set can0 type can bitrate 250000


проверьте что ip из комплекта iproute2 а не симлинк на busybox, с ip из состава busybox CAN не работает.

Цитата

На обоих значится ревизия V2.B


кстати - что вам мешает использовать ядро от старой платы если там у вас все работает и устраивает ?
Спуститься к концу Подняться к началу
Персональная информация
John Smith
Добавлено 09.10.2012 14:45 Сообщение: 3
John Smith
0

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

ip link set can0 type can bitrate 250000

попробуйте добавить up, т.е так:
ip link set can0 up type can bitrate 250000
Спуститься к концу Подняться к началу
Персональная информация
std_logic
Добавлено 10.10.2012 13:13 Сообщение: 4
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
Цитата
проверьте что ip из комплекта iproute2 а не симлинк на busybox

# ip -V
ip utility, iproute2-ss110629
вроде верно?
Цитата
попробуйте добавить up

ну up после настроек я естественно делал. Перенос его сюда ничего нового не дал.

Вообще если включить loopback, то свои посланные пакеты драйвер принимает. Отсюда предполагаю что у меня неправильное взаимодействие с микросхемой CAN-трансивера. Ядро трогать очень не хотелось, но очевидно придется
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 10.10.2012 14:13 Редактировалось 10.10.2012 14:18 Сообщение: 5
sasamy
4.71

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

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


если есть две платы - можно протестировать утилитами can-utils - на одной плате
candump can0
на второй например
cansend can0 5A1#11.22.33.44.55.66.77.88

если ничего не меняли, на платах с новым ядром, can поднимается автоматом
Цитата

# cat /etc/network/interfaces
# Configure Loopback
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.136
netmask 255.255.255.0
gateway 192.168.0.1

auto can0
iface can0 inet manual
#pre-up ip link set $IFACE type can bitrate 125000 listen-only off
pre-up /sbin/ip link set $IFACE type can bitrate 125000 triple-sampling on
up /sbin/ifconfig $IFACE up
down /sbin/ifconfig $IFACE down


Цитата

# ifconfig
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP MTU:16 Metric:1
RX packets:0 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:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:82

eth0 Link encap:Ethernet HWaddr 00:1F:F2:00:00:00
inet addr:192.168.0.136 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Base address:0xe000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Спуститься к концу Подняться к началу
Персональная информация
std_logic
Добавлено 10.10.2012 14:28 Сообщение: 6
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
Цитата
если ничего не меняли в /etc/network/interfaces, can поднимается автоматом

всё правильно, поднимается. После перезагрузки вижу что CAN настроен именно так, ничего не меняя пытаюсь сделать cansend, анализатор выдает ошибку. По поводу двух плат - если can-анализатор пакеты не ловит, то и вторая плата не словит.
Спуститься к концу Подняться к началу
Персональная информация
std_logic
Добавлено 10.10.2012 14:32 Сообщение: 7
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
После загрузки платы и команды cansend:
Цитата
# ifconfig
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP MTU:16 Metric:1
RX packets:1 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:8 (8.0 B) TX bytes:8 (8.0 B)
Interrupt:82

Настораживает почему есть и отправленные и принятые байты
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 10.10.2012 19:01 Редактировалось 10.10.2012 19:10 Сообщение: 8
sasamy
4.71

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

По поводу двух плат - если can-анализатор пакеты не ловит, то и вторая плата не словит.


проверял на двух платах, одна с "заводской" последней прошивкой, вторая с измененной - все работает. С измененной:

Цитата

# /sbin/ip link set can0 type can bitrate 125000 triple-sampling on
# ifconfig can0 up
# ifconfig
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP MTU:16 Metric:1
RX packets:0 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:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:82
...
# candump can0
can0 500 [3] 1E 10 10
# ifconfig
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP MTU:16 Metric:1
RX packets:1 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:3 (3.0 B) TX bytes:0 (0.0 B)
Interrupt:82
...


на заводской

Цитата

Welcome to Buildroot
buildroot login: root
# cansend can0 500#1E.10.10
# ifconfig
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP MTU:16 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:3 (3.0 B) TX bytes:3 (3.0 B)
Interrupt:82
..


аналогично работает и с вашими настройками
Цитата

# ifconfig can0 down
# ip link set can0 type can bitrate 250000
# ifconfig can0 up
flexcan imx53-flexcan.0: writing ctrl=0x0531e0d5
# cansend can0 500#1E.10.10


Цитата

# ifconfig can0 down
# /sbin/ip link set can0 type can bitrate 250000
# ifconfig can0 up
# candump can0
can0 500 [3] 1E 10 10
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 10.10.2012 19:11 Редактировалось 10.10.2012 19:21 Сообщение: 9
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Цитата
...Отсюда предполагаю что у меня неправильное взаимодействие с микросхемой CAN-трансивера...

Там нечему взаимодействовать - чистый преобразователь уровней.
Во время выпуска SK-iMX53-OEM был "осознанно" включен CAN драйвер (в последствии перенен в остальные платы) в ядре (до этого его не проверяли) и тестировали с помошью canutils, сетевой интерфейс поднимался но никакой активности на линиях (смотрел осциллографом) при попытках пинговать устройства в CAN сети я не наблюдал ...
То что по верх CAN работал IP, со старым ядром - скорее приятная случайность.
Нечего стесняться, загружайте на новую плату старое ядро и там уже будет видно ...
Спуститься к концу Подняться к началу
Персональная информация
std_logic
Добавлено 11.10.2012 15:01 Редактировалось 11.10.2012 15:02 Сообщение: 10
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
Цитата
загружайте на новую плату старое ядро и там уже будет видно

я наверное туплю, но честно говоря не знаю, где взять старое ядро. Оно изначально есть на флешке платы, можно ли его оттуда слить - без понятия. Сорцы на ftp выложены только для новой версии, собрать старое ядро не из чего.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-iMX53