Bootloader: различия между версиями

переписал всё
(переписал всё)
Строка 37: Строка 37:
Есть несколько способов обновления загрузчика:
Есть несколько способов обновления загрузчика:


=== Автоматически через <code>wb-mcu-fw-updater</code> ===
=== С контроллера Wiren Board ===


Для использования этого способа нужен контроллер Wiren Board, подключенный к интернету.
Загрузчик обновляется из консоли контроллера Wiren Board утилитой [[wb-mcu-fw-updater]], которой для работы нужен доступ в интернет. Если интернета нет, используйте другой способ.


Рекомендуется обновить пакеты для получения актуальной версии wb-mcu-fw-updater: <code>apt update; apt upgrade</code>
Учитывайте, что утилита учитывает [[ Wiren_Board_Software#Кратко_о_релизах | установленный на контроллер релиз ПО ]], то есть вы не сможете зашить тестовую версию загрузчика, если на контроллере стабильный релиз.


Для запуска обновления загрузчика одного устройства нужно ввести команду (подставить нужный порт и адрес):
Перед обновлением загрузчика, обновите прошивку контроллера через apt или другим способом по [[Wiren_Board_Software#update |инструкциям]].


<syntaxhighlight lang="bash">
==== Обновление загрузчика одного устройства ====
 
Процесс:
# Подключитесь к контроллеру по [[SSH]].
# Запустите команду, заменив в ней порт и адрес:
#:<syntaxhighlight lang="bash">
wb-mcu-fw-updater update-bl /dev/ttyRS485-1 -a1
wb-mcu-fw-updater update-bl /dev/ttyRS485-1 -a1
</syntaxhighlight>
</syntaxhighlight>


В результате будет выполнена проверка наличия обновления загрузчика, скачивание нужного файла обновления, обновление загрузчика и установка актуальной версии прошивки в соответствии с [[ Wiren_Board_Software#Кратко_о_релизах | релизом ПО контроллера ]].
Утилита считает модель устройства, проверит наличие обновления прошивки загрузчика, скачает обновление и зашьёт его в устройство.


Также в утилите <code>wb-mcu-fw-updater</code> есть автоматический режим обновления прошивок всех устройств.
==== Обновление загрузчика всех устройств ====


Начиная с версии 1.10.8 в этом режиме перед началом процесса обновления прошивки утилита проверяет необходимость обновления загрузчика и выводит на экран предложение обновить загрузчик, на которое можно ответить <code>y</code> для обновления загрузчика.
Начиная с версии 1.10.8 утилита wb-mcu-fw-updater умеет в режиме обновление прошивок устройств проверять и версии загрузчика, а потом обновлять его:
# Подключитесь к контроллеру по [[SSH]].
# Запустите команду:
#:<syntaxhighlight lang="bash">
wb-mcu-fw-updater update-bl /dev/ttyRS485-1 -a1
</syntaxhighlight>
# Если есть новые версии загрузчика для устройств, утилита запросит подтверждение на обновление загрузчика, нужно ответить <code>y</code>. Если откажетесь, прошивка обновиться, но загрузчик останется старым.


Пример:
Пример:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
wb-mcu-fw-updater update-all
wb-mcu-fw-updater update-all
Строка 67: Строка 77:
</syntaxhighlight>
</syntaxhighlight>


=== Вручную через <code>wb-mcu-fw-flasher</code> ===
=== С компьютера и других устройств ===
 
==== Установка утилиты ====
Утилита позволяет обновлять прошивки и загрузчики Modbus-устройств в ручном режиме. При этом обновление может быть запущено как с контроллера Wiren Board, так и с ПК. Для работы утилиты не требуется доступ в интернет, однако нужно скачать файл обновления прошивки или загрузчика любым удобным способом.
Если у вас нет контроллера Wiren Board или на нём нет интернета, можно обновить загрузчик в ручном режиме утилитой wb-mcu-fw-flasher, которую надо установить по [[wb-mcu-fw-flasher#install|инструкции]].
 
Чтобы выбрать подходящие файлы для обновления загрузчика и прошивки, нужно считать сигнатуру устройства (подставьте верный адрес устройства и порт):


==== Чтение сигнатуры ====
Для начала нам нужно считать сигнатуру устройства, чтобы понимать, какие загрузчик и прошивки нужны:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x03 -r290 -c12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x03 -r290 -c12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
</syntaxhighlight>
</syntaxhighlight>


В результате на экран будет выведена строка вида <code>mwac0</code>
В результате на экран будет выведена строка вида <code>mwac0</code> — это и есть сигнатура.
 
Для скачивания файла обновления загрузчика нужно перейти по ссылке https://fw-releases.wirenboard.com/?prefix=bootloader/by-signature/. Далее выбрать соответствующую сигнатуру, раздел <code>main</code> и скачать файл <code>latest.wbfw</code>.
 
Файлы прошивок находятся по адресу https://fw-releases.wirenboard.com/?prefix=fw/by-signature/. Нужный файл прошивки выбирается аналогично: <code>сигнатура/main/latest.wbfw</code>. Если вам необходима конкретная версия прошивки, можно скачать именно её.


Теперь, когда файлы обновления загрузчика и прошивки скачаны, можно приступить к процессу обновления.
==== Скачивание файлов ====
Чтобы скачать файл с загрузчиком, перейдите по адресу https://fw-releases.wirenboard.com/?prefix=bootloader/by-signature/ ,выберите папку с полученной выше сигнатурой, далее раздел <code>main</code> и скачайте файл <code>latest.wbfw</code>.


Сначала нужно запустить обновление загрузчика:
Чтобы скачать прошивку, перейдите по адресу https://fw-releases.wirenboard.com/?prefix=fw/by-signature/. ,выберите папку с полученной выше сигнатурой, далее раздел <code>main</code> и скачайте файл <code>latest.wbfw</code>. Если вам необходима конкретная версия прошивки, можно скачать именно её.


<syntaxhighlight lang="bash">
==== Прошивка ====
Теперь, когда файлы обновления загрузчика и прошивки скачаны, их надо зашить в устройство:
# Запустите обновление загрузчика, замените порт <code>/dev/ttyRS485-1</code>, скорость <code>-b</code>, адрес <code>-a</code> и имя файла на свои:
#:<syntaxhighlight lang="bash">
wb-mcu-fw-flasher -d /dev/ttyRS485-1 -b9600 -a1 -f wb-bootloader-updater_mwac0__1.4.1_master_e676613.wbfw -j
wb-mcu-fw-flasher -d /dev/ttyRS485-1 -b9600 -a1 -f wb-bootloader-updater_mwac0__1.4.1_master_e676613.wbfw -j
</syntaxhighlight>
</syntaxhighlight>
 
#: утилита сотрёт прошивку и зашьёт новый загрузчик.
После завершения процесса обновления загрузчика прошивка из устройства будет удалена и устройство будет постоянно находиться в загрузчике. Теперь нужно вернуть прошивку:
# Запустите обновление прошивки, замените порт <code>/dev/ttyRS485-1</code>, скорость <code>-b</code>, адрес <code>-a</code> и имя файла на свои:
 
#: <syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
wb-mcu-fw-flasher -d /dev/ttyRS485-1 -b9600 -a1 -f mwac0__1.21.1_main_ac00010.wbfw
wb-mcu-fw-flasher -d /dev/ttyRS485-1 -b9600 -a1 -f mwac0__1.21.1_main_ac00010.wbfw
</syntaxhighlight>
</syntaxhighlight>
 
#: так как устройство со стёртой прошивкой находится в загрузчике, то в команде выше нет ключа <code>-j</code>.
Обратите внимание, что ключа <code>-j</code> (переход в загрузчик) нет, т.к. устройство уже в загрузчике. Описание параметров утилиты <code>wb-mcu-fw-flasher</code> можно увидеть, запустив её без параметров.


Более подробно про ручное обновление прошивки читайте в статье [[ WB_Modbus_Devices_Firmware_Update#Ручное_обновление | Обновление прошивки Modbus-устройств Wiren Board ]]
Более подробно про ручное обновление прошивки читайте в статье [[ WB_Modbus_Devices_Firmware_Update#Ручное_обновление | Обновление прошивки Modbus-устройств Wiren Board ]]