esp_open_sdkをインストールする


esp_open_sdkはESP8266(Xtensa LX106)用のtoolchainです。
コンパイルに必要な一式が含まれています。
esp_open_sdkのインストール方法はいくつかありますので紹介します。


ESP8266 core for Arduinoに付属のPreBuildバイナリをインストールする

ESP8266 core for Arduinoでは最終的にesp_open_sdkを使ってESP8266用のバイナリを生成します。
こちらにESP8266 core for Arduinoで使われているPreBuildバイナリのインストール方法が公開されています。
「package_esp8266com_index.json」は、結構大きなファイルなので「xtensa-lx106-elf-gcc」で 探すと
ダウンロードURLにたどり着きます。
圧縮ファイルをダウンロードして展開するだけで使えるようになります。
2019年1月時点で公開されているバージョンは4.8.2でした。



ESP8266_RTOS_SDKに付属のPreBuildバイナリをインストールする

ESP8266_RTOS_SDKはespressifが提供しているRTOSベースの開発環境ですが、
こちらのページの Get toolchain からPreBuildバイナリをダウンロードすることができます。
こちらも、圧縮ファイルをダウンロードして展開するだけで使えるようになります。
2019年1月時点で公開されているバージョンは5.2.0でした。



SelfBuildでインストールする

こちらに esp_open_sdkのソース一式が公開されていますが、これを使ってセルフビルドすることができます。
セルフビルドを行うためにはDebian/UbuntuかMacOSが必要になります。
今回はUbuntuをベースにしているLinux Mintを使ってセルフビルドしました。
使用した環境は以下のようなものです。


最初に以下のパッケージをインストールします。
$ sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf \
  flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial \
  sed git unzip bash help2man wget bzip2 libtool-bin

esp-open-sdkのビルドは一時間ぐらいかかりました。
$ git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
$ cd esp-open-sdk
$ make

makeが終わると、xtensa用のtoolchainが出来上がります。
バージョンは4.8.5でした。




久しぶりにesp_open_sdkをセルフビルドしましたが、Ubuntu22.04ではビルドが通りません。
この様なエラーになります。
$ git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
$ cd esp-open-sdk
$ make

 configure: error: missing required tool: bison
make[1]: *** [../Makefile:149: _ct-ng] エラー 1
make[1]: ディレクトリ '/home/nop/esp-open-sdk/crosstool-NG' から出ます
make: *** [Makefile:145: crosstool-NG/ct-ng] エラー 2

エラーを回避するためのfolkが多数公開されていますが、Ubuntu22.04でビルドできるfolkが見つかりません。
以下のfolkがかなりいいところまで行きますが、cross-gdbのインストールでエラーになります。
$ git clone --recursive https://github.com/ChrisMacGregor/esp-open-sdk
$ cd esp-open-sdk
$ make

[ERROR]    configure: error: failure running python-config --includes
[ERROR]    gmake[4]: *** [Makefile:8725: configure-gdb] Error 1
[ERROR]    gmake[3]: *** [Makefile:845: all] Error 2
[ERROR]
[ERROR]  >>
[ERROR]  >>  Build failed in step 'Installing cross-gdb'
[ERROR]  >>        called in step '(top-level)'
[ERROR]  >>
[ERROR]  >>  Error happened in: CT_DoExecLog[scripts/functions@257]
[ERROR]  >>        called from: do_debug_gdb_build[scripts/build/debug/300-gdb.sh@120]
[ERROR]  >>        called from: do_debug[scripts/build/debug.sh@35]
[ERROR]  >>        called from: main[scripts/crosstool-NG.sh@646]
[ERROR]  >>
[ERROR]  >>  For more info on this error, look at the file: 'build.log'
[ERROR]  >>  There is a list of known issues, some with workarounds, in:
[ERROR]  >>      'share/doc/crosstool-ng/crosstool-ng-1.22.0-60-g37b07f6f-dirty/B - Known issues.txt'
[ERROR]
[ERROR]  (elapsed: 28:25.61)

こんなところにもESP8266の終焉を感じてしまいます。
セルフビルドするためにはUbuntu18.04を使う必要が有ります。



いずれの方法でも、最後にtoolchainのパスを追加します。
ここを変えれば、色々なバージョンのtoolchainを使うことができます。
$ cd $HOME
$ vi .profile

#末尾に以下を追加
PATH=$HOME/esp-open-sdk/xtensa-lx106-elf/bin:$PATH
export PATH

以下の様に表示されれば、toolchainの設定は完了です。