2019/03/09

ESP WROOM-32 ROMを焼く (MicroPython)

ESP WROOM-32の内蔵ROMに書き込むには GOIO0をGNDに落としてResetをかける。ResetはENをH->L->Hにすることでリセットがかかる。この時のメッセージは以下

rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
waiting for download

以前ESP8266を触っていた時はpythonの書き込みツールを使っていた。が、、VMWare内のUbuntuで開発環境を構築していてかなり忘れたので、、ここはおとなしく、Espressif社が提供してくれている書き込みツールでMicroPythonを焼いてみる。

ESP32用のMicroPythonは以下から入手可能

 MicroPython



http://micropython.org/download#esp32

書き込み上のポイントとして、(1)FLASHを消去する(2)開始番地は0x1000

MicroPythonのサイトでもesptool.pyによる書き込みが案内されているが、、Ubuntuから書き込むのは面倒なので、、Espressifの書き込みツールで書いてみることに。以下がDownload Toolの設定。焼きたいファイルを指定して、開始番地を指定(0x1000)。開始番地はデフォルトでも設定されるかもしれません。そこまで調査しておらず。[START]で書き込む前に、上記助言に従い、[ERASE]を実行しました。



ファーム書き込みのハマリ点としては、、[ERASE]した後、すぐに[START]で書き込みはできず、ESP WROOM 32を再度ダウンロードモードに遷移させてから[START]で書き込む必要あり。これをやらなかったので、[ERASE]->[START]と続けて操作したら通信タイムアウトになった。 

書き込みが終了後、ResetするとMicroPythonが起動される。起動メッセージは以下

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun  8 2016 00:22:57

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:5060
load:0x40078000,len:8788
ho 0 tail 12 room 4
load:0x40080400,len:6772
entry 0x40081610
I (251) cpu_start: Pro cpu up.
I (251) cpu_start: Application information:
I (251) cpu_start: Compile time:     00:48:25
I (253) cpu_start: Compile date:     Mar  9 2019
I (259) cpu_start: ESP-IDF:          v3.3-beta1-268-g5c88c5996
I (265) cpu_start: Single core mode
I (270) heap_init: Initializing. RAM available for dynamic allocation:
I (277) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (283) heap_init: At 3FFB92B0 len 00026D50 (155 KiB): DRAM
I (289) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM
I (295) heap_init: At 40078000 len 00008000 (32 KiB): IRAM
I (302) heap_init: At 40092834 len 0000D7CC (53 KiB): IRAM
I (308) cpu_start: Pro cpu start user code
I (27) cpu_start: Starting scheduler on PRO CPU.
OSError: [Errno 2] ENOENT
MicroPython v1.10-194-g41e7ad647 on 2019-03-09; ESP32 module with ESP32
Type "help()" for more information.
>>>
特に苦労なくmicroPythonが入り、リセットすることでmicroPythonが起動された。
Single core mode となっている。。 ESP32は以下のようにDual Coreだったはず
  Architecture: Xtensa Dual-Core 32-bit LX6
また、OSError [Error 2] ENOENT  のメッセージが気になるが。。

マニュアル類:

Quick reference for the ESP32

micropythonのGithub

No comments:

Post a Comment