Wiren Board Embedded Controller

From Wiren Board
This is the approved revision of this page, as well as being the most recent.

Описание

В контроллере Wiren Board 7.4 и новее есть специальная микросхема, которая управляет питанием — Embedded Controller, или EC. Перед стартом он включает в правильной последовательности рейки питания, а также проверяет нормальное ли напряжение на них, если с напряжениями всё хорошо то он даёт команду старта основного процессора.

Кроме этого на нём реализованы: сторожевой таймер, часы реального времени, будильники, обработка нажатий на кнопку ON/OFF и другие системные функции.

Индикация и отключение

Индикатор Embedded Controller

У EC есть индикатор LED1, установленный на плате контролера:

  • Рабочий режим — светодиод мигает 500 мс включен, 1000 мс выключен.
  • Проверяет рейки питания и пробует запустить основной процессор — мигает очень часто 50 мс включен, 50 мс выключен.
  • Спящий режим — очень короткие вспышки раз в 2 секунды.

Есть кнопка B1 и перемычка SJ2, которые объедены в группу Watchdog OFF — они замыкают ресет EC на землю, чем блокируют его работу. Это может быть полезно, если вам надо временно отключить сторожевой таймер, или по каким-то причинам EC начал сбоить и не давать контроллеру запуститься.

Функции

Будильник. Вы можете включать контроллер по будильнику — это может быть полезным при работе от автономного источника питания. Будильник настраивается в консоли контроллера утилитой rtcwake, примеры:

  • Выключить сейчас и включить через 60 секунд:
    rtcwake -m off -s 60
    
  • Выключить сейчас и включить 31.07.2023 в 07:15 локального времени:
    1. Переведите дату в unix-формат командой date +%s -d "дата время":
      # date +%s -d "2023-07-31 07:15"
      1690787700
      
    2. Выключите контроллер и установить дату и время включения:
      rtcwake -m off -l -t 1690787700
      

Установку будильника можно автоматизировать с помощью wb-rules.

Выключение контроллера из Linux по команде poweroff возможно только при установленном будильнике, или при работе от модуля WBMZ4-BATTERY / WBMZ4-SUPERCAP / WBMZ5-BATTERY и отсутствии внешнего питания. Будьте осторожны с выключением контроллера из Linux, если у вас нет физического доступа к контроллеру — включить его можно будет в таком случае дождавшись когда сработает будильник, либо когда появится питающее напряжение.

Обработка нажатия кнопки On/Off. При подаче напряжения питания на любой из возможных входов (Vin, PoE, USB-C), контроллер включается автоматически. Для выключения на месте в контроллере есть кнопка ON/OFF, у которой есть два типа нажатий:

  • Короткое нажатие отправит операционной системе Linux команду poweroff, что приведёт к завершению работы и отключению питания.
  • Длинное нажатие принудительно выключает питание контроллера — это полезно, если по каким-то причинам Linux не может завершить работу сам.

Кроме этого на нём сделаны:

  • Аппаратный watchdog.
  • Часы реального времени RTC. Питаются от собственного отдельного аккумулятора, периодическая замена батарейки не требуется. Ёмкости аккумулятора хватает на 2-3 месяца работы часов при отключенном питании контроллера.
  • Измерение температуры внутри корпуса.
  • Управление выходом Vout с защитой от превышения напряжения. Если напряжение питания контроллера больше 29 В, то EC отключит выход Vout т.к. напряжение с Vin на Vout идёт напрямую и может повредить устройства подключенные к контроллеру. Если напряжение снизится ниже 28 вольт — выход будет включён снова. Также выход Vout отключается, если контроллер работает от USB.

Обновление прошивки EC

Этот раздел про обновление прошивки EC, если вам надо обновить ПО самого контроллера Wiren Board, вам сюда Программное обеспечение Wiren Board.

Текущую версию прошивки можно узнать командой cat /sys/bus/spi/drivers/wbec/spi0.0/fwrev.

Узнать, какая именно версия прошивки будет зашита так: wb-ec-firmware-update --help, внизу вывода будет имя доступного файла прошивки.

Для обновления прошивки:

  1. Подключите к контроллеру внешнее питание — это важно, от батарейки прошить EC не получится.
  2. Подключитесь к контроллеру по SSH.
  3. Обновите пакеты: apt update; apt upgrade
  4. Выполните команду wb-ec-firmware-update, дождитесь завершения процедуры.
  5. Перезагрузите контроллер.

Если в конце обновления прошивки вы получили ошибку modprobe: FATAL: Module xxxxxxx not found — вероятно вы не перезагрузили контроллер в последнем пункте, перезагрузите его.