ESP8266(ESP-12E, ESP-12F) Firmware Update

ESP8266のファームアップデートの方法は幾つかあるようですが、ESP8266製造元の公式ツールFlash Download Tool(Windows版のみ)と、esptool(Linux, OSX)などが利用されているようです。

WindowsによるFlash Download Tool
Python esptool (Linux, OSX)
esptool-ck (WIndows, Linux, OSX ソースコード コンパイル必須)
Windowsは普段使用しないのですが、公式ツールであることから、上記1にてファームのアップデート(アップロード)を試みました。

シリアル通信にてPCと接続します。アップロード時の配線は通常のコードアップロード時の条件と同じで以下の図のようになります。

図のようにCH_PD、RST端子に何も接続しなくても、GPIO0をGNDに接続してON/OFFすれば書き込みモードになります。

リンク先からFlash Download Toolをダウンロードしインストールします。ファームのダウンロードはLatest SDKからNon-OS-SDKをダウンロードします。

ダウンロードしたファームを任意のフォルダ内に解凍します。

アップロードするファームはESP内の指定アドレス毎に幾つか存在するため、予めダウンロードしたファームの at フォルダ内の README を開いておいて下さい。
(binファイル名と指定アドレスが必要ですので、ここで確認します)

BOOT MODE

download

Flash size 8Mbit: 512KB+512KB

boot_v1.2+.bin              0x00000
user1.1024.new.2.bin        0x01000
esp_init_data_default.bin   0xfc000 (optional)
blank.bin                   0x7e000 & 0xfe000
Flash size 16Mbit: 512KB+512KB

boot_v1.2+.bin              0x00000
user1.1024.new.2.bin        0x01000
esp_init_data_default.bin   0x1fc000 (optional)
blank.bin                   0x7e000 & 0x1fe000
Flash size 16Mbit-C1: 1024KB+1024KB

boot_v1.2+.bin              0x00000
user1.2048.new.5.bin        0x01000
esp_init_data_default.bin   0x1fc000 (optional)
blank.bin                   0xfe000 & 0x1fe000
Flash size 32Mbit: 512KB+512KB

boot_v1.2+.bin              0x00000
user1.1024.new.2.bin        0x01000
esp_init_data_default.bin   0x3fc000 (optional)
blank.bin                   0x7e000 & 0x3fe000
Flash size 32Mbit-C1: 1024KB+1024KB

boot_v1.2+.bin              0x00000
user1.2048.new.5.bin        0x01000
esp_init_data_default.bin   0x3fc000 (optional)
blank.bin                   0xfe000 & 0x3fe000

Flash Download Toolを起動し、アップロードするファームのbinファイル(パスは画像参照)とメモリアドレスを指定しますが、メモリアドレスはESPのモデル毎で異なります。

シリアルで接続されたESPモデルの情報を読み取ります。
Download Path Configの指定binファイルのチェックが外れている状態でSTARTボタンを押し、シリアルで接続されたESP8266の各種情報を読み取ります。

フラッシュメモリのサイズQUAD:32Mbit=4MBですので、指定アドレスは、

Flash size 32Mbit: 512KB+512KB

boot_v1.2+.bin              0x00000
user1.1024.new.2.bin        0x01000
esp_init_data_default.bin   0x3fc000 (optional)
blank.bin                   0x7e000 & 0x3fe000

となります。

ここで一度リセットボタンを押すか電源OFF/ONします。

binファイルのパスとアドレスを指定し、Download Config Path、SipAutoSetのチェックをしSTARTボタンを押してアップロードをスタートします。

アップロードが完了したらPuttyなどのシリアル通信ソフトでATコマンドが有効になっているかどうか確認します。

AT+リターン Ctrl+Jで入力確定しOKが出力されれば成功です。

<補足> ESP8266 USING GPIO0/GPIO2/GPIO15 PINS

Ubuntuによるファームのアップデートにはpythonによるesptoolが便利です。

注)ESP用電源は専用のものを準備してUSBーシリアルコンバータとグランドを共通にします。USBの電源だけでも書き込みは完了しますが動作エラーが多発します。ArduinoIDEによるファームのアップロードの際も同様です。

まずpythonのパッケージマネージャpipをインストールします。

pyhton3をインストールしている場合には、

$ sudo apt-get install python3-pip

次にesptoolをインストールします。

$ sudo -H pip3 install esptool

フラッシュメモリを消去します。ポートの指定は必要ありません。

$ sudo esptool.py erase_flash

一度リセットしてから上の記事でダウンロードしたファームをアップロードします。他のソフトでシリアル接続している場合はエラーとなります。

$ sudo esptool.py --port /dev/ttyUSB0 write_flash --flash_mode dio --flash_size 4MB 0x00000 boot_v1.7.bin 0x01000 user1.1024.new.2.bin 0x3fc000 esp_init_data_default_v08.bin 0x7e000 blank.bin 0x3fe000 blank.bin

シリアルポートと開始アドレスなどを指定してファームを書き込みます。
ここでのファームはATコマンドによる通信ファームでファクトリー出荷時と同等となりますが、バージョンは最新のものとなっています。ArduinoIDEのシリアルモニタでATコマンドを入力して動作を確認して下さい。