2015年7月31日金曜日

ESP-WROOM-02 WiFiモジュール firmware update

OS-X環境でESP-WROOM-02のfirmware version upをしようとしてちょっとハマったのでメモ。

最初に基板の改造です。
UART書き込み出来るようにIO0に切り替えスイッチを追加(pull-upしてあるのでGNDとショートするスイッチを追加)


上に出ているコネクタはUARTの通信を横から監視するためのdebug用コネクタです。

まず、書き込みツールのinstall
# git clone https://github.com/themadinventor/esptool.git
# cd esptool
# python setup.py install

次にfirmwareのイメージの準備
ESPRESSOのDownload BSSのTOPICSの中から最新のESP8266 SDKを選択
今回はESP8266 SDK (esp_iot_sdk_v1.2.0_mesh_v0.0.6_15_07_03)にAttachされている
esp_iot_sdk_v1.2.0_mesh_v0.0.6_15_07_03.zip
をダウンロードして解凍し、firmwareのイメージがあるdirectoryに移動
# cd esp_iot_sdk_v1/esp_iot_sdk_v1.2.0/bin

モジュールのIO0をLowに落としてリセットしUART書き込みモードに切り替えます。

最初に間違えて消してしまった時のためにMACアドレスを確認しておきます。
# esptool.py -p /dev/cu.usbserial-A101JG84 read_mac
Connecting...
MAC: xx:xx:xx:xx:xx:xx

次にイメージを書き込みます。
最初のときは
# esptool.py -p /dev/cu.usbserial-A101JG84 write_flash 0xfe000 blank.bin 0x00000 boot_v1.4\(b1\).bin 0x1000 at/user1.1024.new.2.bin 0xfc000 esp_init_data_default.bin
とやったら書き込みは完了したのですが、通常モードにして起動してuart terminalからアクセスするとゴミを大量に吐きまくってる状態になってしまいました。

これの解析のためにdebug用のコネクタを追加してUARTの通信をのぞいて色々調べてみると送信しているheaderの中のflash_size指定のbitが4Mbitになっているのがうまく書き込めていない原因のようです。これの解析に4〜5時間かかってしまいました。

esptoolのhelpをみるとwrite_flash用のoptionがあるようで
# esptool.py write_flash --help
で-ff -fm -fsのオプションをみつけて指定したところうまくいきました。

# esptool.py -p /dev/cu.usbserial-A101JG84 write_flash -ff 40m -fm qio -fs 32m 0xfe000 blank.bin 0x00000 boot_v1.4\(b1\).bin 0x1000 at/user1.1024.new.2.bin 0xfc000 esp_init_data_default.bin

Connecting...
Erasing flash...
Writing at 0x000fec00... (100 %)
Erasing flash...
Writing at 0x00000800... (100 %)
Erasing flash...
Writing at 0x00040c00... (100 %)
Erasing flash...
Writing at 0x000fc000... (100 %)

Leaving...

モジュールのIO0をHighに戻してリセットし通常モードにします。
terminalを接続しVersionを確認すると
AT+GMR
AT version:0.30.0.0(Jul  3 2015 19:35:49)
SDK version:1.2.0
compile time:Jul  3 2015 20:52:32
OK

無事Version upされてます。

0 件のコメント:

コメントを投稿