ファームウェア(nanoCLR)を書き込む

Seeed Studio XIAO ESP32C3に、nanoCLRファームウェアをインストールします。

公式手順はこちら。

docs.nanoframework.net

先駆者の日本語記事はこちら。

qiita.com

nanoff実行

手順に従い、nanoffを実行します。

PS C:\Users\takashi\source\repos> nanoff --platform esp32 --serialport COM4 --update
nanoFramework Firmware Flasher v1.19.0+3520e0fd83
Copyright (C) 2019 nanoFramework project contributors

Error E4000: Error executing esptool command. (esptool.py v2.6
Serial port COM4
Connecting...
Chip is ESP32D0WDQ6 (revision 0)
Features: WiFi, BT, Dual Core, Coding Scheme None
MAC: 00:00:00:00:00:00
Uploading stub...
Running stub...

A fatal error occurred: Invalid head of packet (0x47)

A fatal error occurred: Invalid head of packet (0x47)というエラーが発生しちゃいました。😢

どうやら、nanoffが昔に入れた古いバージョンのようです。

dotnet tool update nanoff -gしてから再実行したところ、問題なくファームウェアが書き込まれました。わーい。

PS C:\Users\takashi\source\repos> nanoff --platform esp32 --serialport COM4 --update
.NET nanoFramework Firmware Flasher v2.4.24+49f2228d09
Copyright (C) 2019 .NET Foundation and nanoFramework project contributors


Using COM4 @ 1500000 baud to connect to ESP32.
Reading details from chip...
OK

Connected to:
ESP32-C3 (ESP32-C3 (revision 3))
Features Wi-Fi
Flash size 4MB unknown from ST (manufacturer 0x32 device 0x16406)
PSRAM: undetermined
Crystal 40MHz
MAC 10:91:A8:02:BD:7C


No target name was provided! Using 'ESP32_C3_REV3' based on the device characteristics.

Trying to find ESP32_C3_REV3 in stable repository...OK
Extracting ESP32_C3_REV3-1.8.0.912.zip...OK

Updating to 1.8.0.912

Erasing flash...
OK
Flashing firmware...
Wrote 18480 bytes (11402 compressed) at 0x00000000 in 0.4 seconds (effective 350.1 kbit/s)...
Hash of data verified.
Wrote 1018080 bytes (622361 compressed) at 0x00010000 in 13.9 seconds (effective 586.7 kbit/s)...
Hash of data verified.
Wrote 3072 bytes (136 compressed) at 0x00008000 in 0.1 seconds (effective 314.4 kbit/s)...
Hash of data verified.
OK

なにを書き込んでいるのか?

nanoffに-v diagを付けると、esptool.pyのパラメータが表示されて、なんとなく分かります。

PS C:\Users\takashi\source\repos> nanoff --platform esp32 --serialport COM4 --update -v diag
...
Executing esptool with the following parameters:
'--port COM4  --chip auto   --after no_reset_stub flash_id'
...
Executing esptool with the following parameters:
'--port COM4  --chip esp32c3   --after no_reset_stub erase_flash'
...
Executing esptool with the following parameters:
'--port COM4 --baud 1500000 --chip esp32c3   --after hard_reset write_flash --flash_mode dio --flash_freq 40m --flash_size 4MB 0x0 "C:\Users\takashi\.nanoFramework\fw_cache\ESP32_C3_REV3\bootloader.bin" 0x10000 "C:\Users\takashi\.nanoFramework\fw_cache\ESP32_C3_REV3\nanoCLR.bin" 0x8000 "C:\Users\takashi\.nanoFramework\fw_cache\ESP32_C3_REV3\partitions_4mb.bin"'
  • 0x0 ... bootloader.bin
  • 0x8000 ... partitions_4mb.bin
  • 0x10000 ... nanoCLR.bin

ですね。

UART

再起動すると、USBのCOM(左図)とTX/RXピン(右図)には、次のメッセージが出力されていました。(どちらも115200, 8N1。)