64-Bit

Embedded Systems, Linux, Technik

ESP 8266 SDK unter OS X (10.10) einrichten

Summary: Der ESP 8266 ist ein ARM Cortex M3 uC der sich aufgrund seines integrierten WLAN und dem unglaublich günstigen Preis von $2 - $3 gut für eigene Internet of Things Basteleien eignet. Hier möchte ich kurz zeigen wie man die Toolchain für den ESP 8266 unter OS X zum laufen …

Summary: Der ESP 8266 ist ein ARM Cortex M3 uC der sich aufgrund seines integrierten WLAN und dem unglaublich günstigen Preis von $2 - $3 gut für eigene Internet of Things Basteleien eignet. Hier möchte ich kurz zeigen wie man die Toolchain für den ESP 8266 unter OS X zum laufen bringt.

Da OS X auch 2015 immer noch ein Case-insesitive Dateisystem für seine Systempartition verwendet, sollte man eine Virtual Disk mit einem case-sensetive HSF+ Dateisystem anlegen.

sudo hdiutil create esp-toolchain.dmg -volname "ESP8266-Toolchain" -size 5g -fs "Case-sensitive HFS+"

Einbinden kann man das Dateisystem OS X typisch mit dem Befehl

sudo hdiutil mount esp-toolchain.dmg

Bevor man mit dem bauen des SDK anfangen kann, müssen noch einige Abhängigkeiten installiert werden

brew tap homebrew/dupes
brew install binutils coreutils automake wget gawk libtool gperf gnu-sed --with-default-names grep
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"

Nun clont man das ESP8266 SDK Repository direkt von Github

git clone --recursive https://github.com/pfalcon/esp-open-sdk.git

Jetzt hat man zwei Möglichkeiten wie man die Toolchain baut.

  1. Als Standalone Version, damit wird das SDK mit dem GCC zusammenführt und es ist nicht nötig beim bauen den Pfad des SDK mit anzugeben. Diese Variante hat den Vorteil, dass wenn das SDK geupdatet wird, dass nicht die gesamte Toolchain neu gebaut werden muss.
  2. Als getrennte Version von SDK und Toolchain. Hier wird die Toolchain ARM-GCC usw. und das eigentliche SDK getrennt gebaut. Entscheidet man sich für diese Methode, dann muss man beim Kompilieren von Projekten steht den Pfad zum SDK mit angeben.

    xtensa-lx106-elf-gcc -I$(THISDIR)/sdk/include -L$(THISDIR)/sdk/lib

Unter OSX 10.9+ muss man noch einen kleinen Fix vornehmen, damit das bauen der Toolchain funktioniert anderfalls stößt man auf folgenden Fehler:

[ERROR] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstddef:46:9: error: no member named 'ptrdiff_t' in the global namespace

Umgehen kann man den Fehler mit folgdem sed aufruf, den man vor dem bauen der Toolchain ausführen sollte.

sed -i '/__need_size_t/d' ./crosstool-NG/.build/src/gmp-5.1.3/gmp-h.i

Jetzt für die Standalone-Variante

make standalone=y

oder für die getrennte Variante von SDK und Toolchain

make standalone=n

Das übersetzen kannn je nach System etwas länger dauern. Auf einem Intel Core i5 4258U (MacBook Pro late 2013) dauert es ca. 15 Minuten.

Am ende sollte der Vorgang mit einer Meldung ähnlich dieser beendet weorden sein

Xtensa toolchain is built, to use it:

export PATH=/Volumes/ESP8266-Toolchain/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

Espressif ESP8266 SDK is installed, its libraries and headers are merged with the toolchain

Den im Terminal angegebenen Exportbefehl sollte man kopieren, in die Konsole einfügen und ausführen, damit der Pfad der Toolchain auch in der Shell bekannt ist. Dies muss man, entweder jedes mal bevor man eine neue Shell öffnet machen oder man trägt den Befehl in die ~/.bash_rc bzw. ~/.zshrc ein.