ESP8266 Урок 5. Настраиваем toolchain и пишем свою прошивку в IDE Eclipse. Часть 2



 

В предыдущей части урока мы подготовили все инструменты (тулчейн) для сборки прошивки из исходных файлов, создали проект и начали писать файл сценария Makefile, а также исходный код.

Будет тут у нас ещё небольшой подводный камень, но о нём потом. А пока нам хочется создать прошивку и залить её в наш контроллер.

Поэтому идём в Makefile и добавим там ещё одну команду

 

 

Здесь мы используем утилиту AR, которая в Linux используется для создания архива без сжатия, для того, чтобы соединить все объектные файлы в один архив. У нас пока только один объектный файл, поэтому мы собираем в архив только его.

После очередной сборки проекта у нас появится архивный файл в папке build

 

 

Следующий этап — линковка (или компоновка). На данном этапе мы создадим исполняемый файл формата elf

 

 

Здесь также используется ряд параметров, знать которые нам пока не столь важно, голову мы этим также забивать пока не будем. Скажу лишь про некоторые. Параметр -L показывает путь к статическим библиотекам, а параметр -T показывает скрипт, который используется для компоновки — agle.app.v6.ld. Также после параметра -o мы говорим сборщику о том, с каким именем мы формируем elf-файл.

Теперь скорей всего мы опять не сможем собрать наш проект и получим вот такие две ошибки

 

 

Данные ошибки говорят о том, что в наш код мы должны обязательно добавить функцию с именем user_rf_cal_sector_set.

Данная функция устанавливает размер сектора в разделе хранения калибровочных параметров wifi модуля. Хотя мы сейчас вроде и не пользуемся функционалом WiFi, но функция быть должна. Образец её есть практически во всех примерах SDK. Добавим такую функцию в наш main.c выше функции user_init

 

 

Теперь у нас всё прекрасно соберётся и на выходе мы получим исполняемый файл

 

 

С помощью следующей команды в нашем Makefile мы выведем в консоль размеры секций, используя при этом специальную утилиту из набора кросс-компилятора

 

 

Соберём проект и увидим размеры секций в консоли

 

С помощью следующей команды в Makefile, используя специально-обученную утилиту, мы сформируем два образа для заливки в наш контроллер, так как у нас не установлен на нём Linux и мы не можем там запустить elf-файл

 

 

Если мы теперь соберём наш проект, то мы уже получим два файла-образа для заливки в наш ESP

 

 

Ну вот мы и получили заветную прошивку! Из наименований файлов мы даже видим, с каких адресов их заливать в контроллер.

 

 

Только прежде чем прошивать наш ESP, если в нём до этого была нестандартная прошивка, то его надо подготовить. Да и если стандартная, то лучше тоже подготовить. Первым делом мы очистим полностью FLASH-память нашего контроллера. Как это делается, мы отлично знаем. А так как затем нам для подготовки к заливки нашей прошивки надо будет в контроллер ещё кое-что залить, то сначала откроем каталог со стандартной прошивкой в SDK

 

 

Запустим командную строку и очистим FLASH-память

 

 

Также, думаю, все мы знаем, что путь к утилите esptool для работы с ней, должен быть доступен.

Если вдруг она не будет работать из папки с утилитами, то можно подключить другую.

Теперь нам нужно прошить с определённого адреса файл с настройками по умолчанию в наш ESP

 

 

Мы использовали адрес 0x3FC000, так как у нас модуль с 4 мегабайтами FLASH-памяти.

Вот теперь наш модуль готов к прошиванию только что созданной нами прошивки, а если всего этого не проделать, то мы рискуем получить зацикливание.

Вернёмся в наш проект и прежде чем в Makefile добавлять ещё одну цель для заливки прошивки, давайте с помощью применения переменных немного сделаем наш сценарий поприличнее.

Для этого в самом верху добавим путь к нашему SDK

 

 

Затем добавим путь к заголовочным файлам SDK

 

 

Также добавим путь к кросс-компилятору

 

 

Также добавим переменные отдельно к каждой утилите кросскомпилятора

 

 

 

Добавим флаги для компиляции и линковки

 

 

Добавим также переменную для команды esptool с полным путём к ней

 

 

Применим наши переменные в цели All, также заэкранируем наши команды, чтобы не выводились в консоли, а выведем туда красивые читабельные команды вместо них. После этого цель All примет следующий вид

 

 

Попробуем собрать наш проект.

Вывод в консоли после этого будет иметь вот такой красивый вид

 

 

Теперь давайте добавим цель в Makefile для заливки наших образов в микроконтроллер

 

 

Чтобы эту цель запускать, мы добавим её в дерево целей. Для этого зайдём во вкладку Build Targe в левой панели и, используя контекстное меню нашего проекта, добавим новую цель с именем flash

 

 

Аналогичным образом добавим в дерево цель clean, такую цель в наш Makefile мы добавим чуть позже.

Наши цели появятся в дереве слева

 

 

Также они появятся и в основном дереве проекта в соответствующей ветке

 

 

Теперь данные цели будут выполняться по двойному щелчку мыши на них.

Давайте выполним цель flash.

У нас начнётся процесс заливки прошивки в контроллер

 

 

Только вот после заливки наша прошивка будет работать неправильно. Вот это и есть подводный камень, о котором я предупреждал.

Мигнув пару раз, светодиод погаснет не вовремя.

Всё дело в том, что в нашем ESP, впрочем, как и у практически каждого микроконтроллера, есть сторожевой таймер (watchdog), который по умолчанию включен, и, если его не выключить заранее при помощи функции system_soft_wdt_stop, что настоятельно не рекомендуется, то его хотя бы раз в полсекунды надо перезагружать при помощью функции SDK system_soft_wdt_feed. А иначе будет происходить то, что у нас и происходит. Не дождавшись перезагрузки таймера, контроллер перезагрузится сам.

Добавим данную функцию в бесконечном цикле в двух местах

 

 

Теперь всё нормально. Светодиод мигает регулярно

 

 

Также чтобы процесс заливки прошивки шел побыстрее, в команде в Makefile добавим ему скорости, используя для этого соответствующий параметр. Также при проблемах с автоопределением COM-порта при наличии нескольких можно жёстко указать требуемый (у меня 29-й, у вас может быть другой)

 

@$(ESPTOOL) -b 512800 -p COM29 write_flash --no-compress -ff 40m -fm dio -fs 32m 0x00000 build/app.out-0x00000.bin 0x10000 build/app.out-0x10000.bin

 

Также добавим ещё цель для очистки каталога от скомпилированных файлов.

 

 

Данный пункт мы можем запускать как двойным щелчком по добавленной цели, так и по пункту контекстного меню clean. Попробуем запустить данную цель

 

 

Всё прекрасно очистилось.

Итак, на данном занятии нам удалось создать свою программу для микроконтроллера и залить её в его FLASH-память. Пусть данная программа пока не обладает серьёзной функциональностью, это всё будет, но самое тяжёлое, можно считать, мы уже сделали. Мы создали тулчейн с SDK, кросскомпилятором и подключили всё это в IDE Eclipse, получив возможность писать программы для контроллера ESP8266. После этого нам станет проще писать дальнейшее ПО для работы с функционалом WiFi и работы с прочими модулями данного контроллера.

Всем спасибо за внимание!

 

 

Предыдущая часть Программирование МК ESP8266 Следующий урок

 

Исходный код

 

Утилиты для прошивки

 

 

Модуль ESP NodeMCU можно купить здесь: Модуль ESP NodeMCU

Различные модули ЕSP8266 можно приобрести здесь Модули ЕSP8266

Переходник USB to TTL можно приобрести здесь ftdi ft232rl

Многофункциональный переходник CJMCU FT232H USB к JTAG UART FIFO SPI I2C можно приобрести здесь ftdi ft232rl

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

ESP8266 Настраиваем toolchain и пишем свою прошивку в IDE Eclipse

44 комментария на “ESP8266 Урок 5. Настраиваем toolchain и пишем свою прошивку в IDE Eclipse. Часть 2
  1. Владимир:

    Спасибо за урок.
    у меня при пути D:/ESP8266/utils/esptool elf2image build/app.out
    при питоне 3.8 не работало. В ком. строке -> (esptool version) , не видело этого файла. (esptool.py version) сработало.
    В Makefile вместо (D:/ESP8266/utils/esptool elf2image build/app.out) запустилось в следующем варианте: esptool.py elf2image build/app.out
    Если у кого либо такая проблема, надеюсь, что поможет этот комментарий.

  2. Федоров:

    c:/anaconda3/scripts/esptool.exe elf2image build/app.out
    Для тех у кого не видится еспитул. Устанавливаем пайсон 3 как на видео а потом вставляем эту строчку и все соберется…

  3. megger380:

    Добрый день! Застопорился на этапе сборки файла elf из app_app.a
    xtensa-lx106-elf-gcc: error: : No such file or directory
    xtensa-lx106-elf-gcc: fatal error: no input files
    compilation terminated.
    Все пути верные…

  4. Николай:

    При сборки проекта выскакивает ошибка
    CreateProcess(NULL, C :/Eclipse_WorkSpase/ESP8266
    Как исправить

  5. xxxigrik:

    подскажите где взять крос компилятор для linux. У меня есть сборка из open sdk но при компиляции возникает ошибка

    CC src/user_main.o
    AR build/app_app.a
    LD build/app.out
    /opt/esp-open-sdk/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.5/../../../../xtensa-lx106-elf/bin/ld: cannot find : No such file or directory
    collect2: error: ld returned 1 exit status
    Makefile:18: recipe for target 'all' failed
    make: *** [all] Error 1

  6. Алексей:

    При линковке возникает ошибка:
    18:38:02 **** Incremental Build of configuration Debug for project BLINK ****
    mingw32-make.exe -f F:/ESP8266/BLINK/BLINK/Makefile all
    D:/ESP8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc \
    -Iinc -ID:/ESP8266/ESP8266_NONOS_SDK-3.0/include \
    -ID:/ESP8266/ESP8266_NONOS_SDK-3.0/include/json \
    -g -O0 -std=gnu99 -Wpointer-arith -Wundef -Werror -Wl,\
    -EL -fno-inline-functions -nostdlib -mlongcalls \
    -mtext-section-literals -mno-serialize-volatile -D__ets__ \
    -DICACHE_FLASH -c src/main.c -o src/main.o
    D:/ESP8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ar \
    cru build/app_app.a src/main.o
    D:/ESP8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc \
    -LD:/ESP8266/ESP8266_NONOS_SDK-3.0/lib \
    -TD:/ESP8266/ESP8266_NONOS_SDK-3.0/ld/eagle.app.v6.ld \
    -nostdlib -Wl,—no-check-sections -u call_user_start -Wl,\
    -static -Wl,—start-group -lc -lgcc -lphy -lpp -lnet80211 \
    -llwip -lwpa -lmain -lcrypto build/app_app.a \
    -Wl,—end-group -o build/app.out
    D:/ESP8266/ESP8266_NONOS_SDK-3.0/lib\libmain.a(app_main.o): In function user_uart_wait_tx_fifo_empty':
    (.irom0.text+0x6a0): undefined reference to
    user_pre_init'
    D:/ESP8266/ESP8266_NONOS_SDK-3.0/lib\libmain.a(app_main.o): In function flash_data_check':
    (.irom0.text+0x714): undefined reference to
    user_pre_init'
    collect2.exe: error: ld returned 1 exit status
    F:/ESP8266/BLINK/BLINK/Makefile:4: recipe for target 'all' failed
    mingw32-make.exe: *** [all] Error 1
    «mingw32-make.exe -f F:/ESP8266/BLINK/BLINK/Makefile all» terminated with exit code 2. Build might be incomplete.
    Как исправить?

  7. khomych:

    после плясок с бубном все таки получилось добиться устойчивой компиляции проекта. но после заливки в ESP8266 тот постоянно перезагружается. на скорости 74880 в терминал постоянно шлет
    load 0x40100000, len 25264, room 0
    tail 0
    chksum 0x87
    csum 0x87

    esptool erase_flash естественно делал. может кто сталкивался или есть какие идеи? Модeль рабочий, АТ команды понимает, LUA скрипты понимает (естественно при залитой прошивке NodeMCU v3)

  8. chepik:

    Исправите материал на сайте. В верхней части страницы, в первых 2-х frame (для которых копируется материал для вставки в Makefile) пропущены символы » \» . Я чуть не посидел пока разбирался. Хорошо что смотрел видеорук и смог разобраться, то копируя не разбираясь можно и душу отдать.

  9. chepik:

    Помогите пожалуйста со следующей проблемой.

    -Wl,—end-group -o build/app.out
    D:/ESP8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-size build/app.out
    -> esptool elf2image build/app.out

    При сборке проекта без использовании последней строки отмеченной выше стрелкой (в файле Makefile) проект собирается. Но при использовании последней строки появляется следующая ошибка:

    ….
    esptool elf2image build/app.out
    D:/Project/Eclipse/esp8266/Blink00/Makefile:4: recipe for target 'all' failed
    process_begin: CreateProcess(NULL, esptool elf2image build/app.out, …) failed.
    make (e=2): Не удается найти указанный файл.

    mingw32-make.exe: *** [all] Error 2
    «mingw32-make.exe -f D:/Project/Eclipse/esp8266/Blink00/Makefile all» terminated with exit code 2. Build might be incomplete.

    Как мне кажется он не знает что такое esptool, но я его установил через командную строку, т.к. из папки utils/esptool не хочет запускаться.
    Как можно решить данную проблему?

  10. xxxigrik:

    Повторюсь наверное. Но меня возникает следующая ошибка.

    /opt/esp-open-sdk/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.5/../../../../xtensa-lx106-elf/bin/ld: cannot find : No such file or directory
    collect2: error: ld returned 1 exit status
    Makefile:22: recipe for target 'all' failed
    make: *** [all] Error 1

    Ну или поделитесь toolchain под unix

  11. tvekb:

    Здравствуйте!
    Возникает ошибка при линковке:
    LD build/app.out
    c:/esp8266/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.2.0/../../../../xtensa-lx106-elf/bin/ld.exe: cannot open linker script file C:/ESP8266/ESP8266_NONOS_SDK/ld/eagle.app.v6.ld: Invalid argument
    collect2.exe: error: ld returned 1 exit status
    Помогите, плз, советом!
    Спасибо!

  12. Mikhail:

    Спасибо огромное за почти внятный язык для чайников.
    Добавьте пожалуйста \ в первой команде (для чайников)

    -DICACHE_FLASH -c src/main.c -o src/main.o
    D:/ESP8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ar
    cru build/app_app.a src/main.o

  13. Mikhail:

    В команде линковки убрал все \ и прописал всю команду в одной строке —
    заработало! Что за танцы с бубном?! Видимо опыта совсем нет….

  14. Andrew:

    У меня такая же проблема, постоянно шлет инфу по uart и не работает, все собирается норм при заливке Bin'а не работает, в arduino нормально прошивается и прошивка от нее тоже заливается через разные утилиты и туже esptool

    • Andrew:

      Вот такие же дела творятся:
      после плясок с бубном все таки получилось добиться устойчивой компиляции проекта. но после заливки в ESP8266 тот постоянно перезагружается. на скорости 74880 в терминал постоянно шлет
      load 0x40100000, len 25264, room 0
      tail 0
      chksum 0x87
      csum 0x87

      esptool erase_flash естественно делал. может кто сталкивался или есть какие идеи? Модeль рабочий, АТ команды понимает, LUA скрипты понимает (естественно при залитой прошивке NodeMCU v3)

      • Andrew:

        При стирании памяти nodemcu и заливке прошивки esp_init_data_default_v05.bin по адресу 0x3FC000, стал медленей передовать по uart и так не заработал, не знаю уже что делать

  15. Andrew:

    Может надо использовать другую адресацию?

  16. Andrew:

    Могут ли проблемы быть из-за того что в 64 разрядной винде использую mingw32, а не mingw64?

  17. Andrew:

    Все разобрался, оказывается не внимательно смотрел видео и пропустил в коде строку, и поэтому по uart nodemcu и слала данные сообщая об ошибке, а я был уверен что правильно записал текст программы и сильно его не разглядывал и в итоге прокапался, но в итоге много чего еще изучил.

  18. Добрый день! Вот какой вопрос. Я сделал экспериментально программу, на основе Ваших уроков, которая просто переключает уровни на GPIO2 без всяких задержек.

    void ICACHE_FLASH_ATTR user_init()
    {
    gpio_init();
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);
    gpio_output_set(0, 0, (1 << LED), 0);
    while(1)
    {
    gpio_output_set(0, (1 << LED), 0, 0);
    gpio_output_set((1 << LED), 0, 0, 0);
    }
    }
    Померил осциллографом частоту на выходе, получилось порядка 5,8 кГц. И сделал тоже самое в среде Ардуино, получилась частота 133 кГц. Получается, что код менее эффективный собирается в Eclipse. Я убрал параметр -g при компиляции, также попробовал с оптимизацией -О1. Ситуация не поменялась. К примеру с микроконтроллерами Atmel, ситуация с точностью наоборот. Код, получаемый в среде Atmel Studio гораздо компактнее и быстрее, чем в среде Ардуино. Не знаете в чем дело? Может быть при сборке проекта нужно еще какие-то параметры дописать?

  19. Все равно большое спасибо за Ваши уроки.

  20. Predator:

    Подскажите, пожалуйста.
    Остановился на линковке с таким:
    Такое впечатление, что что-то где-то не прописано…

    12:18:23 **** Incremental Build of configuration Debug for project blink ****
    mingw32-make.exe -f D:/Users/User/eclipse-workspace/blink/Makefile all
    D:/esp8266/SysGCC/esp8266/opt/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc \
    -Iinc -ID:/ESP8266/ESP8266_NONOS_SDK/include \
    -ID:/ESP8266/ESP8266_NONOS_SDK/include/json \
    -g -O0 -std=gnu99 -Wpointer-arith -Wundef -Werror -Wl,\
    -EL -fno-inline-functions -nostdlib -mlongcalls \
    -mtext-section-literals -mno-serialize-volatile -D__ets__ \
    -DICACHE_FLASH -c D:/Users/User/eclipse-workspace/blink/src/main.c -o src/main.o
    D:/esp8266/SysGCC/esp8266/opt/xtensa-lx106-elf/bin/xtensa-lx106-elf-ar \
    cru build/app_app.a src/main.o
    D:/esp8266/SysGCC/esp8266/opt/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc \
    -LD:/ESP8266/ESP8266_NONOS_SDK/lib \
    -TD:/ESP8266/ESP8266_NONOS_SDK/ld/eagle.app.v6.ld \
    -nostdlib -Wl,—no-check-sections -u call_user_start -Wl, \
    -static -Wl,—start-group -lc -lgcc -lphy -lpp -lnet80211 \
    -llwip -lwpa -lmain -lcrypto build/app_app.a \
    -Wl,—end-group -o build/app.out
    d:/esp8266/sysgcc/esp8266/opt/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/8.4.0/../../../../xtensa-lx106-elf/bin/ld.exe: cannot find : Invalid argument
    collect2.exe: error: ld returned 1 exit status
    D:/Users/User/eclipse-workspace/blink/Makefile:4: recipe for target 'all' failed
    mingw32-make.exe: *** [all] Error 1
    «mingw32-make.exe -f D:/Users/User/eclipse-workspace/blink/Makefile all» terminated with exit code 2. Build might be incomplete.

  21. Roman:

    Здравствуйте! Спасибо за уроки!

    Были следующие проблемы (может кому пригодится. работал на esp01):
    1. Линковщик искал user_pre_init. Написание данной функции не помогло. Причина: SDK-3.x.x; Выход: SDK-2.2.1.
    2. При прошивке слишком быстро мигал синий светодиод, прям как на видео перед прошивкой esp_init_data_default_v05. После догрузки данного бинарника по адресу 0xFC000 перестал мигать (даже не горел). Причина 1 — синий светодиод в данной микросхеме подключен не к GPIO2, Решение: в прошивке определите #define LED 1 и в user_init:
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_GPIO1); вместо PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);
    3. После прошивки при delay(100000); синий диод горит не мигая: Причина: может где-то есть настройка частот. не знаю. Решение: delay(100000); мигание видно. При esp_init_data_default_v08 тот же эффект.
    4. в Makefile ругался на опцию -LE. Решение: разделил на -L -E. Если кто может объяснить данное явление, то буду рад. Ну и все команды расписал в длинные портянки без всякий макросов и переменных, чтобы меньше мест было для ошибок. Чистил чип из командной строки. Догружал esp_init_data_default_v05 так же из командной строки.

  22. Roman:

    Решение третьей проблемы: увеличение паузы delay(100000) -> delay(1000000)

  23. Sergey Krivtsov:

    Всем привет. Ребята подскажите кто решил проблему «/build/app_app.a: No such file or directory»
    Файл сам есть но пишет что нет и все.
    c:/ESP8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc \
    -LC:/ESP8266/ESP8266_NONOS_SDK/lib \
    -TC:/ESP8266/ESP8266_NONOS_SDK/ld/eagle.app.v6.ld \
    -nostdlib -Wl,—no-check-sections -u call_user_start -Wl, -static -Wl,—start-group -lc -lgcc -lphy -lpp \
    -lnet80211 -llwip -lwpa -lmain -lcrypto /build/app_app.a \
    -Wl,—end-group -o build/app.out
    xtensa-lx106-elf-gcc: error: /build/app_app.a: No such file or directory
    Makefile:4: recipe for target 'all' failed
    MinGW32-make.exe: *** [all] Error 1
    «MinGW32-make.exe all» terminated with exit code 2. Build might be incomplete.

    • Sergey Krivtsov:

      Кажется нашел решение. В настройках компилятора убрал «-f ${ProjDirPath}/Makefile» оставил только mingw32-make.exe и все стало работать. А то в командной строке работало а в Eclipse давала ошибку. Но это еще только начало ))))

  24. Константин:

    Коллеги здравствуйте.
    Пытался сделать все по инструкции, но не заработало.
    Скачал готовый проект. При сборке получаю вот такой лог:
    20:04:56 **** Incremental Build of configuration Release for project BLINK01 ****
    mingw32-make.exe -f D:/0_ECLIPSE_PRJ/BLINK01/Makefile all
    «CC src/main.o»
    «AR build/app_app.a»
    «LD build/app.out»
    D:/0_ESP_SDK/ESP8266_NONOS_SDK/lib\libmain.a(app_main.o): In function ets_fatal_exception_handler':
    /home/wchen/gwen/nonos/app/main/app_main.c:870: undefined reference to
    user_pre_init'
    D:/0_ESP_SDK/ESP8266_NONOS_SDK/lib\libmain.a(app_main.o): In function flash_data_check':
    /home/wchen/gwen/nonos/app/main/app_main.c:1014: undefined reference to
    user_pre_init'
    collect2.exe: error: ld returned 1 exit status
    D:/0_ECLIPSE_PRJ/BLINK01/Makefile:24: recipe for target 'all' failed
    mingw32-make.exe: *** [all] Error 1
    «mingw32-make.exe -f D:/0_ECLIPSE_PRJ/BLINK01/Makefile all» terminated with exit code 2. Build might be incomplete.

    20:04:58 Build Failed. 4 errors, 0 warnings. (took 1s.495ms)

    Какие-то неопределенные ссылки, как их добавить в проект?
    Что может быть не так и как это исправить?

  25. Ильнур:

    С горем пополам получилось собрать и прошится в эклипсе на mac os. Сначала поставил тулчейн последней версии (3.0.5), далее почитав коменты понял что нужно поставить тулчейн версии как в данном уроке. Были некоторые изменения по командам а именно esptool ругался на аргумент 32m, но дал возможные варианты правильного аргумента 4MB. Так же долго не мог разобраться с линкером (xtensa-lx106-elf/bin/ld: cannot find : No such file or directory), ругался на то что не мог найти какой то файл. Решил таким способом, убрал все \ и написал команды и флаги в одну строку

  26. Andrey:

    Для тех кто не может собрать bin файлы и получает ошибку
    1. Имя пользователя должно быть на латинице
    2. Устанавливаем последний Python
    3. В командной строке из под пользователя пишем команду pip install esptool (C:\Users\Andrey>pip install esptool)
    4. В Makefile должно быть так ESPTOOL := esptool.py

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*