demo code
how to use a downloaded project
- replace .vscode/settings.json with your own .vscode/settings.json
- optionally replace .vsconde/c_cpp_properties.json with your own .vscode/c_cpp_properties.json
start a project
example - blink
start from example

commands
COMMANDS - build project
- Select Current Project workspace folder
- *Select current ESP-IDF version * == UART / JTAG / DFU
- ESP-IDF: Select Flash Method
- Select Port to Use (COM, tty, usbserial)
- Select Monitor Port to Use (COM, tty, usbserial)
- Select Project Configuration
- Set Espressif Device Target (IDF_TARGET)
- SDK Configuration Editor (menuconfig)
- Full Clean
- Build Project
- Flash Device
- Monitor Device
- Debug
- ESP-IDF: Build, Flash and Monitor
- Open ESP-IDF Terminal
- Execute Custom Task
- Start/Stop QEMU Server [OpenOCD Server]
Advanced
compile
*******************************************************************************
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,24K,
phy_init,data,phy,0xf000,4K,
factory,app,factory,0x10000,1M,
*******************************************************************************
[75/1063] Building C object esp-idf/esp_driver_i2s/CMakeFiles/__idf_esp_driver_i2s.dir/i2s_tdm.c.obj
compile ninja
-
Executing task: e:\work-data\IDF_tools\tools\ninja\1.12.1\ninja.EXE
[1/4] C:\WINDOWS\system32\cmd.exe /C "cd /D E:\Git...-Arduino/esp-idf-code/blink/blink/build/blink.bin blink.bin binary size 0x270c0 bytes. Smallest app partition is 0x100000 bytes. 0xd8f40 bytes (85%) free. [2/4] Performing build step for 'bootloader' [1/1] C:\WINDOWS\system32\cmd.exe /C "cd /D E:\Git-category\Git-Arduino\esp-idf-code\blink\blink\build\bootloader\esp-idf\esptool_py && e:\work-data\IDF_tools\python_env\idf5.5_py3.11_env\Scripts\python.exe E:/work-data/IDF/v5.5/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x1000 E:/Git-category/Git-Arduino/esp-idf-code/blink/blink/build/bootloader/bootloader.bin" Bootloader binary size 0x6680 bytes. 0x980 bytes (8%) free. [4/4] Completed 'bootloader'
compile summary
Memory Type Usage Summary
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Memory Type/Section ┃ Used [bytes] ┃ Used [%] ┃ Remain [bytes] ┃ Total [bytes] ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ Flash Code │ 67126 │ │ │ │
│ .text │ 67126 │ │ │ │
│ IRAM │ 52151 │ 39.79 │ 78921 │ 131072 │
│ .text │ 51123 │ 39.0 │ │ │
│ .vectors │ 1028 │ 0.78 │ │ │
│ Flash Data │ 31800 │ │ │ │
│ .rodata │ 31544 │ │ │ │
│ .appdesc │ 256 │ │ │ │
│ DRAM │ 10864 │ 6.01 │ 169872 │ 180736 │
│ .data │ 8712 │ 4.82 │ │ │
│ .bss │ 2152 │ 1.19 │ │ │
│ RTC FAST │ 32 │ 0.39 │ 8160 │ 8192 │
│ .force_fast │ 32 │ 0.39 │ │ │
│ RTC SLOW │ 24 │ 0.29 │ 8168 │ 8192 │
│ .rtc_slow_reserved │ 24 │ 0.29 │ │ │
└───────────────────────┴──────────────┴──────────┴────────────────┴───────────────┘
Total image size: 159821 bytes (.bin may be padded larger)
Note: The reported total sizes may be smaller than those in the technical reference manual due to reserved memory and application configuration. The total flash size available for the application is not included by default, as it cannot be reliably determined due to the presence of other data like the bootloader, partition table, and application partition size.
Flash
JTAG == JTAG-dat
DFU == DFU-dat
UART == serial-dat
* Executing task: e:\work-data\IDF_tools\python_env\idf5.5_py3.11_env\Scripts\python.exe e:\work-data\IDF\v5.5\esp-idf\components\esptool_py\esptool\esptool.py -p COM1 -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_freq 40m --flash_size 2MB 0x1000 bootloader/bootloader.bin 0x10000 blink.bin 0x8000 partition_table partition-table.bin
esptool.py v4.9.0
Serial port COM1
Connecting......................................
monitor devices
PS E:\Git-category\Git-Arduino\esp-idf-code\blink\blink> & 'e:\work-data\IDF_tools\python_env\idf5.5_py3.11_env\Scripts\python.exe' 'e:\work-data\IDF\v5.5\esp-idf\tools\idf_monitor.py' -p COM1 -b 115200 --toolchain-prefix xtensa-esp32-elf- --make '''e:\work-data\IDF_tools\python_env\idf5.5_py3.11_env\Scripts\python.exe'' ''e:\work-data\IDF\v5.5\esp-idf\tools\idf.py''' --target esp32 'e:\Git-category\Git-Arduino\esp-idf-code\blink\blink\build\blink.elf'
--- Warning: GDB cannot open serial ports accessed as COMx
--- Using \\.\COM1 instead...
--- esp-idf-monitor 1.7.0 on \\.\COM1 115200
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
SDKCONFIG
- sdkconfig
- sdkconfig.defaults
- sdkconfig.defaults.esp32
- sdkconfig.defaults.esp32c3
- sdkconfig.defaults.esp32c5
- sdkconfig.defaults.esp32c6
- sdkconfig.defaults.esp32c61
- sdkconfig.defaults.esp32h2
- sdkconfig.defaults.esp32p4
- sdkconfig.defaults.esp32s2
- sdkconfig.defaults.esp32s3
✅ Required Files (For ESP32-S3 Only)
| File Name | Required | Description |
|---|---|---|
sdkconfig.defaults.esp32s3 |
✅ | Default configuration specific to ESP32-S3 |
sdkconfig |
✅ | Generated after idf.py menuconfig or first build |
✅ Optional Simplification
If you're only working with ESP32-S3, you can rename:
mv sdkconfig.defaults.esp32s3 sdkconfig.defaults
Then build normally:
idf.py build