Wb-mcu-fw-flasher: различия между версиями

Материал из Wiren Board
м (Откатил включения — сделаю лучше)
м (Переписал абзац про установку, убрал лишнее)
Строка 7: Строка 7:
<code>wb-mcu-fw-flasher</code> — сервисная утилита для modbus-устройств Wiren Board с помощью которой вы сможете сбросить устройство к заводским настройкам или заменить его прошивку.
<code>wb-mcu-fw-flasher</code> — сервисная утилита для modbus-устройств Wiren Board с помощью которой вы сможете сбросить устройство к заводским настройкам или заменить его прошивку.


== Подготовка к работе ==
== Установка утилиты ==
=== Установка утилиты ===
=== Контроллер Wiren Board ===
Для установки утилиты '''на контроллер Wiren Board''' выполните команды:
Утилита есть в репозитории контроллера, поэтому обновите список пакетов и установите ее:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt update
apt update
Строка 15: Строка 15:
</syntaxhighlight>
</syntaxhighlight>


Версия утилиты для '''MS Windows''': [[Media: Wb-mcu-fw-flasher_1.0.3.zip | Wb-mcu-fw-flasher_1.0.3.zip]]
=== ОС Linux ===
Если вы используете контроллер на процессоре ARM Cortex, то скачайте и установите deb-пакет из [http://releases.contactless.ru/?prefix=stable/stretch/pool/main/w/wb-mcu-fw-flasher/ нашего репозитория].


Для установки на '''компьютер с Debian''' скачайте пакет [[Media: Wb-mcu-fw-flasher_1.0.3_amd64-all.deb | Wb-mcu-fw-flasher_1.0.3_amd64-all.deb]]
Для установки на компьютер с ОС Linux скачайте на компьютер пакет [https://wirenboard.com/wiki/images/3/33/Wb-mcu-fw-flasher_1.0.3_amd64-all.deb wb-mcu-fw-flasher_1.0.3_amd64-all.deb].
и выполните команды в директории, куда загрузился пакет:
 
Для установки, выполните команды:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt update
apt update
apt install libmodbus5
apt install libmodbus5
apt install ./Wb-mcu-fw-flasher_1.0.3_amd64-all.deb
apt install ./Wb-mcu-fw-flasher_1.0.3_amd64-all.deb #измените имя пакета, если необходимо
</syntaxhighlight>
 
Для контроллеров других производителей с процессорами ARM Cortex можно воспользоваться Debian-пакетом для Wiren Board: http://releases.contactless.ru/?prefix=stable/stretch/pool/main/w/wb-mcu-fw-flasher/
 
=== Выбор прошивки ===
 
Прошивки публикуются на сайте [http://fw-releases.wirenboard.com/?prefix=fw/ '''fw-releases.wirenboard.com'''] в виде файлов с расширением '''.wbfw'''.
 
Прошивки сгруппированы по версиям и сигнатурам (типам) устройств.
 
Каждое Modbus устройство Wiren Board имеет сигнатуру — наименование аппаратного типа устройства. Перезапись прошивки возможна только при совпадении сигнатур устройства и прошивки.
 
Сигнатура устройства хранится в формате строки из 12 ASCII символов, по одному символу в регистре, и доступна по адресу 290.
Получить можно командой:
 
<syntaxhighlight lang="bash">
echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a A -t3 -r 290 -c 12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
</syntaxhighlight>
</syntaxhighlight>


замените значения <code>/dev/ttyRS485-1</code> на имя устройства шины и '''A''' на адрес устройства.
=== ОС Windows ===
 
Для Windows мы подготовили windows-версию утилиты, которая не требует установки. Скачать можно по ссылке [https://wirenboard.com/wiki/images/d/d1/Wb-mcu-fw-flasher_1.0.3.zip wb-mcu-fw-flasher_1.0.3.zip]
В результате будет выведена строка с сигнатурой, например '''mr6c'''
 
Прошивку вы можете скачать например с помощью команды <code>wget</code>, для mr6c это будет выглядеть следующим образом:
 
<syntaxhighlight lang="bash">
wget http://fw-releases.wirenboard.com/fw/by-signature/mr6c/stable/latest.wbfw
</syntaxhighlight>
 
=== Подготовка устройства ===
Прошивать устройство лучше по стандартному адресу (на который устройство отвечает из основной программы).
 
Так же можно прошивать по широковещательному адресу «0», если у вас одно устройство на шине в режиме загрузчика.
 
Поэтому для прошивки нескольких устройств на шине можно:
#переводить в режим загрузчика (перезагрузкой по питанию или записью в регистр) и прошивать по отдельности с указанием нешироковещательного Modbus-адреса.
#переводить '''по очереди''' в режим загрузчика (перезагрузкой по питанию) и прошивать по адресу 0.
 
* '''Одновременная прошивка''' устройств невозможна — имеющаяся прошивка на устройствах будет испорчена.
* Перевести устройство в бутлоадер по широковещательному адресу 0 — '''нельзя'''!
*'''При прошивке с контроллера остановите wb-mqtt-serial:'''<pre>service wb-mqtt-serial stop</pre>
* Если вместо <code>wb-mqtt-serial</code> используется стороннее ПО, опрашивающее устройства по последовательному порту - остановите это стороннее ПО


== Аргументы командной строки ==
== Аргументы командной строки ==
Строка 95: Строка 59:


== Загрузка прошивки в устройство ==
== Загрузка прошивки в устройство ==
Итого, порядок выглядит так:
Пример работы с утилитой смотрите в статье [[WB Modbus Devices Firmware Update#Загрузка прошивки в устройство | Обновление прошивок на устройствах Wiren Board]].
#При прошивке с контроллера остановите <code>wb-mqtt-serial</code>.
#Подключите устройство к RS-485.
#Скачайте файл прошивки, например, <code>mr6c__1.14.1_master_19c9ca5.wbfw</code>
#Прошейте устройство утилитой wb-mcu-fw-flasher:<pre>wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f mr6c__1.14.1_master_19c9ca5.wbfw</pre>
#После успешной прошивки устройство само выйдет из режима загрузчика и перезапустится в основной программе.
 
Успешный процесс прошивки выглядит так:
<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>
 
Пример ошибки при несовпадении сигнатуры:
<pre>
  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
</pre>

Версия 11:53, 26 мая 2021

Это черновик страницы. Последняя правка сделана 26.05.2021 пользователем A.Degtyarev.


Описание

ВНИМАНИЕ: Мы не рекомендуем использовать эту утилиту для повседневного обновления прошивок устройств, используйте утилиту автоматического обновления wb-mcu-fw-updater.

wb-mcu-fw-flasher — сервисная утилита для modbus-устройств Wiren Board с помощью которой вы сможете сбросить устройство к заводским настройкам или заменить его прошивку.

Установка утилиты

Контроллер 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

Аргументы командной строки

Опции запуска утилиты wb-mcu-fw-flasher:

Параметр Описание Значение по умолчанию
-d Устройство последовательного порта (обязательно)
-f Файл прошивки
-a Адрес Modbus 1
-j Отправить на устройство команду перехода в режим загрузчика
-b Скорость порта (baudrate) 9600
-p Чётность (parity) N
-s Количество стопбитов 2
-r Адрес holding-регистра для перехода в режим загрузчика 129
-D Включить режим отладки
-u Восстановление заводских настроек UART и Modbus адреса
-e Сброс всех настроек до заводских

Загрузка прошивки в устройство

Пример работы с утилитой смотрите в статье Обновление прошивок на устройствах Wiren Board.