Как прошить плату своим файлом
Прошивалка открывает порт платы через Web Serial, сбрасывает плату в загрузчик и узнаёт её: у ESP32 и ESP8266 чип, ревизию и размер flash, у Arduino чип по подписи, загрузчик и скорость. ESP шьётся через esptool-js от Espressif со сжатием и проверкой MD5, Arduino Uno, Nano и Mega через свой загрузчик по протоколу STK500 с чтением записанного обратно, Pico файлом .uf2 на диск платы. Файл читается в браузере и остаётся на компьютере.
Адрес для .bin прошивалка выбирает по содержимому файла: полный образ, программа или загрузчик. Несколько .bin, выбранных сразу, встают в таблицу с адресами по чипу платы и по таблице разделов из того же набора, адрес в ней правится вручную.
Примеры
- Три файла из PlatformIO (bootloader.bin, partitions.bin и firmware.bin) для ESP32 встают на 0x1000, 0x8000 и 0x10000 и пишутся за один раз. Для ESP32-C3 загрузчик из того же набора уйдёт на 0x0.
- Скетч .hex для Nano с CH340 прошивалка пробует на 115200 бод (новый загрузчик Optiboot) и на 57600 бод (Old Bootloader) и пишет на той скорости, на которой загрузчик ответил.
Частые ошибки
- Вписывают в настройках адрес 0x0 для файла программы без загрузчика. Программа затирает загрузчик, и плата не запускается, пока на неё не запишут полный образ.
- Берут файл для другого чипа, например для ESP32 при подключённой ESP32-C3. Прошивалка видит чип в заголовке образа и запись не начинает.
Частые вопросы
- Как перевести ESP32 в режим прошивки?
- Обычно плата входит в загрузчик по сигналам DTR и RTS переходника. Если прошивалка пишет «Плата не вошла в режим прошивки», зажмите BOOT, нажмите и отпустите EN (RESET), отпустите BOOT и сразу нажмите «Ещё раз». У NodeMCU и Wemos D1 mini на ESP8266 кнопки называются FLASH и RST.
- По какому адресу шить .bin: 0x0, 0x1000 или 0x10000?
- Полный образ (merged bin: загрузчик, таблица разделов и программа) пишется с 0x0, программа без загрузчика с 0x10000, таблица разделов с 0x8000. Отдельный загрузчик идёт на 0x1000 у ESP32 и S2, на 0x2000 у C5 и P4 и на 0x0 у S3, C3, C6 и H2, так их раскладывает esptool. Поле «Адрес записи (ESP)» в настройках нужно для своей раскладки.
- Что делать, если Failed to connect или порта нет в списке?
- Возьмите кабель с линиями данных и подключите плату к разъёму компьютера без хаба. Если в диспетчере устройств плата без драйвера, поставьте драйвер переходника: CH340 у WCH, CP2102 у Silicon Labs. Откройте страницу в Chrome, Edge или Opera на компьютере и войдите в загрузчик кнопками BOOT и EN.
- Можно ли прошить плату с телефона?
- С iPhone и iPad нельзя: в браузерах там нет ни Web Serial, ни WebUSB. В браузере на Android без Web Serial прошивалка открывает плату через WebUSB, и так работают только переходники CH340 и CH341, подключённые кабелем OTG.
- Как залить скетч в Arduino Nano без Arduino IDE?
- Нужен готовый .hex: его даёт автор проекта или Arduino IDE командой «Скетч → Экспорт бинарного файла», берите файл без with_bootloader в имени. Старый загрузчик (Old Bootloader) прошивалка находит сама. Если плата молчит, нажмите «Ещё раз» и сразу RESET.
- Как прошить Raspberry Pi Pico файлом .uf2?
- Зажмите BOOTSEL и, не отпуская, подключите Pico кабелем: появится диск RPI-RP2, у Pico 2 диск RP2350. В Chrome, Edge и Opera прошивалка записывает файл на этот диск, в других браузерах перетащите .uf2 на диск сами. С прошивкой Arduino или MicroPython Pico переходит в этот режим по ссылке «Перевести в BOOTSEL через порт».