|
|
(не показана 31 промежуточная версия 5 участников) |
Строка 1: |
Строка 1: |
| {{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 === |
| === Установка утилиты === | | Утилита есть в репозитории контроллера, поэтому обновите список пакетов и установите ее: |
| Для установки утилиты '''на контроллер Wiren Board''' выполните команды:
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| apt update | | apt update |
Строка 14: |
Строка 14: |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| Версия утилиты для '''MS Windows''': [[Media: Wb-mcu-fw-flasher_1.0.3.zip | Wb-mcu-fw-flasher_1.0.3.zip]]
| | === ОС Linux === |
| | Скачайте файл для вашего устройства с расширением '''.deb''' в [https://github.com/wirenboard/wb-mcu-fw-flasher/releases нашем репозитории]. |
|
| |
|
| Для установки на '''компьютер с Debian''' скачайте пакет — [[Media: 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 ./wb-mcu-fw-flasher_1.3.1_amd64.deb #измените имя пакета, если необходимо |
| apt install ./Wb-mcu-fw-flasher_1.0.3_amd64-all.deb | |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| Для контроллеров других производителей с процессорами ARM Cortex можно воспользоваться Debian-пакетом для Wiren Board: http://releases.contactless.ru/?prefix=stable/stretch/pool/main/w/wb-mcu-fw-flasher/
| | === ОС Windows === |
| | | [[Image: wb-mcu-fw-flasher-in-windows-cmd.png|400px|thumb|right| Утилита wb-mcu-fw-flasher выводит справку в командной строке Windows]] |
| === Выбор прошивки === | |
| | |
| Прошивки публикуются на сайте [http://fw-releases.wirenboard.com/?prefix=fw/ '''fw-releases.wirenboard.com'''] в виде файлов с расширением '''.wbfw'''.
| |
|
| |
|
| Прошивки сгруппированы по версиям и сигнатурам (типам) устройств.
| | Скачайте файл с расширением '''.exe''' в [https://github.com/wirenboard/wb-mcu-fw-flasher/releases нашем репозитории]. Установка не требуется. |
| | |
| Каждое 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>
| |
| | |
| замените значения <code>/dev/ttyRS485-1</code> на имя устройства шины и '''A''' на адрес устройства.
| |
| | |
| В результате будет выведена строка с сигнатурой, например '''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> используется стороннее ПО, опрашивающее устройства по последовательному порту - остановите это стороннее ПО
| |
|
| |
|
| == Аргументы командной строки == | | == Аргументы командной строки == |
| Опции запуска утилиты wb-mcu-fw-flasher: | | Опции запуска утилиты wb-mcu-fw-flasher. |
| {| class="wikitable" | | {| class="wikitable" |
| ! Параметр !! Описание !! Значение по умолчанию | | ! Параметр !! Описание !! Значение по умолчанию |
Строка 76: |
Строка 39: |
| | -a || Адрес Modbus || 1 | | | -a || Адрес Modbus || 1 |
| |- | | |- |
| | -j || Отправить на устройство команду перехода в режим загрузчика || | | | -j || Отправить на устройство команду перехода в режим загрузчика со стандартными настройками соединения 9600N2|| |
| | |- |
| | | -J || Отправить на устройство команду перехода в режим загрузчика с текущими настройками соединения (доступно начиная с версии 1.3.0) || |
| |- | | |- |
| | -b || Скорость порта (baudrate) || 9600 | | | -b || Скорость порта (baudrate) || 9600 |
Строка 90: |
Строка 55: |
| | -u || Восстановление заводских настроек UART и Modbus адреса || | | | -u || Восстановление заводских настроек UART и Modbus адреса || |
| |- | | |- |
| | -e || Сброс всех настроек до заводских || | | | -e || Стирает все настройки и калибровочные значения: датчики начнут показывать ерунду. <br>Не используйте, если не знаете, что делаете.|| |
| | |- |
| | | -w || Стирает все настройки устройства, хранящиеся во Flash памяти. Доступно с версии загрузчика 1.2.0. <br>Не используйте, если не знаете, что делаете.|| |
| |} | | |} |
|
| |
|
| == Прошивка устройств == | | == Типичные сценарии использования == |
|
| |
|
| === Выбор прошивки ===
| | О том как выбрать файл прошивки для устройства, подготовить устройство к прошивке и примеры, смотрите в статье [[WB Modbus Devices Firmware Update#Ручное обновление | Обновление прошивок на устройствах Wiren Board]]. |
|
| |
|
| Прошивать устройство лучше по стандартному адресу (на который устройство отвечает из основной программы).
| | === Обновление прошивки, если устройство в обычном режиме === |
| | | Чтобы прошить устройств в обычном режиме, его нужно перевести в режим загрузчика опцией <code>-j</code>: |
| Так же можно прошивать по широковещательному адресу «0», если у вас одно устройство на шине в режиме загрузчика.
| | <syntaxhighlight lang="bash"> |
| | | wb-mcu-fw-flasher -j -d <порт, на котором находится устройство> -a <modbus адрес устройства> -f <файл с прошивкой устройства.wbfw> |
| Поэтому для прошивки нескольких устройств на шине можно:
| | </syntaxhighlight> |
| #переводить в режим загрузчика (перезагрузкой по питанию или записью в регистр) и прошивать по отдельности с указанием нешироковещательного Modbus-адреса.
| |
| #переводить '''по очереди''' в режим загрузчика (перезагрузкой по питанию) и прошивать по адресу 0.
| |
| | |
| * '''Одновременная прошивка''' устройств невозможна — имеющаяся прошивка на устройствах будет испорчена.
| |
| * Перевести устройство в бутлоадер по широковещательному адресу 0 — '''нельзя'''!
| |
| *'''При прошивке с контроллера остановите wb-mqtt-serial:'''<pre>service wb-mqtt-serial stop</pre>
| |
| * Если вместо <code>wb-mqtt-serial</code> используется стороннее ПО, опрашивающее устройства по последовательному порту - остановите это стороннее ПО
| |
|
| |
|
| === Загрузка прошивки в устройство === | | === Обновление прошивки, если устройство в режиме загрузчика === |
| Итого, порядок выглядит так:
| | Если устройство находится в режиме загрузчика, то дополнительно готовить его не нужно: |
| #При прошивке с контроллера остановите <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"> | | <syntaxhighlight lang="bash"> |
| wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 1 -f mr6c__1.14.1_master_19c9ca5.wbfw
| | wb-mcu-fw-flasher -d <порт, на котором находится устройство> -a <modbus адрес устройства> -f <файл с прошивкой устройства.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> |
|
| |
|
| Пример ошибки при несовпадении сигнатуры:
| | == Полезные ссылки == |
| <pre>
| | * [[WB Modbus Devices Firmware Update | Обновление прошивки Modbus-устройств Wiren Board]] |
| Sending info block...
| | * [[Firmware Repository For Wiren Board Modbus Devices |Репозиторий прошивок для Modbus-устройств Wiren Board]] |
| 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_amd64.deb Скачать wb-mcu-fw-flasher для ОС Linux] |
| Data format is invalid or firmware signature doesn't match the device
| | * [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] |
| </pre>
| |