esp8266用の環境を構築する(続き)

ESP8266用の環境構築の続きです。

7.MicroPythonをビルドしてみる

ExampleはMakefileが複雑すぎる、ということでESP8266用のMicroPythonをビルドしてみました。

1)ソースコードのダウンロード

gitでダウンロードしてきます。

~$ git clone https://github.com/micropython/micropython
Cloning into 'micropython'...
remote: Counting objects: 26530, done.
remote: Compressing objects: 100% (341/341), done.
remote: Total 26530 (delta 165), reused 0 (delta 0), pack-reused 26185
Receiving objects: 100% (26530/26530), 17.02 MiB | 1.85 MiB/s, done.
Resolving deltas: 100% (18858/18858), done.
Checking connectivity... done.
~$

2)ビルドしてみる

makeしてみます。

~$ cd micropython/
~/micropython$ ls
ACKNOWLEDGEMENTS bare-arm esp8266 logo stmhal unix
CODECONVENTIONS.md cc3200 examples minimal teensy unix-cpy
LICENSE docs extmod py tests windows
README.md drivers lib qemu-arm tools
~/micropython$ cd esp8266/
~/micropython/esp8266$ make
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
mkdir -p build/genhdr
CPP ../py/qstrdefs.h
makeqstrdata ../py/qstrdefs.h qstrdefsport.h 
Generating build/genhdr/py-version.h
mkdir -p build/lib/mp-readline
mkdir -p build/py
mkdir -p build/py/../extmod
mkdir -p build/stmhal
CC ../py/mpstate.c
CC ../py/nlrx86.S
   :
   :
CC ../py/../extmod/moduhashlib.c
CC ../py/../extmod/modubinascii.c
CC strtoll.c
CC main.c
CC esp_mphal.c
esp_mphal.c:28:21: fatal error: ets_sys.h: No such file or directory
 #include "ets_sys.h"
                     ^
compilation terminated.
make: *** [build/esp_mphal.o] エラー 1
~/micropython/esp8266$

ということで、ヘッダファイルが見つからないようで、エラーになってしまいました。

3)原因調査とMakefileの修正

このファイルはSDKの中に含まれているようです。

~$ find . -name "ets_sys.h" -print
./esp-open-sdk/esp_iot_sdk_v0.9.5/include/ets_sys.h

~/esp-open-sdk ディレクトリの下では、SDKのインストール時に sdk から esp_iot_sdk_v0.9.5 へのシンボリックリンクが張られているので、Makefileの冒頭にあるESP_SDKの定義を以下のとおり修正します。(コメントアウトしたのが修正前の内容)

#ESP_SDK = $(shell $(CC) -print-sysroot)/usr
ESP_SDK = /home/xxx/esp-open-sdk/sdk

4)ビルドの続き

ビルドの続きを行います。

~/micropython/esp8266$ make
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
Generating build/genhdr/py-version.h
CC esp_mphal.c
CC gccollect.c
CC uart.c
CC modpyb.c
CC modpybpin.c
CC modesp.c
AS gchelper.s
CC ../stmhal/printf.c
CC ../stmhal/string0.c
CC ../stmhal/pyexec.c
CC ../stmhal/pybstdio.c
CC ../lib/mp-readline/readline.c
LINK build/firmware.elf
 text data bss dec hex filename
 283992 1456 48664 334112 51920 build/firmware.elf
Create build/firmware-combined.bin
('flash ', 48288)
('padding ', 17248)
('irom0text', 237208)
('total ', 302744)
~/micropython/esp8266$

無事にビルドができました。

8.esptoolの準備

ESP8266のROM書き換えのためのツールである esptool も ~/esp-open-sdk/esptool の下に準備されます。

ESP8266との接続の方法はこのディレクトリ内の README.md に記述されています。

## Protocol
If GPIO0 and GPIO15 is pulled down and GPIO2 is pulled high when the module leaves reset, then the bootloader will enter the UART download mode. The ROM auto-bauds, that is, it will automagically detect which baud rate you are using. esptool defaults to 115200.
esptool uses the RTS and DTR modem status lines to automatically enter the bootloader.
Connect RTS to CH_PD (which is used as active-low reset) and DTR to GPIO0.

ということで、ESP8266とUSB-UARTモジュールの間を以下の結線をします。

  • CH-PDをRTSに接続
  • GPIO0をDTRに接続
  • GPIO15をGNDへプルダウン
  • GPIO2を3.3Vへプルアップ

この接続をしておけばesptoolが勝手にESP8266をブートローダモードに移行させてくれるようです。
<esptoolsの参考情報>
https://testpypi.python.org/pypi/esptool/0.1.0

 9.Hack a Dayで発見した記事

Hack a DayでESP8266に書き込む方法が載ってました。

How to Directly Program an Inexpensive ESP8266 WiFi Module

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)