概要
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ポートに繋いだだけでは、デバイスマネージャのアイコンに警告の表示が付きました。
「ドライバーの更新」→「コンピューターを参照してドライバーを検索」にて上記からダウンロード及び展開したファイル群を指定し正しくドライバがインストールされました。
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