●ESP32 の 退避(バックアップ)/復旧(リストア)
●はじめに …  稼働実績のあるスケッチを、同じESP32に(再)書き込みすると …  コンパイルエラーになりました。 ■コンパイルエラーの要因  不適切なバージョン設定により、不整合部分が組み込まれた環境下になった。  「 開発環境の依存度 」が高いのが、気になります。 ・過去にも同じ事象が発生しており …  再インストールから各設定まで、試行錯誤での対応により  暫定的に復旧できましたが、かなりの労力が必要でした。 ・各ライブラリが完全に復元していないようで、コンパイルできても稼働させると  まともに動かなかったので、スケッチの修正が必要でした。  他にも不具合があるかも ? … 様子をみながら使用しています。
●実装する基板のプログラムに対して、修正反映する場合  ・通常の開発環境(Arduino IDE)から、(再)書き込みしていますが …   ■他の方法として    ・開発環境に依存しない、条件下で …     実装プログラムの (再)書き込みを、試してみます。
・ ・ ●基本的な考え方 ・ ・  ■フラッシュメモリ … 全体をリカバリーする。 ・
●PC( Windows )の環境で …「 esptool 」を使用して処理します。
■「 esptool 」 は … Espressif社が、公開しているツールです。  ・ESP32用のブートローダーと通信する Pythonプログラムを活用します。  ・パソコンに、Pythonをインストールしてから、esptoolもインストールしました。
●基本事項 ・ESP32限定のリカバリーをする。 ・リカバリー対象は …… フラッシュメモリ ・バックアップ範囲は … リカバリー対象の全領域 ・バックアップ出力は … バイナリファイル(bin) ・Arduino 統合開発環境( Arduino IDE )に依存しない。
・ ・【1】ESP32の情報を取得します。 ・ ・  ・フラッシュの読み出し( esptool flash_id ) ・
●ESP32を … パソコン(USB)接続して、DOSコマンドの実行です。 esptool --port COM10 flash_id *port指定しない場合 … 自動選択してくれました。
●実行結果です。 C:\Users\ejiri>esptool --port COM10 flash_id Warning: Deprecated: Command 'flash_id' is deprecated. Use 'flash-id' instead. esptool v5.1.0 Connected to ESP32 on COM10: Chip type: ESP32-D0WD-V3 (revision v3.1) Features: Wi-Fi, BT, Dual Core + LP Core, 240MHz, Vref calibration in eFuse, Coding Scheme None Crystal frequency: 40MHz MAC: 48:e7:29:a3:c0:5c Stub flasher running. Flash Memory Information: ========================= Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash voltage set by a strapping pin: 3.3V Hard resetting via RTS pin...
●USB接続しているESP32(チップ)の情報は … Detected flash size: 8MB ↓ 8Mフラッシュが搭載されている … 確認できました。
・ ・【2】ESP32(フラッシュメモリ)バックアップ ・ ・  ・フラッシュの読み出し( read_flash ) ・
●プログラムコードやデータを記憶している … 不揮発性メモリをバックアップします。 ・ESP32を … パソコン(USB)接続して、バッチファイルの実行です。 フラッシュメモリの開始アドレス0x00000から8M(0x800000)を読み出して パソコンにファイル(ESP32E-01-8M-DATA-01.bin)出力します。 esptool --chip esp32 --port COM10 --baud 115200 read_flash 0 0x800000 ESP32E-01-8M-DATA-01.bin
●バッチファイルです。 … ESP32E-01-8M-BACKUP-01.BAT :: ●ESP32(フラッシュメモリ)バックアップ@処理 :: echo *** ESP32E-01-8M-BACKUP-01 *** :: *********************** :: * 設定 * :: *********************** set PORT=COM10 set APP=ESP32E-01-8M-DATA-01 pause echo *** ESP32E-01-8M-BACKUP-01 START *** :: *********************** :: * バックアップ処理 * :: *********************** esptool ^ --chip esp32 ^ --port %PORT% ^ --baud 115200 ^ read_flash 0 0x800000 %APP%.bin echo *** ESP32-APL-BACKUP-01 END *** pause
●実行結果です。 C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>echo *** ESP32E-01-8M-BACKUP-01 *** *** ESP32E-01-8M-BACKUP-01 *** C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>set PORT=COM10 C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>set APP=ESP32E-01-8M-DATA-01 C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>pause 続行するには何かキーを押してください . . . C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>echo *** ESP32E-01-8M-BACKUP-01 START *** *** ESP32E-01-8M-BACKUP-01 START *** C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>esptool --chip esp32 --port COM10 --baud 115200 read_flash 0 0x800000 ESP32E-01-8M-DATA-01.bin Warning: Deprecated: Command 'read_flash' is deprecated. Use 'read-flash' instead. esptool v5.1.0 Connected to ESP32 on COM10: Chip type: ESP32-D0WD-V3 (revision v3.1) Features: Wi-Fi, BT, Dual Core + LP Core, 240MHz, Vref calibration in eFuse, Coding Scheme None Crystal frequency: 40MHz MAC: 48:e7:29:a3:c0:5c Stub flasher running. Configuring flash size... Read 8388608 bytes from 0x00000000 in 773.6 seconds (86.8 kbit/s) to 'ESP32E-01-8M-DATA-01.bin'. Hard resetting via RTS pin... C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>echo *** ESP32-APL-BACKUP-01 END *** *** ESP32-APL-BACKUP-01 END *** C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>pause 続行するには何かキーを押してください . . .
・ ・【3】ESP32(フラッシュメモリ)リストア ・ ・  ・フラッシュの書き込み( write_flash ) ・
●パソコンにバックアップしたものを、ESP32本体に戻す。 ・ESP32を … パソコン(USB)接続して、バッチファイルの実行です。 パソコンのバックアップファイル(ESP32E-01-8M-DATA-01.bin)を ESP32(フラッシュメモリ)に書き込みます。 esptool --chip esp32 --port COM10 --baud 115200 write_flash 0x00000 ESP32E-01-8M-DATA-01.bin
●バッチファイルです。 … ESP32E-01-8M-RELOAD-01.BAT :: ●ESP32(フラッシュメモリ)リストア@処理 :: echo *** ESP32E-01-8M-RELOAD-01 *** :: *********************** :: * 設定 * :: *********************** set PORT=COM10 set APP=ESP32E-01-8M-DATA-01 pause echo *** ESP32E-01-8M-RELOAD-01 START *** :: *********************** :: * リストア処理 * :: *********************** esptool ^ --chip esp32 ^ --port %PORT% ^ --baud 115200 ^ write_flash 0x00000 %APP%.bin echo *** ESP32E-01-8M-RELOAD-01 END *** pause
●実行結果です。 C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>echo *** ESP32E-01-8M-RELOAD-01 *** *** ESP32E-01-8M-RELOAD-01 *** C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>set PORT=COM10 C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>set APP=ESP32E-01-8M-DATA-01 C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>pause 続行するには何かキーを押してください . . . C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>echo *** ESP32E-01-8M-RELOAD-01 START *** *** ESP32E-01-8M-RELOAD-01 START *** C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>esptool --chip esp32 --port COM10 --baud 115200 write_flash 0x00000 ESP32E-01-8M-DATA-01.bin Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. esptool v5.1.0 Connected to ESP32 on COM10: Chip type: ESP32-D0WD-V3 (revision v3.1) Features: Wi-Fi, BT, Dual Core + LP Core, 240MHz, Vref calibration in eFuse, Coding Scheme None Crystal frequency: 40MHz MAC: 48:e7:29:a3:c0:5c Stub flasher running. Configuring flash size... Flash will be erased from 0x00000000 to 0x007fffff... Wrote 8388608 bytes (1232124 compressed) at 0x00000000 in 123.4 seconds (543.9 kbit/s). Hash of data verified. Hard resetting via RTS pin... C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>echo *** ESP32E-01-8M-RELOAD-01 END *** *** ESP32E-01-8M-RELOAD-01 END *** C:\Users\ejiri\デスクトップ\●ESP32 リカバリ>pause 続行するには何かキーを押してください . . .
・ ・ ・ ●その他 ・ ・
●フラッシュの削除(erase_flash) esptool --chip esp32 --port COM10 --baud 115200 erase_flash フラッシュメモリを初期化します。
C:\Users\ejiri>esptool --chip esp32 --port COM10 --baud 115200 erase_flash Warning: Deprecated: Command 'erase_flash' is deprecated. Use 'erase-flash' instead. esptool v5.1.0 Connected to ESP32 on COM10: Chip type: ESP32-D0WD-V3 (revision v3.1) Features: Wi-Fi, BT, Dual Core + LP Core, 240MHz, Vref calibration in eFuse, Coding Scheme None Crystal frequency: 40MHz MAC: 48:e7:29:a3:c0:5c Stub flasher running. Flash memory erased successfully in 3.7 seconds. Hard resetting via RTS pin...
●リストアする場合  ・事前に、フラッシュメモリを … 初期化した方が、いいかも

・ ・ ■■■■■■ 【 リカバリ運用管理 】 ■■■■■■ ・ ・     ●リカバリー ESP32(8M)処理 @ ・ ・  【 リカバリー(限定)タイプ : ESP32(8M) 】
●基本モジュール //******************************************************** //【Taka袋(IOM)ネット】●オムニ4輪【D】実装@プログラム // ESPマイコン(ESP32): ESP32-OMNI4-IOM-D-01-97 //-------------------------------------------------------- //●システムパラメータ(SET)… ESP32-EEPROM-PUT-08 // *キャタピラ駆動2輪用 ( ESP32-EEPROM-PUT-08-DMD ) //-------------------------------------------------------- //●バックアップファイル …… ESP32E-01-8M-DATA-01.bin // *キャタピラ駆動2輪用 ( ESP32E-01-8M-DATA-02.bin ) //********************************************************
●ESP32E 8M(フラッシュメモリ)バックアップファイル ・ESP32E-01-8M-DATA-01.bin : オムニ4輪駆動版 ・ESP32E-01-8M-DATA-02.bin : キャタピラ2輪駆動版
・ ・ ・ ・ ・