Ник:
Пароль:

Контакты

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
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
[Решено] Приоритет работы драйверов в ядре
titan83
Добавлено 14.04.2015 17:12 Редактировалось 28.04.2015 17:11
0
Сообщение: 1
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Всем доброго здравия.
Есть устройство 9G45. Ядро 3.2.18.
Обнаружил две неприятные проблемы, у которых, скорее всего один корень.
1. При подключении микросхемы MCP2515 (CAN-to-SPI) имеют место быть серьезные потери пакетов на скоростях CAN > 100kBit/s (а типичная скорость обмена по CAN - 1Mbit/s). Также бывают (нечасто - раз в несколько часов при постоянном обмене) искажения принятых кадров.
2. Если устройство ведет обмен по USART, используя протокол Modbus RTU на высоких скоростях (я точно видел на 115200), и при этом параллельно запустить подключение по GPRS (pppd), то начинаются искажения принятых кадров (примерно 1 из 50).
Причина, как я понял, в том, что в драйверах используются workqueue, которые имеют Normal priority, а хотелось бы Realtime.
Гутарят, что начиная с 3.4 ядра вроде как все должно стать лучше, во всяком случае со SPI, но так ли это?
Есть тут люди, которые использовали с линуксом достаточно скоростные устройства? Каково оно было?

Спасибо.
Спуститься к концу Подняться к началу
Персональная информация
lexx666
Добавлено 16.04.2015 12:01 Сообщение: 2
lexx666
3.83

Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
Так обновите ядро и проверьте.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 17.04.2015 10:32 Сообщение: 3
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Цитата
Так обновите ядро и проверьте.

Я глянул spi-atmel.c для разных версий ядра - что-то начало меняться только в ветке 3.8.
А обновить ядро даже на 3.7 (есть патч от sasamy) у меня с ходу не получилось - не работает сеть (вместо Atmel MACB там теперь какой-то Cadence) и моя микросхема MCP2515 (из-за которой весь сыр-бор) на новом ядре пишет, что probe failed. Да и смысла мне обновляться на это ядро никакого, ибо там Atmel SPI тот же, что и в 3.2.
А вот попробовать самому с более свежим ядром пока нет ни времени, ни особой уверенности в успехе.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 17.04.2015 12:37 Сообщение: 4
sasamy
4.70

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

1. При подключении микросхемы MCP2515 (CAN-to-SPI) имеют место быть серьезные потери пакетов на скоростях CAN > 100kBit/s (а типичная скорость обмена по CAN - 1Mbit/s).


посмотрите количество прерываний при таких скоростях

cat /proc/interrupts

Цитата

2. Если устройство ведет обмен по USART, используя протокол Modbus RTU на высоких скоростях (я точно видел на 115200), и при этом параллельно запустить подключение по GPRS (pppd), то начинаются искажения принятых кадров (примерно 1 из 50).


надо смотреть - какой порт USART используется и есть ли поддержка DMA.

Цитата

Причина, как я понял, в том, что в драйверах используются workqueue, которые имеют Normal priority, а хотелось бы Realtime.


причина скорей всего в том там патч RT наложен в 3.2.18 - попробуйте без него

Цитата

А обновить ядро даже на 3.7 (есть патч от sasamy)


это не мой патч
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 17.04.2015 13:10 Сообщение: 5
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Спасибо за интересные замечания, буду пробовать.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 28.04.2015 17:10 Сообщение: 6
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
В общем, пока проблему если не закрыл, то сильно облегчил - компильнул ядро (3.2) с драйвером MCP2515, который сделали в сообществе Rapsberry Pi, он базируется на spi_async().
Я вам скажу, что результат виден сразу - практически пропали пропадания кадров (раз в пять-шесть часов, вместо нескольких раз в минуту).
Так что может кому и поможет - http://elinux.org/RPi_CANBus
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux