要約:ESC32-C3を買った。MicroPythonのファーム(esp32c3-usb-20220618-v1.19.1.bin)を焼くと動いた
詳細:
RISC-Vを動かしてみたいと思い、手頃な価格のESP32-C3を購入した。(seeed studioのXIAO-ESP32-C3)

USB-Cに接続するとシリアルで繋がったが特にコンソールに表示もされず、初期ファームが何なのかよくわからない。
MicroPythonを焼いてみようと思い、esptool.pyでesp32c3を指定したが、エラーになった。自分が使ってるesptoolは古いせいか、デバイスを認識できないようだ。autoで走らせてもエラーになる。
$ esptool.py --chip auto --port /dev/ttyS8 chip_id esptool.py v2.8 Serial port /dev/ttyS8 Connecting... Detecting chip type... A fatal error occurred: Unexpected UART datecode value 0x03700000. Failed to autodetect chip type.
esptoolをpipで入れてみたが、ビルドでエラーになる。Python.hが無いと怒られる。なぜか??
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DFFI_BUILDING=1 -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/python3.9 -c c/_cffi_backend.c -o build/temp.cygwin-3.3.6-x86_64-3.9/c/_cffi_backend.o
c/_cffi_backend.c:2:10: fatal error: Python.h: No such file or directory
2 | #include <Python.h>
| ^~~~~~~~~~
compilation terminated.
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]Python.hをPCに入れないといけないのかもしれない。調べるのに時間がかかりそうなので、Esp用テストツールのファーム書き込み機能で代用してみる。

適当にやってみたが、COMポートは接続されるものの、応答がない。ちゃんと調べないとだめか。。
MicroPython - Python for microcontrollers
MicroPythonの代わりにCircuitPythonを落として入れてみる
Luatos Core ESP32C3 Download
CircuitPythonは起動できた。
オートリロードがオンです。ファイルをUSB経由で保存するだけで実行できます。REPLに 入ると無効化します。
Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 8.0.0-beta.6 on 2022-12-21; Luatos Core-ESP32C3 with ESP32-C3
>>> help('modules')
__future__ collections neopixel_write terminalio
__main__ digitalio nvm time
_asyncio displayio onewireio touchio
_bleio dualbank os traceback
_pixelmap errno ps2io ulab
adafruit_bus_device espidf pulseio ulab
adafruit_bus_device.i2c_device fontio pwmio ulab.numpy
adafruit_bus_device.spi_device framebufferio rainbowio ulab.numpy.fft
adafruit_pixelbuf gc random ulab.numpy.linalg
aesio getpass re ulab.scipy
analogio hashlib rgbmatrix ulab.scipy.linalg
array i2cperipheral rtc ulab.scipy.optimize
atexit i2ctarget sdcardio ulab.scipy.signal
audiocore io select ulab.scipy.special
audiomixer ipaddress sharpdisplay ulab.utils
binascii json socketpool uselect
bitbangio keypad ssl vectorio
bitmaptools math storage watchdog
board mdns struct wifi
builtins microcontroller supervisor zlib
busio micropython synthio
canio msgpack sys
Plus any modules on the filesystem
>>>ESP32C3用のファームとして、ESP32-C3 with USBというバージョンもある。何が違うのかビルドオプション等を調べないと分からないが、、これを焼いてみる*1。
MicroPython - Python for microcontrollers
こっちのバージョンだとCOMポートで通信ができた。
>>>
MPY: soft reboot
MicroPython v1.19.1 on 2022-06-18; ESP32C3 module with ESP32C3
Type "help()" for more information.
>>>
>>>
>>> help('modules')
__main__ framebuf uasyncio/stream uplatform
_boot gc ubinascii urandom
_onewire inisetup ubluetooth ure
_thread math ucollections uselect
_uasyncio micropython ucryptolib usocket
_webrepl neopixel uctypes ussl
apa106 network uerrno ustruct
btree ntptime uhashlib usys
builtins onewire uheapq utime
cmath uarray uio utimeq
dht uasyncio/__init__ ujson uwebsocket
ds18x20 uasyncio/core umachine uzlib
esp uasyncio/event uos webrepl
esp32 uasyncio/funcs upip webrepl_setup
flashbdev uasyncio/lock upip_utarfile websocket_helper
Plus any modules on the filesystem
>>>RAMは121KB空いているようだ。起動後のクロックは160MHz
>>> gc.mem_free() 121536 >>> machine.freq() 160000000
ESP32-C3のRISC-Vはシステムクロックが最大160MHzらしいので、これ以上は上げられない。RISC-V上でMicroPythonを動かしてRISC-Vを使ったといっていいのか。。多分だめだろう。RISC-Vの手触り感とか言いたいのなら、アセンブラのレベルまで降りないとダメなのでは・・自問自答
*1:外付けUSB-SerialのICがあるか、それとも、ESP32-C3に直結かの違いと推測