WB Modbus Devices Firmware Update: различия между версиями
м |
м (Переписал, теперь нужно часть текста вынести во включения и дополнить.) |
||
Строка 2: | Строка 2: | ||
{{DISPLAYTITLE:Обновление прошивок на устройствах Wiren Board}} | {{DISPLAYTITLE:Обновление прошивок на устройствах Wiren Board}} | ||
== Автоматическое обновление | == Автоматическое обновление == | ||
[[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]] и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически. | |||
Для | Для использования утилиты нужен доступ в интернет, если это не так — смотрите раздел про ручное обновление. | ||
Вы можете использовать утилиту и без нашего контроллера, для этого вам понадобится Debian-подобная ОС Linux. Читайте инструкцию по установке в [[Wb-mcu-fw-updater | описании утилиты]]. | |||
Для обновления прошивки всех устройств, описанных в разделе Serial Devices Configuration (файл | Для обновления прошивки всех устройств, описанных в разделе 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- | apt update | ||
apt install wb-mcu-fw-flasher | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== ОС Linux ==== | |||
Если вы используете контроллер на процессоре ARM Cortex, то скачайте и установите deb-пакет из [[http://releases.contactless.ru/?prefix=stable/stretch/pool/main/w/wb-mcu-fw-flasher/ нашего репозитория]]. | |||
== | Для установки на компьютер с ОС Linux скачайте на компьютер пакет [[Wb-mcu-fw-flasher_1.0.3_amd64-all.deb]]. | ||
Для установки, выполните команды: | |||
<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> |
Версия 17:56, 25 мая 2021
Это черновик страницы. Последняя правка сделана 25.05.2021 пользователем A.Degtyarev.
Автоматическое обновление
Автоматическое обновление выполняется с помощью предустановленной на контроллеры Wiren Board утилиты wb-mcu-fw-updater и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически.
Для использования утилиты нужен доступ в интернет, если это не так — смотрите раздел про ручное обновление.
Вы можете использовать утилиту и без нашего контроллера, для этого вам понадобится Debian-подобная ОС Linux. Читайте инструкцию по установке в описании утилиты.
Для обновления прошивки всех устройств, описанных в разделе Serial Devices Configuration (файл /etc/wb-mqtt-serial.conf), выполните:
wb-mcu-fw-updater update-all
Для обновления прошивки конкретного устройства, укажите порт и его адрес Modbus:
wb-mcu-fw-updater update-fw /dev/ttyRS485-2 -a70
Полный список параметров и примеры работы смотрите на странице утилиты.
Ручное обновление
Мы не рекомендуем этот способ, но если на объекте нет доступа в интернет — это единственный вариант.
Ручное обновление можно сделать утилитой wb-mcu-fw-flasher, которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы.
Установка утилиты
Контроллер Wiren Board
Утилита есть в репозитории контроллера, поэтому обновите список пакетов и установите ее:
apt update
apt install wb-mcu-fw-flasher
ОС Linux
Если вы используете контроллер на процессоре ARM Cortex, то скачайте и установите deb-пакет из [нашего репозитория].
Для установки на компьютер с ОС Linux скачайте на компьютер пакет Wb-mcu-fw-flasher_1.0.3_amd64-all.deb.
Для установки, выполните команды:
apt update
apt install libmodbus5
apt install ./Wb-mcu-fw-flasher_1.0.3_amd64-all.deb #измените имя пакета, если необходимо
ОС Windows
Для Windows мы подготовили windows-версию утилиты, которая не требует установки. Скачать можно по ссылке Wb-mcu-fw-flasher_1.0.3.zip
Выбор прошивки
Прошивки публикуются на сайте fw-releases.wirenboard.com в виде файлов с расширением .wbfw
.
Прошивки сгруппированы по версиям и сигнатурам (типам) устройств.
Каждое modbus-устройство Wiren Board имеет сигнатуру — наименование аппаратного типа устройства. Устройство будет прошито только если его сигнатура совпадет с сигнатурой в прошивке.
Сигнатура устройства хранится в формате строки из 12 ASCII символов, по одному символу в регистре, и доступна по адресу 290
.
Сигнатуру устройства в ОС Linux и на контроллере можно с помощью утилиты modbus_client. Узнаем сигнатуру устройства с адресом 10 и подключенного к порту ttyRS485-1
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')
В результате будет выведена строка с сигнатурой, например mr6c.
О том, как читать регистры из ОС Windows смотрите в статье Работа с устройствами Wiren Board без контроллера
Теперь, имея сигнатуру вы можете скачать прошивку устройства:
- Перейдите на сайт fw-releases.wirenboard.com.
- Выберите папку by-signature.
- Найдите и откройте папку с нужной сигнатурой устройства.
- Выберите одну из веток:
- stable — стабильные версии прошивок. Чтобы скачать самую свежую, выберите файл latest.wbfw.
- unstable — экспериментальные версии прошивок.
Подготовка устройства
Прошивать устройства можно:
- по modbus-адресу устройства.
- по широковещательному адресу —
0
.
Для прошивки нескольких устройств на шине нужно поочереди перевести их в режим загрузчика и прошить.
Устройство переходит в режим загрузчика, если:
- на устройстве имеется корректная прошивка, то первые 2 секунды после включения питания устройство работает в режиме загрузчика;
- на устройстве нет корректной прошивки (например, был сбой при обновлении прошивки), то режим загрузчика активен постоянно;
- при работе основной программы записать 1 в holding-регистр 129 (0x81) — в этом случае устройство перезагружается и остается в режиме загрузчика 120 секунд. Это можно сделать, запустив утилиту
wb-mcu-fw-flasher
с ключем-j
.
В режиме загрузчика индикатор Status устройства мигает с периодом 1 секунда, а при записи прошивки мигание индикатора учащается.
Загрузка прошивки в устройство
Для загрузки прошивки выполните шаги:
- Переведите устройство в режим загрузчика.
- Если вы прошиваете устройство с контроллера, то остановите драйвер wb-mqtt-serial или иное ПО, которое опрашивает устройство.
- Загрузите файл прошивки на контроллер или другое устройство, с на котором установлена утилита прошивки.
- Прошиваете устройство командой:
- на контроллере или в ОС Linux:
wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f mr6c__1.14.1_master_19c9ca5.wbfw
- в ОС Windows:
#команда для прошивки из Windows
Успешный процесс прошивки выглядит так:
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!
Если не сигнатура устройства и файла прошивки не совпали, то вы получите сообщение об ошибке:
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