ESP8266がもうすぐ使えるかもしれない、ということで、早速ビルド環境を構築してみることにしました。
https://github.com/pfalcon/esp-open-sdk
にある esp-open-sdk を使えるようにすることがターゲットになります。
1.Debianのインストール
まあ、Debianは普通にDebian7.8をVMware上でインストールします。
(2回目のインストールはUbuntu14.04LTS上にインストールしました。)
2.ツール類のインストール
環境構築に必要なパッケージ類をインストールします。
$ sudo apt-get install make autoconf automake libtool gcc g++ gperf flex bison texinfo gawk ncurses-dev libexpat-dev python sed git
3.環境構築
以下の手順で環境構築します。
$ git clone https://github.com/pfalcon/esp-open-sdk $ cd esp-open-sdk $ make STANDALONE=n
・・・・とすると、勝手にいろんなものを引っ張ってきてコンパイルしてくれます。マルチコアだからといって、make で -j 2 とか付けたりするとうまく行きません。
4.パスの修正
ホームディレクトリの .profile に以下の内容を追記して、xtensa用のgccをパスに追加します。
# add esp8266 tools to PATH PATH="$HOME/esp-open-sdk/xtensa-lx106-elf/bin:$PATH"
一旦ログオフしてログオンしなおしてから、正しくパスが通っているか確認します。
~$ xtensa-lx106-elf-gcc -v Using built-in specs. COLLECT_GCC=xtensa-lx106-elf-gcc COLLECT_LTO_WRAPPER=/home/xxx/esp-open-sdk/xtensa-lx106-elf/libexec/gcc/xtensa-lx106-elf/4.8.2/lto-wrapper Target: xtensa-lx106-elf Configured with: /home/xxx/esp-open-sdk/crosstool-NG/.build/src/gcc-4.8.2/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=xtensa-lx106-elf --prefix=/home/xxx/esp-open-sdk/xtensa-lx106-elf --with-local-prefix=/home/xxx/esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --disable-libmudflap --with-sysroot=/home/xxx/esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG 1.20.0' --disable-__cxa_atexit --with-gmp=/home/xxx/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpfr=/home/xxx/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpc=/home/xxx/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-isl=/home/xxx/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-cloog=/home/xxx/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-libelf=/home/xxx/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --enable-lto --enable-target-optspace --disable-libgomp --disable-libmudflap --disable-nls --disable-multilib --enable-languages=c,c++ Thread model: single gcc version 4.8.2 (crosstool-NG 1.20.0) ~$
5.アップデートの適用
以下の手順で環境のアップデートを適用します。
$ cd ~/esp-open-sdk $ make clean rm -rf esp_iot_sdk_v0.9.5 rm -f sdk rm -f .sdk_patch_0.9.5 make -C crosstool-NG clean MAKELEVEL=0 make: ディレクトリ `/home/xxx/esp-open-sdk/crosstool-NG' に入ります RM 'ct-ng' RM 'scripts/crosstool-NG.sh' RM 'scripts/saveSample.sh' RM 'scripts/showTuple.sh' RM 'paths' RM 'config/configure.in' RM 'kconfig' RM 'docs/ct-ng.1' RM 'docs/ct-ng.1.gz' make: ディレクトリ `/home/xxx/esp-open-sdk/crosstool-NG' から出ます rm -rf /home/xxx/esp-open-sdk/xtensa-lx106-elf $ git pull Already up-to-date. $ git submodule update --init --recursive Submodule 'crosstool-NG' () registered for path 'crosstool-NG' Submodule 'esptool' () registered for path 'esptool' Submodule 'lx106-hal' () registered for path 'lx106-hal' $ make STANDALONE=n
※クロスコンパイラを再構築するので、時間がかかります。
6.exampleのコンパイル
以下の手順でコンパイルを試みているが、まだうまく行かない。
$ cd ~/esp-open-sdk/sdk $ mv example/IoT_Demo . $ cd IoT_Demo $ make COMPILE=gcc
コンパイルする対象ディレクトリは sdk 直下に必要な模様。
私は以下を参考に、Dockerで整備しました。
(当然ですが)非常に簡単にサンプルのビルドまですることができました。
http://blog.squix.ch/2015/01/esp8266-using-docker-to-setup-build.html
ご参考までに。