WB 6: Errata: различия между версиями

Нет описания правки
Строка 298: Строка 298:


Чувствительность схемы к загрязнениям значительно уменьшена в партиях с v6.8.1B.
Чувствительность схемы к загрязнениям значительно уменьшена в партиях с v6.8.1B.
== ERRWB600012: Перестают работать боковые модули ==
'''Подверженные устройства'''
Wiren Board 6 (6.3-6.7) с версией ядра старше 4.9.22-wb1 (март 2021г.)
'''Описание'''
* Не работают входы и выходы боковых модулей WBIO подключенных к котроллеру.
* Сам контроллер тормозит, процессор сильно загружен
* После перезагрузки контроллер стартует несколько минут
* После перезагрузки контроллера в нём не работает второй порт RS-485
'''Причины и подробное описание'''
Это поведение вызывает комбинация трёх проблем.
Когда ножка прерывания INT, идущая от боковых модулей WBIO к контроллеру, взведена, то в ядре циклично срабатывает обработчик прерывания, который даёт команду боковым модулям сбросить состояние ножки прерывания. Однако в момент старта ядра Linux (при загрузке) боковые модули ввода-вывода инициализируются по порядку. Если ножку прерывания держит второй по счёту модуль, то после инициализации первого модуля ядро Linux не сможет сбросить состояние прервания, т.к. второй модуль ещё не инициализирован. Непрерываное выполнение обработчика прерывания создаёт нагрузку на процессор, препятствует инициализации второго модуля ввода-вывода, препятствует инициализации периферии, обрабатываемой через dt-overlay (второго порта RS-485).
Ножка прерывания может быть взведена и не сброшена, если, например, удалить из конфигурации подключенный к контроллеру модуль расширения. Если на его входы придут импульсы, это вызовет описанную проблему. Так же импульсы на входы вызовут проблему, если они поступят во время перезагрузки контроллера.
Ещё одна проблема - зависание шины i2c из-за наводок. Если контроллер и модули находятся в шумном окружении, например рядом с ними расположены контакторы, то возникающее электромагнитное поле может вызвать помехи на линии связи контроллера с модулями. В очень редких ситуациях помеха может так испортить данные на линии, что и контроллер, и боковые модули перейдут в бесконечное состояние ожидания и не смогут обмениваться данными. Если в этом время на вход бокового модуля поступит сигнал, то он вызовет срабатывание линии прерывания и описанные выше проблемы.
Наконец, проблему усугубляет аппаратная особенность контроллеров WB6 ревизий 6.3-6.7 включительно: питание модулей ввода-вывода не отключается по кнопке питания и по срабатыванию аппаратного сторожевого таймера. Таким образом, зависшую систему нельзя вывести из этого состояния стандартными способами: перезагрузкой или выключением питания с кнопки.
'''Пути обхода'''
Обновление пакета ядра или прошивки.
'''Дифференциальная диагностика'''
Мы рекомендуем просто обновить прошивку целиком или пакет ядра при подозрении на проблему. Если это невозможно, обратитесь в техподдержку за инструкциями по диагностике.
'''Запланированное исправление'''
Проблема исправлена в пакете ядре Linux в марте 2021  (версии 4.9.22-wb1 и выше) для всех ревизий Wiren Board 6.
В новом ядре прерывания не вызываются несколько раз, даже если линия прерывания взведена. Кроме этого, реализована процедура сброса состояния шины связи, в том случае, если помехи перевели её в состояние ожидания.
В контроллере ревизии 6.8.1 и старше питание боковых модулей ввода-вывода отключается кнопкой и сторожевым таймером.