Невозможно скомпилировать пример проекта ESP-IDF

Я пытаюсь скомпилировать свой первый пример проекта ESP32. Я установил Visual Studio Code со всеми последними инструментами. (Python, набор инструментов и т. Д.). Я не уверен, что именно мне нужно, так как я новичок в этой среде, так что, возможно, я что-то пропустил.

Я следовал руководству пользователя о том, как создать и скомпилировать первый проект, я использовал проект Blink из папки с примерами.

Вот что я получаю.

> Executing task: cmake -G Ninja .. <

-- Project is not inside a git repository, or git repository has no commits; will not use 'git describe' to determine PROJECT_VER.
-- Building ESP-IDF components for target esp32s2
-- Checking Python dependencies...
Python requirements from C:\Users\dmitryke\esp\esp-idf\requirements.txt are satisfied.
-- Project sdkconfig file C:/ESP32_projects/blink/sdkconfig
Loading defaults file C:/ESP32_projects/blink/sdkconfig.defaults...
-- Components:
-- Component paths:
-- Configuring done
-- Generating done
-- Build files have been written to C:/ESP32_projects/blink/build

The terminal will be reused by tasks, press any key to close it.

> Executing task: cmake --build . <

[1/1] Linking C executable blink.elf
FAILED: blink.elf 
cmd.exe /C "cd . && C:\Users\dmitryke\.espressif\tools\xtensa-esp32s2-elf\esp-2020r3-8.4.0\xtensa-esp32s2-elf\bin\xtensa-esp32s2-elf-gcc.exe -mlongcalls   CMakeFiles/blink.elf.dir/project_elf_src.c.obj  -o blink.elf  -Wl,--cref -Wl,--Map=C:/ESP32_projects/blink/build/blink.map  -fno-rtti  -fno-lto && cd ."
c:/users/dmitryke/.espressif/tools/xtensa-esp32s2-elf/esp-2020r3-8.4.0/xtensa-esp32s2-elf/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld.exe: c:/users/dmitryke/.espressif/tools/xtensa-esp32s2-elf/esp-2020r3-8.4.0/xtensa-esp32s2-elf/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/lib/no-rtti/crt0.o:(.literal+0x0): undefined reference to `main'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
The terminal process "C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command cmake --build ." terminated with exit code: 1.

Terminal will be reused by tasks, press any key to close it.

Я удалил все из blink.c, чтобы избежать ошибок кода.

blink.c

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "sdkconfig.h"

/* Can use project configuration menu (idf.py menuconfig) to choose the GPIO to blink,
   or you can edit the following line and set a number here.
*/
#define BLINK_GPIO 0x01

void app_main(void)
{
    while(1) {    }
}

Другой вопрос, есть возможность запустить idf.py menuconfig. Иногда это работает, а иногда говорит:

C:\ESP32_projects\blink>idf.py menuconfig
'idf.py' is not recognized as an internal or external command,
operable program or batch file.

Любая помощь будет оценена по достоинству!


person Dmitry Kezin    schedule 03.06.2021    source источник


Ответы (2)


Все задачи ESP IDF (cmake, idf.py и т. Д.) Должны выполняться в подготовленной среде. Я бы начал с потери VSC (потому что это просто еще одна потенциальная точка отказа) и использовал базовый Командная строка ESP IDF. Попробуйте запустить idf.py menuconfig, idf.py build и idf.py -p COMx flash для настройки, сборки и прошивки вашего тестового проекта.

Убедившись, что среда ESP IDF и ваш проект работают, вернитесь в VSC и посмотрите, что там не так.

В качестве рабочего примера вот как я компилирую тот же образец проекта на своей машине (Linux, ESP IDF v4.2.1) с нуля:

$ cp -r ~/esp-idf/examples/get-started/blink/ .
$ cd blink
$ idf.py build
Running cmake in directory /home/tarmo/tmp/espidftest/blink/build                                                                                                                                                  
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DCCACHE_ENABLE=0 /home/tarmo/tmp/espidftest/blink"... 
-- Found Git: /usr/bin/git (found version "2.30.2")                                                                                                                                                                
-- IDF_TARGET not set, using default target: esp32                                                                                                                                                                 
-- The C compiler identification is GNU 8.4.0                                                                                                                                                                      
-- The CXX compiler identification is GNU 8.4.0   

[SNIP]

esptool.py v3.0                                                                                                                                                                                                    
Generated /home/tarmo/tmp/espidftest/blink/build/bootloader/bootloader.bin                                                                                                                                         
[934/934] Generating binary image from built executable                                                                                                                                                            
esptool.py v3.0                                                                                                                                                                                                    
Generated /home/tarmo/tmp/espidftest/blink/build/blink.bin                                                                                                                                                         
                                                                                                                                                                                                                   
Project build complete. To flash, run this command:                                                                                                                                                                
/home/tarmo/espressif/python_env/idf4.2_py3.9_env/bin/python ../esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 --before default_reset
 --after hard_reset --chip esp32  write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/blink.bin
or run 'idf.py -p (PORT) flash'
$ ls -lha
drwxr-xr-x 8 tarmo tarmo 4,0K juuni  4 12:26 build
-rw-r--r-- 1 tarmo tarmo  234 juuni  4 12:25 CMakeLists.txt
-rw-r--r-- 1 tarmo tarmo 1,5K juuni  4 12:25 example_test.py
drwxr-xr-x 3 tarmo tarmo 4,0K juuni  4 12:26 main
-rw-r--r-- 1 tarmo tarmo  177 juuni  4 12:25 Makefile
-rw-r--r-- 1 tarmo tarmo  157 juuni  4 12:25 README.md
-rw-r--r-- 1 tarmo tarmo  33K juuni  4 12:25 sdkconfig
-rw-r--r-- 1 tarmo tarmo    3 juuni  4 12:25 sdkconfig.defaults
person Tarmo    schedule 03.06.2021
comment
Я не упоминал (так как пробовал много разных способов), но вижу точно такую ​​же проблему в командной строке. - person Dmitry Kezin; 03.06.2021
comment
Какая из основных проблем не связана? Просто чтобы уточнить - вы запускаете командную строку ESP-IDF, а не ванильное командное окно Windows, верно? - person Tarmo; 04.06.2021
comment
Командное окно не так важно, у меня все заработало. Моя основная проблема заключается в том, что главная проблема не связана. - person Dmitry Kezin; 04.06.2021
comment
Либо вы изменили образец проекта, чтобы он не работал, либо с вашей настройкой что-то серьезно не так. Я обновил свой ответ примером того, как blink работает на моей машине. Может это поможет. - person Tarmo; 04.06.2021
comment
Собственно, ваш комментарий заставил меня задуматься об инструментах esp-idf. Я установил его по вашей ссылке, и он волшебным образом сработал. Теперь я могу скомпилировать и прошить ESP32S2. Ты мой герой, спасибо! - person Dmitry Kezin; 04.06.2021
comment
Отлично, получайте удовольствие! - person Tarmo; 05.06.2021
comment
@DmitryKezin Пожалуйста, отметьте ответ как решение, чтобы другие могли легко увидеть, что помогло вам, не просматривая все комментарии. - person StrawHat; 10.06.2021

Командное окно меньше заботит, я заработал. Моя основная проблема в том, что главная проблема не связана.

person Dmitry Kezin    schedule 04.06.2021