|
|
Строка 40: |
Строка 40: |
|
| |
|
| == Ручная прошивка устройств == | | == Ручная прошивка устройств == |
| === Выбор прошивки ===
| | Если у контроллера нет доступа в интернет или у вас не получилось обновить прошивку устройства автоматически, вы можете использовать сервисную утилиту [[Wb-mcu-fw-flasher | 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>
| |
| | |
| замените значения <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 для прошивки устройств ===
| |
| | |
| Для установки утилиты '''на контроллер Wiren Board''' выполните команды:
| |
| <syntaxhighlight lang="bash">
| |
| apt update
| |
| apt install wb-mcu-fw-flasher
| |
| </syntaxhighlight>
| |
| | |
| Версия утилиты для '''MS Windows''': [[Media: Wb-mcu-fw-flasher_1.0.3.zip | Wb-mcu-fw-flasher_1.0.3.zip]]
| |
| | |
| Для установки на '''компьютер с 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">
| |
| apt update
| |
| apt install libmodbus5
| |
| 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/
| |
| | |
| Опции запуска утилиты wb-mcu-fw-flasher:
| |
| {| class="wikitable"
| |
| ! Параметр !! Описание !! Значение по умолчанию
| |
| |-
| |
| | -d || Устройство последовательного порта ('''обязательно''') ||
| |
| |-
| |
| | -f || Файл прошивки ||
| |
| |-
| |
| | -a || Адрес Modbus || 1
| |
| |-
| |
| | -j || Отправить на устройство команду перехода в режим загрузчика ||
| |
| |-
| |
| | -b || Скорость порта (baudrate) || 9600
| |
| |-
| |
| | -p || Чётность (parity) || N
| |
| |-
| |
| | -s || Количество стопбитов || 2
| |
| |-
| |
| | -r || Адрес holding-регистра для перехода в режим загрузчика || 129
| |
| |-
| |
| | -D || Включить режим отладки ||
| |
| |-
| |
| | -u || Восстановление заводских настроек UART и Modbus адреса ||
| |
| |-
| |
| | -e || Сброс всех настроек до заводских ||
| |
| |}
| |
| | |
| Пример (устройство в рабочем режиме):
| |
| <syntaxhighlight lang="bash">
| |
| wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f WB-MR-MR6C_MCU3_3_1.9.4.wbfw | |
| </syntaxhighlight>
| |
| | |
| Пример для Windows (устройство в рабочем режиме):
| |
| <syntaxhighlight lang="bash">
| |
| wb-mcu-fw-flasher.exe -j -d COM10 -a 25 -f WB-MR-MR6C_MCU3_3_1.9.4.wbfw
| |
| </syntaxhighlight>
| |
| | |
| Здесь COM10 — имя виртуального последовательного порта, которое присвоено адаптеру USB RS-485.
| |
| | |
| Пример для устройства с нестандартными настройками UART (со скоростью порта 115200):
| |
| <syntaxhighlight lang="bash">
| |
| wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f WB-MR-MR6C_MCU3_3_1.9.4.wbfw -b 115200
| |
| </syntaxhighlight>
| |
| | |
| === Порядок действий для ручной прошивки ===
| |
| | |
| Итого, порядок выглядит так:
| |
| #При прошивке с контроллера остановите <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>
| |