yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
ESP32 Core Board📖
1. ESP32 Introduction
  • 1. ESP32S3 Overview
  • 2. Environment Setup Introduction
  • 3. Dev Board Introduction
2. ESP-IDF Development Tutorial
1. Before Development
  • 1. Environment Setup (Windows)
  • 2. Environment Setup (Linux)
  • 3. Build and Flash
2. Basic Peripherals
  • 1. LED Control
  • 2. Button Detection
  • 3. Peripheral Interrupts
  • 4. ESP_TIMER
  • 5. GPTIMER
  • 6. Watchdog Timer
  • 7. DMA
  • 8. ADC
  • 9. PWM Breathing LED
  • 10. RGB LED Effects
3. Serial Communication and Storage System
  • 1. Serial UART Communication Experiment
  • 2. I2C_OLED Display Experiment
  • 3. SPI Bus Communication Experiment
  • 4. PSRAM External Memory Experiment
  • 5. Flash Read and Write Experiment
  • 6. USB Emulated Mass Storage Experiment
4. FreeRTOS operating system
  • 1.FreeRTOS Core Concepts Theory
  • 2.Task Creation and Management
  • 3.Queue
  • 4.Binary Semaphore
  • 5.Mutex
  • 6.Event Groups
  • 7.Software Timer
  • 8.Task Scheduler
  • 9.Low Power Mode
  • 10.Deadlock
  • 11.Priority Inversion
5. Network Protocols and Wireless Communication
  • 1. WIFI Network Basics
  • 2. WIFI STA Mode
  • 3. WIFI AP Mode
  • 4. UDP Client Experiment
  • 5. UDP Server Experiment
  • 6. TCP Client Experiment
  • 7. TCP Server Experiment
  • 8. Socket Programming Basics
  • 9. HTTP Client Experiment
  • 10. HTTP Server Experiment
  • 11. MQTT IoT Communication Protocol
  • 12. WIFI OTA Upgrade
  • 13. Bluetooth Fundamentals
  • 14. Bluetooth Slave Mode
  • 15. Bluetooth Master Mode
6. Audio Applications
  • 1.I2S Microphone Recording and U-Disk Playback
  • 2.I2S Audio Playback Experiment
  • 3.Repeater Experiment
7. Xiaozhi AI Voice
  • 1. Burn Xiaozhi Firmware
  • 2. Network and Configuration
  • 3. AI Agent Settings
  • 4. Program Analysis
  • 5. Free Chat
3. Arduino Development Course
1. Before Development
  • 1. Environment Setup
  • 2. Build and Flash
2. Basic Peripherals
  • 1. LED Control
  • 2. Button Detection
  • 3. Peripheral Interrupts
  • 4. ESP_TIMER
  • 5. GPTIMER
  • 6. Watchdog Timer
  • 7. ADC
  • 8. PWM Breathing LED
  • 9. RGB LED Effects
3. Serial Communication and Storage System
  • 1. Serial UART Communication
  • 2. I2C OLED Display
  • 3. SPI Bus Communication
  • 4. Flash Read and Write
  • 5. USB Emulated Mass Storage
4. Network Protocols and Wireless Communication
  • 1. WIFI Network Basics
  • 2. WIFI STA Mode
  • 3. WIFI AP Mode
  • 4. UDP Server Experiment
  • 5. UDP Client Experiment
  • 6. TCP Client Experiment
  • 7. TCP Server Experiment
  • 8. HTTP Client Experiment
  • 9. HTTP Server Experiment
  • 10. MQTT IoT Communication Protocol
  • 11. WIFI OTA Upgrade
  • 12. Bluetooth Fundamentals
  • 13. Bluetooth Slave Mode
  • 14. Bluetooth Master Mode
5. Audio Applications
  • 1.I2S Microphone Recording and U-Disk Playback
  • 2.I2S Audio Playback Experiment
  • 3.Repeater Experiment
4. MicroPython Development Course
1. Before Development
  • 1. Environment Setup
  • 2. Build and Flash
  • 3. Thonny IDE
2. Basic Peripherals
  • 1. LED Control
  • 2. Button Detection
  • 3. Peripheral Interrupts
  • 4. TIMER_IT
  • 5. Watchdog Timer
  • 6. ADC
  • 7. PWM Breathing LED
  • 8. RGB LED Effects
3. Serial Communication and Storage System
  • 1. Serial UART Communication Experiment
  • 2. I2C_OLED Display Experiment
  • 3. SPI Bus Communication Experiment
  • 4. Flash Read and Write Experiment
  • 5. Print Storage
4. Network Protocols and Wireless Communication
  • 1. WIFI Network Basics
  • 2. WIFI STA Mode
  • 3. WIFI AP Mode
  • 4. UDP Client Experiment
  • 5. UDP Server Experiment
  • 6. TCP Client Experiment
  • 7. TCP Server Experiment
  • 8. HTTP Client Experiment
  • 9. HTTP Server Experiment
  • 10. MQTT
  • 11. Bluetooth Fundamentals
  • 12. Bluetooth Slave Mode
  • 13. Bluetooth Master Mode
5. Audio Applications
  • 1. I2S Audio Playback Experiment
  • 2. Repeater Experiment
Download
  • Code
  • Hardware_Info
  • 3D_Model_File
  • Software_Tools
  • VMware
  • VM_File
Download ZIP

Welcome to ESP32 Core Board repository

2. Build and Flash

Flashing Process


Flashing Process1. Overview2. Firmware Selection2.1 Where to Download2.2 Which Firmware to Choose2.3 Version Selection3. Enter Flashing Mode3.1 Automatic Entry3.2 Manual Entry4. GUI Flashing (Flash Download Tool)4.1 Open the Tool4.2 Configure Flashing Parameters4.3 Start Flashing5. Command-Line Flashing (esptool)5.1 Erase Flash5.2 Flash the Firmware5.3 Flashing Multiple bin Files (Example)5.4 View Flash Information6. Verify the Flashing Result6.1 Verify with a Serial Assistant6.2 Verify with Thonny REPL6.3 Troubleshooting Verification Failures7. Common Problems


1. Overview

The ESP32-S3 does not have MicroPython built in; on power-up it only runs the program already stored in Flash. Therefore, the first time you use it, you need to write the MicroPython firmware into the Flash — this process is called flashing.

Flashing essentially writes the .bin firmware file byte by byte into the chip's SPI Flash over the serial port. After flashing is complete, the ESP32-S3 automatically enters MicroPython REPL on every power-up, with no need to flash again.

This chapter introduces two flashing methods:

MethodToolSuitable Scenario
Command-line flashingesptool (pip)Development and debugging; can be scripted for batch operations
GUI flashingFlash Download ToolBeginners; visual configuration makes it hard to make mistakes

For first-time use, try the GUI method first; after you are familiar with the parameters, use the esptool command line for better efficiency.


2. Firmware Selection

2.1 Where to Download

MicroPython officially provides pre-compiled firmware for the ESP32-S3, so you do not need to compile it yourself:

MicroPython ESP32-S3 download page

2.2 Which Firmware to Choose

Firmware TypeFlash RequirementPSRAM Requirement
ESP32_GENERIC_S3≥ 8MBNone / ≤ 2MB Octal PSRAM
ESP32_GENERIC_S3_SPIRAM≥ 8MB≥ 8MB Quad/Octal PSRAM
ESP32_GENERIC_S3_SPIRAM_OCT≥ 8MB≥ 8MB Octal PSRAM

The board used in this tutorial is the ESP32-S3 N16R8 (16MB Flash + 8MB Octal PSRAM); select the GENERIC_S3_SPIRAM_OCT firmware.

If you are not sure about the PSRAM type, download the SPIRAM firmware without the _OCT suffix (compatible with both Quad and Octal).

2.3 Version Selection

Download the latest Stable .bin file. The file name format looks like:

ESP32_GENERIC_S3-SPIRAM_OCT-20260406-v1.28.0.bin
│                   │          │          │
Chip platform   PSRAM/Flash config  Release date  Firmware version

Avoid downloading the Nightly Build; it is not stable and is only suitable for trying out new features.


3. Enter Flashing Mode

Before flashing, the chip must enter Download Boot mode so that the ROM Bootloader waits for serial data.

3.1 Automatic Entry

Most ESP32-S3 development boards support automatic downloading — esptool and Flash Download Tool automatically trigger download mode through the RTS/DTR pin timing, so you can just click to flash.

3.2 Manual Entry

If automatic entry fails (showing "Timed out waiting for packet header"), you need to do it manually:

xxxxxxxxxx
Hold the BOOT key → press the EN key → release BOOT

Timing diagram:

xxxxxxxxxx
BOOT  ──────┐     ┌──────────────────
            └─────┘  (hold)
EN    ──┐    ┌──────────────────────
        └────┘  (press)
                  ← now entering download mode

While holding BOOT, pressing EN resets to the Bootloader; the Bootloader detects BOOT being pulled low and enters download mode.


4. GUI Flashing (Flash Download Tool)

Flash Download Tool is Espressif's official Windows GUI tool, at 6.Software Tools → Firmware flashing tool → flash_download_tool → flash_download_tool_3.9.11.exe.

4.1 Open the Tool

  1. Double-click flash_download_tool_3.9.11.exe

  2. Select ESP32-S3 for chip type and Develop for work mode, then click OK

    Select chip and work mode

  3. The main interface looks like this:

    FlashDownloadTool interface

4.2 Configure Flashing Parameters

① Select the firmware file:

  • Click the ... browse button in the first row and select the downloaded MicroPython .bin file

  • Make sure the start address in the first row is 0x0

② SPI speed:

  • Select 80MHz (the default; good compatibility)

③ SPI mode:

  • Select DIO (dual-line I/O; supported by most boards)

  • If it fails to start after flashing, try QIO (quad-line I/O)

④ Flash size:

  • Select 128Mbit (= 16MB), corresponding to the ESP32-S3 N16R8

⑤ COM port:

  • Select the corresponding port number (COM3 / COM4, etc.)

  • Use the default baud rate 115200 or increase it to 921600 for speed

The higher the serial baud rate, the faster the flashing, but some USB-to-serial chips (especially CH340) are unstable at 921600. If it fails, drop back to 115200 and retry.

4.3 Start Flashing

  1. Confirm the above configuration is correct

  2. Confirm the board is connected and in download mode

  3. Click the START button

  4. When the progress bar completes, FINISH appears and the process is done

After flashing completes, press the RST key on the board to reset and enter MicroPython REPL.


5. Command-Line Flashing (esptool)

esptool is Espressif's official Python CLI flashing tool. The Environment Setup chapter already covered the installation steps (pip install esptool). This section only summarizes the commands for quick reference.

5.1 Erase Flash

xxxxxxxxxx
python -m esptool --chip esp32s3 --port COM3 erase-flash

5.2 Flash the Firmware

xxxxxxxxxx
python -m esptool --chip esp32s3 --port COM8 write_flash -z 0x0 "D:\Micropython\ESP32_GENERIC_S3-SPIRAM_OCT-20260406-v1.28.0.bin"
ParameterDescription
--chip esp32s3Target chip model
--port COM8Serial port number (replace with your actual port)
write-flashWrite to Flash
-z 0x0Firmware start address (ESP32-S3 starts at 0x0)

5.3 Flashing Multiple bin Files (Example)

Some scenarios require flashing multiple bin files at the same time, such as firmware + file system + partition table, using multiple address pairs:

xxxxxxxxxx
esptool --chip esp32s3 --port COM3 write-flash -z \
    0x0        firmware.bin \
    0x8000     partition-table.bin \
    0x10000    littlefs.bin
AddressContent
0x0Firmware (the MicroPython interpreter itself)
0x8000Partition Table
0x10000File system (LittleFS, stores .py scripts)

The MicroPython single-bin firmware already includes the partition table and a blank file system, so normally you only need to flash the 0x0 address. Multiple bins are only used for custom partition scenarios.

5.4 View Flash Information

xxxxxxxxxx
python -m esptool --chip esp32s3 --port COM7 flash_id

Example output:

​x
Connected to ESP32-S3 on COM7:
Chip type:          ESP32-S3 (QFN56) (revision v0.2)
Features:           Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHz, Embedded PSRAM 8MB (AP_3v3)
Crystal frequency:  40MHz
MAC:                a4:cb:8f:c6:b8:64

Stub flasher running.

Flash Memory Information:
=========================
Manufacturer: 46
Device: 4018
Detected flash size: 16MB
Flash type set in eFuse: quad (4 data lines)
Flash voltage set by eFuse: 3.3V

Hard resetting via RTS pin...

View Flash info


6. Verify the Flashing Result

After flashing and resetting, use a serial tool to verify:

6.1 Verify with a Serial Assistant

Open any serial assistant (baud rate 115200), connect to the corresponding COM port, press RST to reset, and you should see:

xxxxxxxxxx
MicroPython v1.28.0 on 2026-04-06; ESP32S3 module with ESP32S3
Type "help()" for more information.
>>>

Shell output

6.2 Verify with Thonny REPL

Connect the ESP32 with Thonny; if >>> appears in the Shell, it is normal.

6.3 Troubleshooting Verification Failures

SymptomPossible Cause
No output on the serial portWrong baud rate; firmware not flashed successfully
Garbled outputBaud rate mismatch (MicroPython defaults to 115200)
Output shows waiting for downloadAccidentally entered download mode and did not reset; press EN to exit
Repeated restarts outputting rst:0x1Flash or PSRAM configuration mismatch (wrong firmware selected)

7. Common Problems

SymptomCauseSolution
Flash Download Tool cannot find the COM portDriver not installedInstall the CH340 driver and reopen the tool
Flashing progress bar stuckThe chip did not enter download modeManually enter download mode with BOOT + EN
Cannot start after flashingFirmware does not match the chipConfirm the firmware is an ESP32_GENERIC_S3 series
esptool reports "command not found"The Python Scripts directory is not in PATHClose and reopen the terminal, or use python -m esptool
Flashing succeeds but PSRAM is unavailableFirmware does not include PSRAM supportSwitch to a SPIRAM version firmware
Flash Download Tool shows "COM port occupied"The serial port is occupied by another programClose the serial assistant, Thonny, Arduino Monitor, etc.
Files in the file system lost after multiple flashesFlashing erased the entire FlashBack up the .py files on the device via Thonny before flashing

Environment Setup
Thonny IDE

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文