2017年6月28日水曜日

ESP8266EXのファーム更新

esptoolを使ってCUIで更新

git clone https://github.com/themadinventor/esptool/




Git入っていない場合はインストール

sudo apt-get install git

cd esptool
sudo python setup.py install

数秒ほどでインストール完了

とりあえずコマンド実行
$ esptool.py
usage: esptool [-h] [--chip {auto,esp8266,esp32}] [--port PORT] [--baud BAUD]
               [--before {default_reset,no_reset}]
               [--after {hard_reset,soft_reset,no_reset}] [--no-stub]
               {load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash_status,write_flash_status,read_flash,verify_flash,erase_flash,erase_region,version}

{ } の中はコマンドっぽい。
Gitのページを見るとwrite_flashを使うとのこと

コマンドのヘルプ
esptool.py write_flash -h

基本↓こんな形式
esptool.py  -p /dev/ttyUSB0 -b 74880 write_flash アドレス ファームイメージ ...

/dev/ttyUSB0はシリアルポート。ArduinoIDEで確認できる。
74880は通信速度。115200でもいいと思う。
74880はboot logが確認できる速度なのでこれにした。

「アドレス ファームイメージ 」は続けて複数指定可能


●ファームダウンロード
http://espressif.com/en/support/download/sdks-demos?keys=&field_type_tid%5B%5D=14
NON-OS SDK V2.1.0
ソースコードのみに見えるけど、解凍するとbinフォルダにファームイメージが入っている。

下記をコピー
blank.bin
boot_v1.7.bin
esp_init_data_default.bin
user1.1024.new.2.bin(bin/at/512+512/下)

●アドレスと対応するイメージ
http://espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf

手持ちのESP-01は黒い基盤なので8Mbit Flashの設定で書き込んでみる。
※設定内容
0xFB000 blank.bin
0xFC000 esp_init_data_default.bin
0x7E000 blank.bin
0xFE000 blank.bin
0x00000 boot_v1.7.bin
0x01000 user1.1024.new.2.bin

●実行
$ esptool.py  -p /dev/ttyUSB0 -b 74880 write_flash \
0xFB000 blank.bin \
0xFC000 esp_init_data_default.bin \
0x7E000 blank.bin \
0xFE000 blank.bin \
0x00000 boot_v1.7.bin \
0x01000 user1.1024.new.2.bin

esptool.py v2.0.1
Connecting........_____....._____....._____....._____....._____....._____....._____....._____....._____....._____

A fatal error occurred: Failed to connect to Espressif device: Timed out waiting for packet header
書き込み失敗。

esptoolのページを見ると retry with a lower baud rate.
通信速度を下げてみる。
-b 9600
同じくエラー

配線を確認。GNDが半田不良だった。

書き込みに成功したので起動してみるが、チェックサムでエラーとなって起動しない。

正常な方の起動ログを見るとFlashModeが DOUT
-fm dout を追加すると起動に成功。

最終的なコマンドは以下。

※Flash 1M版
$ esptool.py  -p /dev/ttyUSB0 -b 74880 write_flash \
-fm dout \
0xFB000 blank.bin \
0xFC000 esp_init_data_default.bin \
0x7E000 blank.bin \
0xFE000 blank.bin \
0x00000 boot_v1.7.bin \
0x01000 user1.1024.new.2.bin

※Flash 4M版(32 Mbit Flash, Map: 512 KB + 512 KB)
WROOM-02用
$ esptool.py  -p /dev/ttyUSB0 -b 74880 write_flash \
0x3FB000 blank.bin \
0x3FC000 esp_init_data_default.bin \
0x7E000 blank.bin \
0x3FE000 blank.bin \
0x00000 boot_v1.7.bin \
0x01000 user1.1024.new.2.bin

115200bpsでシリアル繋げてATコマンドで確認

AT+GMR
AT version:1.4.0.0(May  5 2017 16:10:59)
SDK version:2.1.0(116b762)
compile time:May  5 2017 16:37:48
OK

0 件のコメント:

コメントを投稿