趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • esp8266用の環境を構築する(続き)

    投稿日 2015年 4月 10日 コメントはありません

    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に書き込む方法が載ってました。

    http://hackaday.com/2015/03/18/how-to-directly-program-an-inexpensive-esp8266-wifi-module/


    コメントをどうぞ(日本語のみ/Only in Japanese)

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