← Help contents

Programmer

Flash firmware to ESP32, STM32 and AVR — right from the terminal

The Programmer tab flashes firmware to four families of microcontrollers over the same serial port the rest of the app uses. It talks to the chip's built-in UART bootloader — so all you need is a USB-to-serial adapter, no external hardware programmer (JTAG/SWD). Pick a chip, pick a file, click Flash; you do not leave ComIO.Studio and you do not open esptool or STM32CubeProgrammer.

Which chips

Four families, each with its own backend:

  • ESP32 (all variants) — through the espflash crate.
  • ESP8266 — through espflash as well, on a separate code path.
  • STM32 — through the chip's UART bootloader (specification AN3155).
  • AVR — through the STK500v1 protocol.

The list of supported chips comes with the app — pick one from the target list. Each chip carries its own flashing instructions (boot mode, pinout, what to connect) in the info panel.

The Flash tab

The Programmer tab sits on the right side of the window. It has three sections that are always visible: the chip and file setup at the top, the actions in the middle, and a terminal of its own at the bottom — the programmer writes its progress there, separate from the main terminal.

The Programmer tab

The Programmer tab — chip and segments at the top, actions in the middle, the programmer's own terminal at the bottom

Segments — where each file goes

A chip's flash is addressed in segments. Each segment has an address and a file to write there. The app fills in the standard layout for each family when you pick a chip:

  • ESP32: Bootloader @ 0x1000, Partition Table @ 0x8000, Application @ 0x10000.
  • ESP8266: Bootloader @ 0x00000, Firmware @ 0x01000, Init Data @ 0xFC000, plus two blank segments for RF calibration (0x7E000) and system parameters (0xFE000).
  • STM32: Firmware @ 0x08000000.
  • AVR: Firmware @ 0x0.

Pick a file for each segment you actually want to write — leave the others empty. Addresses are editable, so a non-standard layout is just a typed number. For ESP32/ESP8266 you can add more segments with a + button. The button next to the family opens target-specific settings: flash mode and frequency for ESP, page size for AVR, full erase and the protection toggles for STM32.

Actions

  • Detect — read the chip's signature and show its name, flash size and features (MAC for ESP).
  • Flash — write the files you picked to the segments you picked. Runs in the background with a progress bar, so the app stays usable.
  • Erase — wipe the whole flash.
  • Read — read the flash back to a file on your disk.
  • Info — read chip info (signature, flash size).
  • Write unprotect / Readout unprotect — remove the chip's write and readout protections (STM32). Readout unprotect mass-erases the chip.

Progress and the programmer's terminal

Flashing is asynchronous — the bar fills and messages scroll in the programmer's terminal at the bottom of the tab. The main terminal is not touched; the programmer talks to you in its own window, with its own log lines (LOG_PROG, OK_PROG, WARN_PROG, ERR_PROG — see the Terminal chapter). When the flash is done, the bar settles; on error, the message tells you what went wrong.

Boot mode

Most boards need to be put into a boot mode before they will accept a flash. The info panel for each chip says how:

  • ESP32 / ESP8266 — mostly automatic: ComIO.Studio toggles RTS and DTR for you. On a board without an auto-reset circuit, hold GPIO0 LOW and reset.
  • STM32 — set BOOT0 HIGH, then reset.
  • AVR — reset the board; the bootloader activates on its own.

Example: ESP8266 AT firmware (1 MB flash)

Segment 1: Bootloader    @ 0x00000  → boot_v1.7.bin
Segment 2: Firmware      @ 0x01000  → user1.1024.new.2.bin
Segment 3: Init Data     @ 0xFC000  → esp_init_data_default.bin
Segment 4: Blank (RF)    @ 0x7E000  → blank.bin
Segment 5: Blank (sys)   @ 0xFE000  → blank.bin
💡 DevKit boards with an auto-reset circuit do not require manual boot mode — ComIO.Studio toggles RTS/DTR lines automatically.
💡 Programmer can also be driven from outside. The AI assistant and outside MCP clients can list targets, read the per-target guide, detect, flash, erase and read through the programmer tools.