1. Выберите в меню File -> New -> Espressif IDF Project, откроется окно, где нужно указать произвольное имя для проекта, например hw.
Кликните Next.
2. Поставьте галочку "Create a project using one of the template". Выберите проект hello_world. Кликните Finish.
Примечание: завершение шага 2 автоматически создаст папку hello_world для проекта в рабочем каталоге (по умолчанию это каталог workspace, который находится в каталоге установки ESP-IDF, у меня это папка m:\Espressif\frameworks\esp-idf-v4.4\workspace\). В рабочем каталоге также находится папка .metadata, где записаны все текущие настройки ESP-IDF. Может быть несколько рабочих каталогов, и между ними можно переключаться, что бывает довольно удобно. Сохраняйте содержимое папки .metadata, это позволит сохранить состояние рабочего окружения при переустановке ESP-IDF, или при переходе на новый компьютер.
3. В окне Project Explorer появится новая строчка наподобие hello_world [esp-idf-v4.4 8153bfe]. Разверните дерево проекта и ознакомьтесь с его содержимым.
4. Подключите вашу платку к компьютеру через порт USB. Это может быть платка с мостом USB-UART CP2104, наподобие MINI132 с установленным модулем ESP-WROOM-32, или VGA32_V1.4 с модулем TTGO T-MICRO32.
После подключения на компьютере появится новый COM-порт. В моем случае это оказался COM12.
Примечание: номер (имя) COM-порта можно узнать в Диспетчере Устройств. Имя COM-порта понадобится, когда будем запускать прошивальщик для взаимодействия с загрузчиком платы.
5. Выберите подходящую цель (target) для компиляции. Для этого кликните на шестеренку в третьем выпадающем списке панели инструментов (on:):
Откроется окно для создания новой цели. В выпадающем списке IDF Target выберите esp32, а в Serial Port выберите порт, который образовался на шаге 4. Кликните Finish.
6. Скомпилируйте проект через меню Project -> Build Project. Через несколько минут проект скомпилируется, процесс компиляции будет отображаться в окне Console.
Примечание: в текущей конфигурации может быть несколько открытых проектов. Например, это могут быть проекты для отдельных библиотек. В этом случае пункт меню Build All (Ctrl+B) выполнит сборку всех проектов.
После завершения отобразится текст со статистикой компиляции:
Generated M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/hello_world.bin
[1011/1011] cmd.exe /C "cd /D M:\Espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build\esp-idf\esptool_py
&& python M:/Espressif/frameworks/esp-idf-v4.4/components/partition_table/check_sizes.py --offset 0x8000 partition
--type app
M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/partition_table/partition-table.bin
M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/hello_world.bin"
hello_world.bin binary size 0x29740 bytes. Smallest app partition is 0x100000 bytes. 0xd68c0 bytes (84%) free.
Build complete (0 errors, 0 warnings): M:\Espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build
m:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe m:\Espressif\frameworks\esp-idf-v4.4\tools\idf_size.py
M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/hello_world.map
Total sizes:
Used static DRAM: 11308 bytes ( 169428 remain, 6.3% used)
.data size: 9028 bytes
.bss size: 2280 bytes
Used static IRAM: 45479 bytes ( 85593 remain, 34.7% used)
.text size: 44452 bytes
.vectors size: 1027 bytes
Used stat D/IRAM: 56787 bytes ( 255021 remain, 18.2% used)
.data size: 9028 bytes
.bss size: 2280 bytes
.text size: 44452 bytes
.vectors size: 1027 bytes
Used Flash size : 115147 bytes
.text : 84543 bytes
.rodata : 30348 bytes
Total image size: 224161 bytes (.bin may be padded larger)
m:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe m:/Espressif/frameworks/esp-idf-v4.4//components/
partition_table/gen_esp32part.py M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/
partition_table/partition-table.bin
Total time taken to build the project: 209 335 ms
7. Теперь осталось прошить нашу первую программу в память микроконтроллера. Для этого используется UART-загрузчик. Выберите в меню Run -> Run (Ctrl+F11). Если не был выбран COM-порт для подключения на шаге 5, то отроется окно, предлагающее выбрать порт.
Процесс вывода сообщений загрузчика будет отображаться в окне Console.
[1/5] cmd.exe /C "cd /D M:\Espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build\esp-idf\esptool_py && python
M:/Espressif/frameworks/esp-idf-v4.4/components/partition_table/check_sizes.py --offset 0x8000 partition --type app
M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/partition_table/partition-table.bin
M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/hello_world.bin"
hello_world.bin binary size 0x29740 bytes. Smallest app partition is 0x100000 bytes. 0xd68c0 bytes (84%) free.
[2/5] Performing build step for 'bootloader'
[1/1] cmd.exe /C "cd /D M:\Espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build\bootloader\esp-idf\esptool_py
&& python M:/Espressif/frameworks/esp-idf-v4.4/components/partition_table/check_sizes.py --offset 0x8000 bootloader
0x1000 M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/bootloader/bootloader.bin"
Bootloader binary size 0x62c0 bytes. 0xd40 bytes (12%) free.
[2/3] cmd.exe /C "cd /D M:\Espressif\frameworks\esp-idf-v4.4\components\esptool_py && M:\Espressif\tools\cmake\3.20.3\
bin\cmake.exe -D IDF_PATH="M:/Espressif/frameworks/esp-idf-v4.4" -D SERIAL_TOOL="python
M:/Espressif/frameworks/esp-idf-v4.4/components/esptool_py/esptool/esptool.py --chip esp32" -D SERIAL_TOOL_ARGS=
"--before=default_reset --after=hard_reset write_flash @flash_args" -D
WORKING_DIRECTORY="M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build" -P
M:/Espressif/frameworks/esp-idf-v4.4/components/esptool_py/run_serial_tool.cmake"
esptool.py esp32 -p COM12 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio
--flash_freq 40m --flash_size 2MB 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin 0x8000 partition_table/
partition-table.bin
esptool.py v3.2-dev
Serial port COM12
Connecting......
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:a1:60:4e:1e:90
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00007fff...
Flash will be erased from 0x00010000 to 0x00039fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Compressed 25280 bytes to 15788...
Writing at 0x00001000... (100 %)
Wrote 25280 bytes (15788 compressed) at 0x00001000 in 0.7 seconds (effective 279.7 kbit/s)...
Hash of data verified.
Compressed 169792 bytes to 89631...
Writing at 0x00010000... (16 %)
Writing at 0x0001afd3... (33 %)
Writing at 0x0002074e... (50 %)
Writing at 0x00025f94... (66 %)
Writing at 0x0002e5ae... (83 %)
Writing at 0x00036946... (100 %)
Wrote 169792 bytes (89631 compressed) at 0x00010000 in 2.4 seconds (effective 576.3 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 103...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (effective 493.7 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Executing action: flash
Running ninja in directory m:\espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build
Executing "ninja flash"...
Done
8. Откройте окно терминала через меню Window -> Show View -> Terminal. Кликните на иконку с монитором, или нажмите комбинацию клавиш Ctrl+Alt+Shift+T.
Откроется окно Launch Terminal, где будет предложено выбрать порт подключения. Выберите порт, который образовался на шаге 4, для кодировки текста выберите UTF-8.
В окне терминала будет отображен лог наподобие следующего:
Executing action: monitor
Running idf_monitor in directory m:\espressif\frameworks\esp-idf-v4.4\workspace\hello_world
Executing "m:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe m:/Espressif/frameworks/esp-idf-v4.4/tools/
idf_monitor.py -p \\.\COM12 -b 115200 --toolchain-prefix xtensa-esp32-elf- --target esp32 --revision 0 --print_filter
m:\espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build\hello_world.elf -m
'm:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe' 'm:\Espressif\frameworks\esp-idf-v4.4\tools\idf.py'"...
←[0;33m--- idf_monitor on \\.\COM12 115200 ---←[0m
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:6612
load:0x40078000,len:14780
load:0x40080400,len:3792
0x40080400: _init at ??:?
entry 0x40080694
I (28) boot: ESP-IDF v4.4 2nd stage bootloader
I (28) boot: compile time 07:35:41
I (28) boot: chip revision: 1
I (30) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (37) boot.esp32: SPI Speed : 40MHz
I (42) boot.esp32: SPI Mode : DIO
I (47) boot.esp32: SPI Flash Size : 2MB
I (51) boot: Enabling RNG early entropy source...
I (56) boot: Partition Table:
I (60) boot: ## Label Usage Type ST Offset Length
I (67) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (75) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (82) boot: 2 factory factory app 00 00 00010000 00100000
I (90) boot: End of partition table
I (94) boot_comm: chip revision: 1, min. application chip revision: 0
I (101) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=0778ch ( 30604) map
I (121) esp_image: segment 1: paddr=000177b4 vaddr=3ffb0000 size=02344h ( 9028) load
I (125) esp_image: segment 2: paddr=00019b00 vaddr=40080000 size=06518h ( 25880) load
I (139) esp_image: segment 3: paddr=00020020 vaddr=400d0020 size=14a40h ( 84544) map
I (170) esp_image: segment 4: paddr=00034a68 vaddr=40086518 size=04c90h ( 19600) load
I (179) esp_image: segment 5: paddr=00039700 vaddr=50000000 size=00010h ( 16) load
I (184) boot: Loaded app from partition at offset 0x10000
I (184) boot: Disabling RNG early entropy source...
I (199) cpu_start: Pro cpu up.
I (199) cpu_start: Starting app cpu, entry point is 0x40080fe8
0x40080fe8: call_start_cpu1 at M:/Espressif/frameworks/esp-idf-v4.4/components/esp_system/port/cpu_start.c:156
I (0) cpu_start: App cpu up.
I (213) cpu_start: Pro cpu start user code
I (213) cpu_start: cpu freq: 160000000
I (213) cpu_start: Application information:
I (218) cpu_start: Project name: hello_world
I (223) cpu_start: App version: v4.4
I (228) cpu_start: Compile time: Apr 14 2022 07:34:48
I (234) cpu_start: ELF file SHA256: 3b91a538f4c8b3c7...
I (240) cpu_start: ESP-IDF: v4.4
I (245) heap_init: Initializing. RAM available for dynamic allocation:
I (252) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (258) heap_init: At 3FFB2C30 len 0002D3D0 (180 KiB): DRAM
I (264) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (270) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (277) heap_init: At 4008B1A8 len 00014E58 (83 KiB): IRAM
I (284) spi_flash: detected chip: gd
I (287) spi_flash: flash io: dio
W (291) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k).
Using the size in the binary image header.
I (305) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
Hello world!
This is esp32 chip with 2 CPU core(s), WiFi/BT/BLE, silicon revision 1, 2MB embedded flash
Minimum free heap size: 293260 bytes
Restarting in 10 seconds...
Restarting in 9 seconds...
Restarting in 8 seconds...
Restarting in 7 seconds...
Restarting in 6 seconds...
Restarting in 5 seconds...
Restarting in 4 seconds...
Restarting in 3 seconds...
Restarting in 2 seconds...
Restarting in 1 seconds...
Restarting in 0 seconds...
Restarting now.
ets Jun 8 2016 00:22:57