Перейти к содержанию
    

Rockchip RK3568 CAN & Armbian проблемы

Добрый день. 

У кого-то есть успешный опыт работы с CAN на данном соке?

Имею такую проблему:

CAN расширенные пакеты  500 килобит. На шине несколько общающихся устройств и Rock слушает.

При большом количестве пакетов без пауз рок уходит в ошибку на шине.

Выглядит это так, приходит первый пакет, рок говорит ACK , на второй тоже, а на третьем недослушав CRC рок вывешивает на шину сигнал ошибки.

При этом на роке ничего не запущено или запущен кандамп, не важно. 

Цеплялся на ножки RX TX анализатором.  Физика сделана так:

image.thumb.png.acb3344a26698b1120835e0a0d4a932f.png

Физику на всякий случай пробовал менять на PCA82C251 ничего не изменилось

Если задаунить интерфейс на роке, то ошибок в шине нет, другие устройства успешно переваривают поток данных.

Пробовал снизисть на 125 килобит, получилось, что рок отвечает ACK примерно на 6 пакетов, потом опять валит ошибку.

Пробовал двигать Sample Point от 0.5 до 0.9 эффект нулевой.

Если в шине редкие пакеты, скажем через одну миллисекунду, (при 500 килобит) то рок успешно отвечает ACK ами на все пакеты.

ERRATA не нашел, есть ли он вообще?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Внимательно посмотрите, какой стандарт CAN активирован: по-умолчанию (возможно, линукс-драйверы так написаны) там не CAN 2.0B, а тот, который не умел расширенные идентификаторы. И еще - где-то там в системе сборки лучше указать, чтобы драйвер использовал 1 мэйлбокс на отправку. Их очередь работает как-то криво.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

активирован B, на малой частоте пакетов, принимает кандампом нормально. И анализатор не находит error ов в шине.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, mitya1698 сказал:

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

Кривые драйвера никто не отменял)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/18/2023 at 9:37 PM, mitya1698 said:

на малой частоте пакетов, принимает кандампом нормально

попробуйте прерывания от CAN на отдельное ядро вынести, можно вручную

https://docs.kernel.org/core-api/irq/irq-affinity.html

можно демоном попробовать

http://irqbalance.github.io/irqbalance

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, sasamy сказал:

попробуйте прерывания от CAN на отдельное ядро вынести, можно вручную

Повторюсь, в этом RK3568 CAN-ы нормально работают. Наши программисты тоже какое-то время бодались, по итогу а) надо внимательно смотреть что и под что собираешь; б) как настраиваешь сам CAN.

А вот это

Цитата

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

никак не соотносится с

Цитата

Выглядит это так, приходит первый пакет, рок говорит ACK , на второй тоже, а на третьем недослушав CRC рок вывешивает на шину сигнал ошибки.

потому что описанное поведение случается на уровне логики CAN-контроллера, а не на программном уровне управления им.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Будут и наши бороться значит :)

Я что на анализаторе увидел, то и рассказал как я это электрически вижу.

А у Вас какие-то свои разработанные платы на этом SOC ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/19/2023 at 9:18 AM, Arlleex said:

Повторюсь, в этом RK3568 CAN-ы нормально работают.

я против чтоли, на отдельном ядре ещё лучше будут работать 🙂 балансировка нагрузки irq это классика для сетевых устройств

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, sasamy сказал:

попробуйте прерывания от CAN на отдельное ядро вынести

Там для каждого ядра свой контроллер прерываний? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/19/2023 at 10:26 AM, mantech said:

Там для каждого ядра свой контроллер прерываний? 

обработчик irq можно привязать к определённому ядру

https://enterprise-support.nvidia.com/s/article/what-is-irq-affinity-x

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, mitya1698 сказал:

А у Вас какие-то свои разработанные платы на этом SOC ?

Дешевле покупать SoM на этом SoC и уже на нем делать свои платы. Мы так и делаем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Samum421 сказал:

Рекомендую SOM RK3568

Это все монстроидальное по размеру и с дурацкими хиросами между платами. Мне вот такое больше нравится, правда кто его производит и цены - х.з.)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...