#author("2018-07-30T23:08:57+09:00","","") #author("2018-07-30T23:14:38+09:00","","") *ESP32-DevKitC 工場出荷時のファームウェアをバックアップ **Arduino IDE で開発する前に、まずは工場出荷時のファームウェアをバックアップ <pre> C:\temp>&color(red){<arduinoインストールdir>};\Arduino\hardware\espressif\esp32\tools\&color(blue){esptool.exe --chip esp32 --port ''COM7'' --baud 115200 read_flash 0 0x400000 esp32_firmware.bin}; esptool.py v2.1 Connecting........___ Chip is ESP32D0WDQ6 (revision 1) Uploading stub... Running stub... Stub running... 4194304 (100 %) 4194304 (100 %) Read 4194304 bytes at 0x0 in 382.0 seconds (87.8 kbit/s)... Hard resetting... C:\temp> </pre> ※-baud 921600 ではエラー発生 ※[[esptool.exeの使い方>https://github.com/espressif/esptool]] **ファームウェアを書き戻す時 <pre> C:\temp>&color(red){<arduinoインストールdir>};\Arduino\hardware\espressif\esp32\tools\&color(blue){esptool.exe --chip esp32 --port ''COM7'' --baud 115200 write_flash 0 esp32_firmware.bin}; </pre> **ビルトイン BASIC IO12 を 10kΩ抵抗でプルアップ (IO12 と 3V3 を10kΩ抵抗で繋ぐ) RESET後、コンソールから[Enter] 起動するそうだが、、、以下の繰り返しで起動せず。 <pre> rst:0x1 (POWERON_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371 ets Jun 8 2016 00:22:57 rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371 ets Jun 8 2016 00:22:57 rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371 ets Jun 8 2016 00:22:57 </pre> **eFUSEの値 ※pythonがインストールされており、''pip install esptool''でesptool.pyをインストールすると、espefuse.py が使用可能。 <pre> C:\WINDOWS\system32>&color(blue){espefuse.py --baud 115200 --port COM7 summary}; espefuse.py v2.5.0 Connecting........_ Identity fuses: MAC MAC Address = 24:0a:c4:12:7b:f0 (CRC 04 OK) R/W CHIP_VER_REV1 Silicon Revision 1 = 1 R/W (0x1) CHIP_VERSION Reserved for future chip versions = 0 R/W (0x0) CHIP_PACKAGE Chip package identifier = 0 R/W (0x0) Config fuses: XPD_SDIO_FORCE Ignore MTDI pin (GPIO12) for VDD_SDIO on reset = 0 R/W (0x0) XPD_SDIO_REG If XPD_SDIO_FORCE, enable VDD_SDIO reg on reset = 0 R/W (0x0) XPD_SDIO_TIEH If XPD_SDIO_FORCE & XPD_SDIO_REG, 1=3.3V 0=1.8V = 0 R/W (0x0) SPI_PAD_CONFIG_CLK Override SD_CLK pad (GPIO6/SPICLK) = 0 R/W (0x0) SPI_PAD_CONFIG_Q Override SD_DATA_0 pad (GPIO7/SPIQ) = 0 R/W (0x0) SPI_PAD_CONFIG_D Override SD_DATA_1 pad (GPIO8/SPID) = 0 R/W (0x0) SPI_PAD_CONFIG_HD Override SD_DATA_2 pad (GPIO9/SPIHD) = 0 R/W (0x0) SPI_PAD_CONFIG_CS0 Override SD_CMD pad (GPIO11/SPICS0) = 0 R/W (0x0) DISABLE_SDIO_HOST Disable SDIO host = 0 R/W (0x0) Calibration fuses: BLK3_PART_RESERVE BLOCK3 partially served for ADC calibration data = 0 R/W (0x0) ADC_VREF Voltage reference calibration = 1100 R/W (0x0) Security fuses: FLASH_CRYPT_CNT Flash encryption mode counter = 0 R/W (0x0) FLASH_CRYPT_CONFIG Flash encryption config (key tweak bits) = 0 R/W (0x0) &color(red){CONSOLE_DEBUG_DISABLE Disable ROM BASIC interpreter fallback = 1 R/W (0x1)}; ABS_DONE_0 secure boot enabled for bootloader = 0 R/W (0x0) ABS_DONE_1 secure boot abstract 1 locked = 0 R/W (0x0) JTAG_DISABLE Disable JTAG = 0 R/W (0x0) DISABLE_DL_ENCRYPT Disable flash encryption in UART bootloader = 0 R/W (0x0) DISABLE_DL_DECRYPT Disable flash decryption in UART bootloader = 0 R/W (0x0) DISABLE_DL_CACHE Disable flash cache in UART bootloader = 0 R/W (0x0) BLK1 Flash encryption key = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W BLK2 Secure boot key = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W BLK3 Variable Block 3 = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W Efuse fuses: WR_DIS Efuse write disable mask = 0 R/W (0x0) RD_DIS Efuse read disablemask = 0 R/W (0x0) CODING_SCHEME Efuse variable block length scheme = 0 R/W (0x0) KEY_STATUS Usage of efuse block 3 (reserved) = 0 R/W (0x0) Flash voltage (VDD_SDIO) determined by GPIO12 on reset (High for 1.8V, Low/NC for 3.3V). C:\WINDOWS\system32> </pre> ※CONSOLE_DEBUG_DISABLEが立っていると、BASICは動かないらしい。どうして立ったかは不明。 **ATコマンド用のファームウエア [[ESP32-WROOM-32 AT Bin>https://www.espressif.com/en/support/download/at]] <pre> C:\Src\ESP32\Tools\ESP32-WROOM-32_AT_V1.1>C:\Apps\Arduino\hardware\espressif\esp32\tools\&color(blue){esptool.exe --chip esp32 --port ''COM7'' --baud 115200 write_flash 0x1000 bootloader\bootloader.bin 0xf000 phy_init_data.bin 0x100000 esp-at.bin 0x8000 partitions_at.bin 0x10000 blank.bin}; esptool.py v2.1 Connecting.... Chip is ESP32D0WDQ6 (revision 1) Uploading stub... Running stub... Stub running... Configuring flash size... Auto-detected Flash size: 4MB Compressed 19424 bytes to 11458... Wrote 19424 bytes (11458 compressed) at 0x00001000 in 1.1 seconds (effective 147.6 kbit/s)... Hash of data verified. Compressed 144 bytes to 69... Wrote 144 bytes (69 compressed) at 0x0000f000 in 0.1 seconds (effective 18.6 kbit/s)... Hash of data verified. Compressed 1113312 bytes to 699718... Wrote 1113312 bytes (699718 compressed) at 0x00100000 in 62.1 seconds (effective 143.5 kbit/s)... Hash of data verified. Compressed 3072 bytes to 129... Wrote 3072 bytes (129 compressed) at 0x00008000 in 0.1 seconds (effective 396.4 kbit/s)... Hash of data verified. Compressed 8192 bytes to 31... Wrote 8192 bytes (31 compressed) at 0x00010000 in 0.0 seconds (effective 1394.4 kbit/s)... Hash of data verified. Leaving... Hard resetting... C:\Src\ESP32\Tools\ESP32-WROOM-32_AT_V1.1> </pre> ※RESET後の画面(コンソール出力) <pre> rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0018,len:4 load:0x3fff001c,len:5568 ho 0 tail 12 room 4 load:0x40078000,len:0 load:0x40078000,len:13756 entry 0x40078fb4 I (30) boot: ESP-IDF v3.0.1-rc 2nd stage bootloader I (30) boot: compile time 12:42:40 I (30) boot: Enabling RNG early entropy source... I (35) boot: SPI Speed : 40MHz I (39) boot: SPI Mode : DIO I (43) boot: SPI Flash Size : 4MB I (47) boot: Partition Table: I (51) boot: ## Label Usage Type ST Offset Length I (58) boot: 0 phy_init RF data 01 01 0000f000 00001000 I (65) boot: 1 otadata OTA data 01 00 00010000 00002000 I (73) boot: 2 nvs WiFi data 01 02 00012000 0000e000 I (80) boot: 3 at_customize unknown 40 00 00020000 000e0000 I (88) boot: 4 ota_0 OTA app 00 10 00100000 00180000 I (95) boot: 5 ota_1 OTA app 00 11 00280000 00180000 I (103) boot: End of partition table I (107) boot: No factory image, trying OTA 0 I (112) esp_image: segment 0: paddr=0x00100020 vaddr=0x3f400020 size=0x1fdfc (130556) map I (167) esp_image: segment 1: paddr=0x0011fe24 vaddr=0x3ffc0000 size=0x001ec ( 492) load I (167) esp_image: segment 2: paddr=0x00120018 vaddr=0x400d0018 size=0xddc68 (908392) map I (491) esp_image: segment 3: paddr=0x001fdc88 vaddr=0x3ffc01ec size=0x0300c ( 12300) load I (497) esp_image: segment 4: paddr=0x00200c9c vaddr=0x40080000 size=0x00400 ( 1024) load I (499) esp_image: segment 5: paddr=0x002010a4 vaddr=0x40080400 size=0x0eba0 ( 60320) load I (532) esp_image: segment 6: paddr=0x0020fc4c vaddr=0x400c0000 size=0x00064 ( 100) load I (541) boot: Loaded app from partition at offset 0x100000 I (542) boot: Disabling RNG early entropy source... Bin version(Wroom32):1.1.0 I (578) wifi: wifi firmware version: bffcf7f I (579) wifi: config NVS flash: enabled I (579) wifi: config nano formating: disabled I (588) wifi: Init dynamic tx buffer num: 32 I (589) wifi: Init data frame dynamic rx buffer num: 32 I (589) wifi: Init management frame dynamic rx buffer num: 32 I (595) wifi: wifi driver task: 3ffdf580, prio:23, stack:4096 I (600) wifi: Init static rx buffer num: 10 I (603) wifi: Init dynamic rx buffer num: 32 I (608) wifi: wifi power manager task: 0x3ffe3ce4 prio: 21 stack: 2560 I (642) wifi: mode : softAP (30:ae:a4:XX:XX:XY) I (649) wifi: mode : sta (30:ae:a4:XX:XX:XX) + softAP (30:ae:a4:XX:XX:XY) I (653) wifi: mode : softAP (30:ae:a4:XX:XX:XY) </pre> **eFUSEの値 ※pythonがインストールされており、''pip install esptool''でesptool.pyをインストール <pre> C:\WINDOWS\system32>&color(blue){espefuse.py --baud 115200 --port COM7 summary}; espefuse.py v2.5.0 Connecting........_ Identity fuses: MAC MAC Address = 24:0a:c4:12:7b:f0 (CRC 04 OK) R/W CHIP_VER_REV1 Silicon Revision 1 = 1 R/W (0x1) CHIP_VERSION Reserved for future chip versions = 0 R/W (0x0) CHIP_PACKAGE Chip package identifier = 0 R/W (0x0) Config fuses: XPD_SDIO_FORCE Ignore MTDI pin (GPIO12) for VDD_SDIO on reset = 0 R/W (0x0) XPD_SDIO_REG If XPD_SDIO_FORCE, enable VDD_SDIO reg on reset = 0 R/W (0x0) XPD_SDIO_TIEH If XPD_SDIO_FORCE & XPD_SDIO_REG, 1=3.3V 0=1.8V = 0 R/W (0x0) SPI_PAD_CONFIG_CLK Override SD_CLK pad (GPIO6/SPICLK) = 0 R/W (0x0) SPI_PAD_CONFIG_Q Override SD_DATA_0 pad (GPIO7/SPIQ) = 0 R/W (0x0) SPI_PAD_CONFIG_D Override SD_DATA_1 pad (GPIO8/SPID) = 0 R/W (0x0) SPI_PAD_CONFIG_HD Override SD_DATA_2 pad (GPIO9/SPIHD) = 0 R/W (0x0) SPI_PAD_CONFIG_CS0 Override SD_CMD pad (GPIO11/SPICS0) = 0 R/W (0x0) DISABLE_SDIO_HOST Disable SDIO host = 0 R/W (0x0) Calibration fuses: BLK3_PART_RESERVE BLOCK3 partially served for ADC calibration data = 0 R/W (0x0) ADC_VREF Voltage reference calibration = 1100 R/W (0x0) Security fuses: FLASH_CRYPT_CNT Flash encryption mode counter = 0 R/W (0x0) FLASH_CRYPT_CONFIG Flash encryption config (key tweak bits) = 0 R/W (0x0) &color(red){CONSOLE_DEBUG_DISABLE Disable ROM BASIC interpreter fallback = 1 R/W (0x1)}; ABS_DONE_0 secure boot enabled for bootloader = 0 R/W (0x0) ABS_DONE_1 secure boot abstract 1 locked = 0 R/W (0x0) JTAG_DISABLE Disable JTAG = 0 R/W (0x0) DISABLE_DL_ENCRYPT Disable flash encryption in UART bootloader = 0 R/W (0x0) DISABLE_DL_DECRYPT Disable flash decryption in UART bootloader = 0 R/W (0x0) DISABLE_DL_CACHE Disable flash cache in UART bootloader = 0 R/W (0x0) BLK1 Flash encryption key = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W BLK2 Secure boot key = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W BLK3 Variable Block 3 = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W Efuse fuses: WR_DIS Efuse write disable mask = 0 R/W (0x0) RD_DIS Efuse read disablemask = 0 R/W (0x0) CODING_SCHEME Efuse variable block length scheme = 0 R/W (0x0) KEY_STATUS Usage of efuse block 3 (reserved) = 0 R/W (0x0) Flash voltage (VDD_SDIO) determined by GPIO12 on reset (High for 1.8V, Low/NC for 3.3V). C:\WINDOWS\system32> </pre> ※CONSOLE_DEBUG_DISABLEが立っていると、BASICは動かないらしい。どうして立ったかは不明。