WB Modbus Devices Firmware Update: различия между версиями

м
Переписал, теперь нужно часть текста вынести во включения и дополнить.
м
м (Переписал, теперь нужно часть текста вынести во включения и дополнить.)
Строка 2: Строка 2:
{{DISPLAYTITLE:Обновление прошивок на устройствах Wiren Board}}
{{DISPLAYTITLE:Обновление прошивок на устройствах Wiren Board}}


== Автоматическое обновление прошивки с контроллера Wiren Board ==
== Автоматическое обновление ==
Прошивку устройств, подключенных к контроллеру Wiren Board рекомендуем обновлять с помощью утилиты [[wb-mcu-fw-updater]]. Утилита проверяет наличие новой версии прошивки для всех подключенных устройств и, при необходимости, обновляет их.  
[[Image: Wb-fw-mcu-updater example 1.png |300px|thumb|right| Пример работы wb-fw-mcu-updater ]]
Автоматическое обновление выполняется с помощью предустановленной на контроллеры Wiren Board утилиты [[Wb-mcu-fw-updater | wb-mcu-fw-updater]] и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически.


Для установки выполните в консоли:
Для использования утилиты нужен доступ в интернет, если это не так — смотрите раздел про ручное обновление.
<syntaxhighlight lang="bash">
dpkg -s wb-mcu-fw-updater || (apt update && apt install wb-mcu-fw-updater)
</syntaxhighlight>


Утилита автоматически останавливает сервис <code>wb-mqtt-serial</code> перед началом работы и запускает заново после. Если вместо <code>wb-mqtt-serial</code> используется стороннее ПО, опрашивающее устройства по последовательному порту — остановите это ПО.
Вы можете использовать утилиту и без нашего контроллера, для этого вам понадобится Debian-подобная ОС Linux. Читайте инструкцию по установке в [[Wb-mcu-fw-updater | описании утилиты]].


Для обновления прошивки всех устройств, описанных в разделе Serial Devices Configuration (файл <code>/etc/wb-mqtt-serial.conf</code>), выполните:
Для обновления прошивки всех устройств, описанных в разделе Serial Devices Configuration (файл /etc/wb-mqtt-serial.conf), выполните:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
wb-mcu-fw-updater update-all
wb-mcu-fw-updater update-all
Строка 22: Строка 20:
</syntaxhighlight>
</syntaxhighlight>


Подробную информацию смотрите в выводе
Полный список параметров и примеры работы смотрите на [[Wb-mcu-fw-updater | странице утилиты]].
 
== Ручное обновление ==
Мы не рекомендуем этот способ, но если на объекте нет доступа в интернет — это единственный вариант.
 
Ручное обновление можно сделать утилитой [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher]], которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы.
 
=== Установка утилиты ===
==== Контроллер Wiren Board ====
Утилита есть в репозитории контроллера, поэтому обновите список пакетов и установите ее:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
wb-mcu-fw-updater --help
apt update
apt install wb-mcu-fw-flasher
</syntaxhighlight>
</syntaxhighlight>


<gallery mode="packed" heights="200px">
==== ОС Linux ====
File:Wb-fw-mcu-updater example 1.png|Пример работы wb-fw-mcu-updater
Если вы используете контроллер на процессоре ARM Cortex, то скачайте и установите deb-пакет из [[http://releases.contactless.ru/?prefix=stable/stretch/pool/main/w/wb-mcu-fw-flasher/ нашего репозитория]].
</gallery>


== Ручная прошивка устройств ==
Для установки на компьютер с ОС Linux скачайте на компьютер пакет [[Wb-mcu-fw-flasher_1.0.3_amd64-all.deb]].
Если у контроллера нет доступа в интернет или у вас не получилось обновить прошивку устройства автоматически, вы можете использовать сервисную утилиту [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher]].
 
Для установки, выполните команды:
<syntaxhighlight lang="bash">
apt update
apt install libmodbus5
apt install ./Wb-mcu-fw-flasher_1.0.3_amd64-all.deb #измените имя пакета, если необходимо
</syntaxhighlight>
 
==== ОС Windows ====
Для Windows мы подготовили windows-версию утилиты, которая не требует установки. Скачать можно по ссылке [[Wb-mcu-fw-flasher_1.0.3.zip]]
 
=== Выбор прошивки ===
Прошивки публикуются на сайте [http://fw-releases.wirenboard.com/?prefix=fw/ fw-releases.wirenboard.com] в виде файлов с расширением <code>.wbfw</code>.
 
Прошивки сгруппированы по версиям и сигнатурам (типам) устройств.
 
Каждое modbus-устройство Wiren Board имеет сигнатуру — наименование аппаратного типа устройства. Устройство будет прошито только если его сигнатура совпадет с сигнатурой в прошивке.
 
Сигнатура устройства хранится в формате строки из 12 ASCII символов, по одному символу в регистре, и доступна по адресу <code>290</code>.
 
Сигнатуру устройства в ОС Linux и на контроллере можно с помощью утилиты [[Modbus-client |modbus_client]]. Узнаем сигнатуру устройства с '''адресом 10''' и подключенного к порту '''ttyRS485-1'''
<syntaxhighlight lang="bash">
echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a 10 -t3 -r 290 -c 12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
</syntaxhighlight>
 
В результате будет выведена строка с сигнатурой, например '''mr6c'''.
 
О том, как читать регистры из ОС Windows смотрите в статье [[Working with WB devices without a controller | Работа с устройствами Wiren Board без контроллера]]
 
Теперь, имея сигнатуру вы можете скачать прошивку устройства:
# Перейдите на сайт [http://fw-releases.wirenboard.com/?prefix=fw/ fw-releases.wirenboard.com].
# Выберите папку '''by-signature'''.
# Найдите и откройте папку с нужной сигнатурой устройства.
# Выберите одну из веток:
#:*stable — стабильные версии прошивок. Чтобы скачать самую свежую, выберите файл latest.wbfw.
#:*unstable — экспериментальные версии прошивок.
 
=== Подготовка устройства ===
 
Прошивать устройства можно:
* по modbus-адресу устройства.
* по широковещательному адресу — <code>0</code>.
 
Для прошивки нескольких устройств на шине нужно поочереди перевести их в режим загрузчика и прошить.
 
Устройство переходит в режим загрузчика, если:
* на устройстве имеется корректная прошивка, то первые 2 секунды после включения питания устройство работает в режиме загрузчика;
* на устройстве нет корректной прошивки (например, был сбой при обновлении прошивки), то режим загрузчика активен постоянно;
* при работе основной программы записать 1 в holding-регистр 129 (0x81) — в этом случае устройство перезагружается и остается в режиме загрузчика 120 секунд. Это можно сделать, запустив утилиту <code>wb-mcu-fw-flasher</code> с ключем <code>-j</code>.
 
В режиме загрузчика индикатор Status устройства мигает с периодом 1 секунда, а при записи прошивки мигание индикатора учащается.
 
=== Загрузка прошивки в устройство ===
Для загрузки прошивки выполните шаги:
# Переведите устройство в режим загрузчика.
# Если вы прошиваете устройство с контроллера, то остановите драйвер [[wb-mqtt-serial]] или иное ПО, которое опрашивает устройство.
# Загрузите файл прошивки на [[View controller files from your computer | контроллер]] или другое устройство, с на котором установлена утилита прошивки.
# Прошиваете устройство командой:
#:* на контроллере или в ОС Linux:
#:<syntaxhighlight lang="bash">
wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f mr6c__1.14.1_master_19c9ca5.wbfw
</syntaxhighlight>
#:* в ОС Windows:
#:<syntaxhighlight lang="bash">
#команда для прошивки из Windows
</syntaxhighlight>
 
Успешный процесс прошивки выглядит так:
<syntaxhighlight lang="bash">
wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 1 -f mr6c__1.14.1_master_19c9ca5.wbfw   
  /dev/ttyRS485-1 opened successfully.
  Send jump to bootloader command and wait 2 seconds...
  Error: Connection timed out.
  May be device already in bootloader, try to send firmware...
  mr6c__1.14.1_master_19c9ca5.wbfw opened successfully, size 12136 bytes
  Sending info block... OK
  Sending data block 89 of 89... OK.
  All done!
</syntaxhighlight>
 
Если не сигнатура устройства и файла прошивки не совпали, то вы получите сообщение об ошибке:
<syntaxhighlight lang="bash">
Sending info block...
  Error while sending info block: Slave device or server failure
  Data format is invalid or firmware signature doesn't match the device
</syntaxhighlight>