動機
TTGO T-Cameraを買った。
もともと入っているファクトリーファームは高機能。
他のプログラムを入れると消えてしまう。
ときどき、元のファームウェアに戻して、参考にしたい。
下準備
Anaconda をインストールし、Anaconda Promptを起動して、
"pip install esptool"と入力し、esptoolをインストールする。
Anaconda Promptで"esptool"と入力すると、ヘルプが見られる。
(base) C:\WINDOWS\system32>esptool
esptool.py v2.8
usage: esptool [-h] [--chip {auto,esp8266,esp32}] [--port PORT] [--baud BAUD]
[--before {default_reset,no_reset,no_reset_no_sync}]
[--after {hard_reset,soft_reset,no_reset}] [--no-stub]
[--trace] [--override-vddsdio [{1.8V,1.9V,OFF}]]
{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}
...
esptool.py v2.8 - ESP8266 ROM Bootloader Utility
positional arguments:
{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}
Run esptool {command} -h for additional help
load_ram Download an image to RAM and execute
dump_mem Dump arbitrary memory to disk
read_mem Read arbitrary memory location
write_mem Read-modify-write to arbitrary memory location
write_flash Write a binary blob to flash
run Run application code in flash
image_info Dump headers from an application image
make_image Create an application image from binary files
elf2image Create an application image from ELF file
read_mac Read MAC address from OTP ROM
chip_id Read Chip ID from OTP ROM
flash_id Read SPI flash manufacturer and device ID
read_flash_status Read SPI flash status register
write_flash_status Write SPI flash status register
read_flash Read SPI flash content
verify_flash Verify a binary blob against flash
erase_flash Perform Chip Erase on SPI flash
erase_region Erase a region of the flash
version Print esptool version
optional arguments:
-h, --help show this help message and exit
--chip {auto,esp8266,esp32}, -c {auto,esp8266,esp32}
Target chip type
--port PORT, -p PORT Serial port device
--baud BAUD, -b BAUD Serial port baud rate used when flashing/reading
--before {default_reset,no_reset,no_reset_no_sync}
What to do before connecting to the chip
--after {hard_reset,soft_reset,no_reset}, -a {hard_reset,soft_reset,no_reset}
What to do after esptool.py is finished
--no-stub Disable launching the flasher stub, only talk to ROM
bootloader. Some features will not be available.
--trace, -t Enable trace-level output of esptool.py interactions.
--override-vddsdio [{1.8V,1.9V,OFF}]
Override ESP32 VDDSDIO internal voltage regulator (use
with care)'
(base) C:\WINDOWS\system32>
バックアップの仕方
Anaconda Promptで、"esptool.exe ~ read_flash ~"を実行する。
WindowsのDevice Managerで、TTGO T-Cameraのポート番号(ここではcom8)を確認して指定する。
(実は、指定しなくても、自動で認識して動作するみたいです。)
(base) C:\WINDOWS\system32>esptool.exe -c esp32 -p com8 -b 115200 read_flash 0 0x400000 d:\esp32_firmware.bin
esptool.py v2.8
Serial port com8
Connecting.....
Chip is ESP32D0WDQ5 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: c8:2b:96:88:21:64
Uploading stub...
Running stub...
Stub running...
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x0 in 394.9 seconds (85.0 kbit/s)...
Hard resetting via RTS pin...'
(base) C:\WINDOWS\system32>
バックアップからの戻し方
Anaconda Promptで、"esptool.exe ~ write_flash ~"を実行する。
(base) C:\WINDOWS\system32>esptool.exe -c esp32 -p com8 -b 115200 write_flash 0 d:\esp32_firmware.bin
esptool.py v2.8
Serial port com8
Connecting....
Chip is ESP32D0WDQ5 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: c8:2b:96:88:b8:60
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 4194304 bytes to 493980...
Wrote 4194304 bytes (493980 compressed) at 0x00000000 in 46.7 seconds (effective 718.2 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...'
(base) C:\WINDOWS\system32>
私のところでは、以上により、ちゃんと元のファクトリーファームに戻りました。
皆さんもお試しあれ。
参考記事
https://tomono.tokyo/2019/05/04/7617/
https://lang-ship.com/blog/work/esp32-esptool-py/