Статья

Компиляция esp-open-sdk на Mac

Всем привет, сегодня я расскажу каким образом собрать все необходимое и скомпилировать esp-open-sdk на Mac. Компиляция SDK и toolchain позволит нам компилировать свои собственные прошивки и после заливать их на ESP.

Отправная точка этот репозиторий. Здесь базовые шаги без подробностей. Подробности будут ниже :)

Пошаговое руководство

1. В первую очередь нам необходимо создать новый.dmg образ в удобном для вас месте. Это может быть папка Documents/Projects/ESP. Команды ниже создадут образ в указанной папке размером 10гб. Название файла – case-sensitive.dmg, название образа так же case-sensitive. Вы можете его изменить например на esp8266:

sudo hdiutil create ~/Documents/Projects/ESP/case-sensitive.dmg -volname "case-sensitive" -size 10g -fs "Case-sensitive HFS " sudo hdiutil mount ~/Documents/Projects/ESP/case-sensitive.dmg cd /Volumes/case-sensitive

2. Выкачиваем эту репу с помощью команды: 

git clone --recursive -b macos-10-14-sdk221 https://github.com/daviddpd/esp-open-sdk.git

Обратите внимание на то что клонирование должны быть выполнено рекурсивно. Иначе у вас могут возникнуть ошибки во время компиляции SDK. Параметр -b означает, что будет использована ветка macos-10-14-sdk221

После переходим в папку esp-open-sdk:

cd esp-open-sdk

3. Билдим toolchain

make toolchain esptool libhal STANDALONE=n

Если у вас возникли ошибки, то запасайтесь терпением и чаем. Дальше будет больно.

Решение всех возникающих проблем я взял из топика на гитхабе.

И так, решение первой возникшей проблемы:

make clean./esp-open-sdk-mac-bsd.sh

Это команда выполнит патч, который установит все необходимые компоненты (binutils, libelf, libtool итд), и сделает экспорт путей. Вы можете открыть файлик esp-open-sdk-mac-bsd.sh любым блокнотом.

Данная команда выполнится с ошибками:

... checking for gobjcopy... no checking for objcopy... no configure: error: missing required tool: gobjcopy objcopy make[1]: *** [_ct-ng] Error 1 make: *** [crosstool-NG/ct-ng] Error 2

Эта ошибка возникает когда binutils, установленный с помощью homebrew, не доступна по указанному пути в PATH

Решение:

brew info binutils export PATH="/usr/local/opt/binutils/bin:$PATH"

Далее нам нужно заресетить патч и выполнить скрипт снова:

rm -rf crosstool-NG/ git submodule update --init --recursive make clean./esp-open-sdk-mac-bsd.sh

Скорее всего, снова возникнет ошибка:

... Now configured for "xtensa-lx106-elf" /usr/local/bin/sed -r -i.org s%CT_PREFIX_DIR=.*%CT_PREFIX_DIR="/Volumes/case-sensitive/esp-open-sdk/xtensa-lx106-elf"%.config /bin/bash: /usr/local/bin/sed: No such file or directory make[1]: *** [_toolchain] Error 127 make: *** [crosstool-NG/.built] Error 2

Решение проблемы – создать нужную ссылку на sed: 

ln -s /usr/local/opt/gnu-sed/libexec/gnubin/sed /usr/local/bin/sed

Снова делаем ресет и выполняем скрипт по новой

rm -rf crosstool-NG/ git submodule update --init --recursive make clean./esp-open-sdk-mac-bsd.sh

Обычно на этом этапе не возникает ошибок, но вот одна из потенциальных и ее решение:

[INFO ] Retrieving needed toolchain components' tarballs [INFO ] Retrieving needed toolchain components' tarballs: done in 98.00s (at 01:40) [INFO ] ================================================================= [INFO ] Extracting and patching toolchain components [01:42] / gzip: /Volumes/case-sensitive/esp-open-sdk/crosstool-NG/.build/tarballs/expat-2.1.0.tar.gz: not in gzip format

cd crosstool-NG/.build/tarballs rm expat-2.1.0.tar.gz wget https://github.com/libexpat/libexpat/releases/download/R_2_1_0/expat-2.1.0.tar.gz cd../src rm.expat-2.1.0.* rm -r expat-2.1.0/ cd../../..

Снова выполняем патч и получаем последнюю на сегодня ошибку :)

./esp-open-sdk-mac-bsd.sh

[INFO ] Installing ncurses for build [ERROR] clang: error: linker command failed with exit code 1 (use -v to see invocation) [ERROR] make[4]: *** [clear] Error 1 [ERROR] make[3]: *** [all] Error 2 [ERROR] [ERROR] >> [ERROR] >> Build failed in step 'Installing ncurses for build' [ERROR] >> called in step '(top-level)'

Самое простое решение это открыть новую табу в консоли (CDM T), и в последний раз, просто выполнить команду:

./esp-open-sdk-mac-bsd.sh

На этом этапе не должно возникнуть ошибок, и тем самым у нас получилось сбилдить SDK.

Следующий этап это установка esptool.py. Мануал по установке вполне простой, и думаю у вас не возникнет проблем, при наличии установленного Python и Pypi.

В качестве директории для rtos я выбрал корень папки esp-open-sdk:

cd /Volumes/case-sensitive/esp-open-sdk git clone --recursive https://github.com/Superhouse/esp-open-rtos.git

5. Экспорт путей

Под капотом все будущие makefile-ы будут ссылаться на esp-sdk, rtos и xtensa. У себя я прописал эти пути в  .bash-profile

open ~/.bash_profile #Содержимое файла... PATH="/Volumes/case-sensitive/esp-open-sdk/esp-open-rtos:/Volumes/case-sensitive/esp-open-sdk/xtensa-lx106-elf/bin:$" SDK_PATH="/Volumes/case-sensitive/esp-open-sdk/esp-open-rtos" export PATH export SDK_PATH...

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


Ждём теперь под esp32 👍🏻

отличная статья. можно еще продолжение написать, подробно описать что нужно чтобы залить бинарник через макОС. установка Python, всех необходимых пакетов и тд.

+1 а то вопросами закидают))

Да, это следующая статья)

отлично, жду, с меня лайк!!!! а то были мысли самому написать. но пока руки до этого не доходят. 

MacBookPro:~ aptyp222$ sudo hdiutil create ~/Documents/Projects/ESP/case-sensitive.dmg -volname "case-sensitive" -size 10g -fs "Case-sensitive HFS+"


Password:


hdiutil: create failed - Неверный аргумент


MacBookPro:~ aptyp222$ 


Еще может возникнуть такая ошибка:

[INFO ]  Installing cross-gdb

[ERROR] configure: error: python is missing or unusable

[ERROR] make[4]: *** [configure-gdb] Error 1

[ERROR] make[3]: *** [all] Error 2

Лечится комментированием двух строчек файле crosstool-NG/.build/src/gdb-7.10/gdb/python/python-config.py 

# if getvar('LINKFORSHARED') is not None: 
# libs.extend(getvar('LINKFORSHARED').split())

И перезапуском скрипта 

./esp-open-sdk-mac-bsd.sh

https://weekly-geekly.github.io/articles/186124/index.html">Источник фикса


Вернуться назад

Устройства


Espressif Systems

ESP8266 NodeMcu v3

(16 отзывов)

Вернуться назад