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

Материал из Wiren Board
(не показано 27 промежуточных версий 5 участников)
Строка 1: Строка 1:
{{Draft}}
{{DISPLAYTITLE: Сервисная утилита wb-mcu-fw-flasher}}
{{DISPLAYTITLE: Сервисная утилита wb-mcu-fw-flasher}}
== Общая информация ==
Здесь описывается <code>wb-mcu-fw-flasher</code> — сервисная утилита для modbus-устройств Wiren Board с помощью которой вы сможете сбросить устройство к заводским настройкам или заменить его прошивку.


Краткую инструкцию по прошивке устройств читайте в статье [[WB Modbus Devices Firmware Update | Обновление прошивок на устройствах Wiren Board]].
== Описание ==
'''ВНИМАНИЕ:''' Мы не рекомендуем использовать эту утилиту для повседневного обновления прошивок устройств, используйте утилиту автоматического обновления [[wb-mcu-fw-updater]].


== Установка утилиты ==
<code>wb-mcu-fw-flasher</code> — сервисная утилита для modbus-устройств Wiren Board с помощью которой вы сможете сбросить устройство к заводским настройкам или заменить его прошивку.
{{Anchor|install}}
 
=== Контроллер Wiren Board ===
== Подготовка к работе ==
Утилита есть в репозитории контроллера, поэтому обновите список пакетов и установите ее:
{{Wbincludes:Wb-mcu-fw-flasher Install}}
<syntaxhighlight lang="bash">
 
apt update
{{Wbincludes:Select Device Firmware}}
apt install wb-mcu-fw-flasher
</syntaxhighlight>


=== ОС Linux ===
=== Подготовка устройства ===
Скачайте файл для вашего устройства с расширением '''.deb''' в [https://github.com/wirenboard/wb-mcu-fw-flasher/releases нашем репозитории].
Прошивать устройство лучше по стандартному адресу (на который устройство отвечает из основной программы).


Для установки, выполните команды:
Так же можно прошивать по широковещательному адресу «0», если у вас одно устройство на шине в режиме загрузчика.
<syntaxhighlight lang="bash">
apt update
apt install ./wb-mcu-fw-flasher_1.3.1_amd64.deb #измените имя пакета, если необходимо
</syntaxhighlight>


=== ОС Windows ===
Поэтому для прошивки нескольких устройств на шине можно:
[[Image: wb-mcu-fw-flasher-in-windows-cmd.png|400px|thumb|right| Утилита wb-mcu-fw-flasher выводит справку в командной строке Windows]]
#переводить в режим загрузчика (перезагрузкой по питанию или записью в регистр) и прошивать по отдельности с указанием нешироковещательного Modbus-адреса.
#переводить '''по очереди''' в режим загрузчика (перезагрузкой по питанию) и прошивать по адресу 0.


Скачайте файл с расширением '''.exe''' в [https://github.com/wirenboard/wb-mcu-fw-flasher/releases нашем репозитории]. Установка не требуется.
* '''Одновременная прошивка''' устройств невозможна — имеющаяся прошивка на устройствах будет испорчена.
* Перевести устройство в бутлоадер по широковещательному адресу 0 — '''нельзя'''!
*'''При прошивке с контроллера остановите wb-mqtt-serial:'''<pre>service wb-mqtt-serial stop</pre>
* Если вместо <code>wb-mqtt-serial</code> используется стороннее ПО, опрашивающее устройства по последовательному порту - остановите это стороннее ПО


== Аргументы командной строки ==
== Аргументы командной строки ==
Опции запуска утилиты wb-mcu-fw-flasher.
Опции запуска утилиты wb-mcu-fw-flasher:
{| class="wikitable"
{| class="wikitable"
! Параметр !! Описание !! Значение по умолчанию
! Параметр !! Описание !! Значение по умолчанию
Строка 39: Строка 37:
| -a || Адрес Modbus || 1
| -a || Адрес Modbus || 1
|-
|-
| -j || Отправить на устройство команду перехода в режим загрузчика со стандартными настройками соединения 9600N2||
| -j || Отправить на устройство команду перехода в режим загрузчика ||
|-
| -J || Отправить на устройство команду перехода в режим загрузчика с текущими настройками соединения (доступно начиная с версии 1.3.0) ||
|-  
|-  
| -b || Скорость порта (baudrate) || 9600
| -b || Скорость порта (baudrate) || 9600
Строка 55: Строка 51:
| -u || Восстановление заводских настроек UART и Modbus адреса ||
| -u || Восстановление заводских настроек UART и Modbus адреса ||
|-
|-
| -e || Стирает все настройки и калибровочные значения: датчики начнут показывать ерунду. <br>Не используйте, если не знаете, что делаете.||
| -e || Сброс всех настроек до заводских ||
|-
| -w || Стирает все настройки устройства, хранящиеся во Flash памяти. Доступно с версии загрузчика 1.2.0. <br>Не используйте, если не знаете, что делаете.||
|}
|}


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


Успешный процесс прошивки выглядит так:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
wb-mcu-fw-flasher -d <порт, на котором находится устройство> -a <modbus адрес устройства> -f <файл с прошивкой устройства.wbfw>
  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>


==  Полезные ссылки ==
Пример ошибки при несовпадении сигнатуры:
* [[WB Modbus Devices Firmware Update | Обновление прошивки Modbus-устройств Wiren Board]]
<pre>
* [[Firmware Repository For Wiren Board Modbus Devices |Репозиторий прошивок для Modbus-устройств Wiren Board]]
  Sending info block...
* [https://github.com/wirenboard/wb-mcu-fw-flasher/releases/download/v1.3.1/wb-mcu-fw-flasher_1.3.1_amd64.deb Скачать wb-mcu-fw-flasher для ОС Linux]
  Error while sending info block: Slave device or server failure
* [https://github.com/wirenboard/wb-mcu-fw-flasher/releases/download/v1.3.1/wb-mcu-fw-flasher_1.3.1.exe Скачать wb-mcu-fw-flasher для ОС Windows]
  Data format is invalid or firmware signature doesn't match the device
</pre>

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

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


Описание

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

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

Подготовка к работе

Wbincludes:Wb-mcu-fw-flasher Install

Wbincludes:Select Device Firmware

Подготовка устройства

Прошивать устройство лучше по стандартному адресу (на который устройство отвечает из основной программы).

Так же можно прошивать по широковещательному адресу «0», если у вас одно устройство на шине в режиме загрузчика.

Поэтому для прошивки нескольких устройств на шине можно:

  1. переводить в режим загрузчика (перезагрузкой по питанию или записью в регистр) и прошивать по отдельности с указанием нешироковещательного Modbus-адреса.
  2. переводить по очереди в режим загрузчика (перезагрузкой по питанию) и прошивать по адресу 0.
  • Одновременная прошивка устройств невозможна — имеющаяся прошивка на устройствах будет испорчена.
  • Перевести устройство в бутлоадер по широковещательному адресу 0 — нельзя!
  • При прошивке с контроллера остановите wb-mqtt-serial:
    service wb-mqtt-serial stop
  • Если вместо wb-mqtt-serial используется стороннее ПО, опрашивающее устройства по последовательному порту - остановите это стороннее ПО

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

Опции запуска утилиты 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 Сброс всех настроек до заводских

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

Итого, порядок выглядит так:

  1. При прошивке с контроллера остановите wb-mqtt-serial.
  2. Подключите устройство к RS-485.
  3. Скачайте файл прошивки, например, mr6c__1.14.1_master_19c9ca5.wbfw
  4. Прошейте устройство утилитой wb-mcu-fw-flasher:
    wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f mr6c__1.14.1_master_19c9ca5.wbfw
  5. После успешной прошивки устройство само выйдет из режима загрузчика и перезапустится в основной программе.

Успешный процесс прошивки выглядит так:

   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