ESP32 FlashROM 書き込み

概要

Windows環境にて、NuttX をビルドしたバイナリを ESP32-DevKitC-32D,E ボードに書き込む方法についてです。

WSLから実行することも可能ですが、仮想マシンから実デバイスへの接続を行うなどの手順が煩雑ですし、PC環境によってはこれが制限されている場合があります。

Windows の Python から pip で esptool をインストールし、ポート”COM3″などを指定して esptool.py を実行するのがリーズナブルと思われます。

Python のインストール

Python インストール(3.10.8、複数のバージョン共存前提) に従い、Python をインストールします。

esptool のインストール

>pip install esptool
Collecting esptool
  Downloading esptool-4.5.1.tar.gz (252 kB)
     ---------------------------------------- 252.2/252.2 kB 7.6 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Collecting bitstring>=3.1.6
  Downloading bitstring-4.0.2-py3-none-any.whl (46 kB)
     ---------------------------------------- 46.0/46.0 kB ? eta 0:00:00
Collecting cryptography>=2.1.4
  Downloading cryptography-40.0.2-cp36-abi3-win_amd64.whl (2.6 MB)
     ---------------------------------------- 2.6/2.6 MB 11.9 MB/s eta 0:00:00
Collecting ecdsa>=0.16.0
  Downloading ecdsa-0.18.0-py2.py3-none-any.whl (142 kB)
     ---------------------------------------- 142.9/142.9 kB ? eta 0:00:00
Collecting pyserial>=3.0
  Downloading pyserial-3.5-py2.py3-none-any.whl (90 kB)
     ---------------------------------------- 90.6/90.6 kB ? eta 0:00:00
Collecting reedsolo<=1.6.0,>=1.5.3
  Downloading reedsolo-1.6.0-cp310-cp310-win_amd64.whl (174 kB)
     ---------------------------------------- 174.2/174.2 kB 10.3 MB/s eta 0:00:00
Collecting cffi>=1.12
  Downloading cffi-1.15.1-cp310-cp310-win_amd64.whl (179 kB)
     ---------------------------------------- 179.1/179.1 kB 11.3 MB/s eta 0:00:00
Collecting six>=1.9.0
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting pycparser
  Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
     ---------------------------------------- 118.7/118.7 kB ? eta 0:00:00
Installing collected packages: reedsolo, pyserial, six, pycparser, bitstring, ecdsa, cffi, cryptography, esptool
  DEPRECATION: esptool is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for esptool ... done
Successfully installed bitstring-4.0.2 cffi-1.15.1 cryptography-40.0.2 ecdsa-0.18.0 esptool-4.5.1 pycparser-2.21 pyserial-3.5 reedsolo-1.6.0 six-1.16.0

[notice] A new release of pip is available: 23.0.1 -> 23.1.2
[notice] To update, run: python.exe -m pip install --upgrade pip

手順

UARTドライバのインストール

CP210x Universal Windows Driver v11.2.0 10/21/2022 をダウンロードしました。

USBポートに繋いだだけでは、デバイスマネージャのアイコンに警告の表示が付きました。

「ドライバーの更新」→「コンピューターを参照してドライバーを検索」にて上記からダウンロード及び展開したファイル群を指定し正しくドライバがインストールされました。

CP210x.jpg

bootloader、partition-table の入手

bootloader、partition-table は下記より入手できます。

GitHub - espressif/esp-nuttx-bootloader: This repository provides 2nd stage bootloader and partition table binaries for NuttX users of ESP chips.
This repository provides 2nd stage bootloader and partition table binaries for NuttX users of ESP chips. - GitHub - espressif/esp-nuttx-bootloader: This reposit...
>curl -L https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32.bin -o partition-table-esp32.bin
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  3072  100  3072    0     0   4099      0 --:--:-- --:--:-- --:--:-- 15207

>curl -L https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32.bin -o bootloader-esp32.bin
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 26288  100 26288    0     0  23072      0  0:00:01  0:00:01 --:--:-- 1283k

ビルドしたバイナリのコピー

>copy \\wsl.localhost\Ubuntu-22.04\home\wurly\work\nuttx\nuttx.bin .\

コマンド

基板上の “EN” スイッチを押下しなからコマンドを実行し、実行後スイッチから手を離します。

ESP32-DevKitC-32Dボード(ESP-WROOM-32D)や、ESP32-DevKitC-32Eボード(ESP-WROOM-32E) では下記コマンドで書き込みできました。

> esptool.py --chip esp32 --port COM3 --baud 921600 write_flash 0x1000 bootloader-esp32.bin 0x8000 partition-table-esp32.bin 0x10000 nuttx.bin
Copied title and URL