|
|
Строка 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>
| |