Вот подробное объяснение каждого файла, который появился после успешной компиляции:
[Основные прошивочные файлы (самые важные)]
firmware-myvariant2-2.8.0.84d8c22.factory.bin
- Назначение: полный образ прошивки для первичной установки
- Что включает: всё необходимое для первого прошивания (загрузчик, приложение, разделы)
- Когда использовать:
- Первая прошивка нового устройства
- Полная переустановка системы
- Восстановление "кирпича"
- Как прошить:
cd .pio/build/myvariant2
esptool.py write_flash 0x0 firmware-myvariant2-2.8.0.84d8c22.factory.bin
firmware-myvariant2-2.8.0.84d8c22.bin (App)
- Назначение: только основное приложение (без загрузчика и разделов)
- Что включает: только код прошивки Meshtastic
- Когда использовать: обновление существующей прошивки через OTA или через PlatformIO
- Как прошить: через веб-интерфейс Flasher или `pio run -t upload`
[Системные файлы]
bootloader.bin
- Назначение: загрузчик системы
- Что делает: инициализирует оборудование, загружает основную прошивку
- Когда нужен: обычно включён в `.factory.bin`, отдельно используется редко
partitions.bin
- Назначение: таблица разделов flash-памяти
- Что определяет: где и какие данные хранятся (OTA разделы, файловая система, настройки)
- Важно: ваша конфигурация `board_build.partitions = default_8MB.csv` определила эту таблицу
littlefs-myvariant2-2.8.0.84d8c22.bin
- Назначение: образ файловой системы LittleFS
- Что хранит:
- Веб-интерфейс
- Статические файлы
- Конфигурации по умолчанию
- Объём: 8MB раздел (согласно вашей конфигурации)
Отладочные файлы
*.elf (Executable and Linkable Format)
- Назначение: исполняемый файл с отладочной информацией
- Когда нужен:
- Отладка через GDB
- Анализ дампа памяти
- Отладка креш-логов
*.map
- Назначение: карта памяти - где расположены функции и переменные
- Использование:
- Оптимизация размера прошивки
- Отладка переполнения памяти
- Поиск "тяжёлых" функций
- Полезно: при ошибках `not enough memory`
*.mt.json (Meshtastic metadata)
- Назначение: метаданные для системы обновлений Meshtastic
- Содержит: версию, хэши, информацию о совместимости
- Используется: для OTA обновлений и веб-флешера
libFrameworkArduino.a
- Назначение: статическая библиотека Arduino framework
- Что это: скомпилированная основа Arduino для ESP32-S3
- Кэшируется: для ускорения пересборки
[Практические рекомендации]
Для первой прошивки нового устройства:
# Используйте factory.bin
esptool.py --chip esp32s3 --port /dev/ttyUSB0 write_flash 0x0 \
.pio/build/myvariant2/firmware-myvariant2-2.8.0.84d8c22.factory.bin
Для обновления уже работающего устройства:
# Через PlatformIO (автоматически выберет правильный файл)
pio run -e myvariant2 -t upload
или так, с указанием правильного порта:
pio run -e myvariant2 -t upload --upload-port /dev/ttyACM0
Альтернативно можно прошить через веб-интерфейс Meshtastic (использует .bin файл).
Для OTA обновления (по воздуху):
- Используйте файл firmware-myvariant2-2.8.0.84d8c22.bin
- Загрузите через веб-интерфейс устройства
Для отладки после программного сбоя:
- Сохраните `.elf` и `.map` файлы
- Они помогут расшифровать дамп памяти в осмысленные имена функций
[Типичный сценарий прошивки через PlatformIO]
# Сборка и прошивка (автоматически)
pio run -e myvariant2 -t upload
Что происходит:
1. Компиляция всех файлов
2. Линковка в .elf
3. Конвертация в .bin
4. Прошивка bootloader.bin, partitions.bin, app.bin
Важно: *.factory.bin - это комбинация bootloader.bin + partitions.bin + firmware.bin. Именно этот файл рекомендуется для начальной прошивки, так как он гарантирует правильную конфигурацию всех разделов.