Всем привет, сегодня я расскажу каким образом собрать все необходимое и скомпилировать 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$
Еще может возникнуть такая ошибка:
Лечится комментированием двух строчек файле crosstool-NG/.build/src/gdb-7.10/gdb/python/python-config.py
И перезапуском скрипта
https://weekly-geekly.github.io/articles/186124/index.html">Источник фикса