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

17 апреля 2019, 10:16

Всем привет, сегодня я расскажу каким образом собрать все необходимое и скомпилировать 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.

4. Установка esp-open-rtos

В качестве директории для 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:${PATH}"
SDK_PATH="/Volumes/case-sensitive/esp-open-sdk/esp-open-rtos"
export PATH
export SDK_PATH
...

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


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Alex Khmelenko (Outsiderz)
    Alex Khmelenko (Outsiderz) 4 месяца назад

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

  2. Дмитрий Батюшин (ReD)
    Дмитрий Батюшин (ReD) 4 месяца назад

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

  3. Артур Минасян (aptyp222)
    Артур Минасян (aptyp222) 4 месяца назад

    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$ 

К списку статей

Похожие статьи

04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
02 ноября 2018, 12:14
Кнопка звонка с уведомлениями в HomeKit
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
02 октября 2018, 18:41
Установка SDK для компиляции прошивок под HomeKit
22 октября 2018, 19:00
Сборка DIY Лабораторного блока питания из китайских модулей
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.