最近は、Moddable SDKを用いてECMAScript(JavaScript)でESP32のプログラムを書いている。
ソースコードをコンパイルしてアップロードパッケージをESP32に向けて送出するとき
シリアルポートには環境変数UPLOAD_PORTに与えられたデバイスが用いられる。
例(macOS):UPLOAD_PORT=/dev/cu.SLAB_USBtoUART
この時のシリアルポートの通信速度は921600bpsとなる。
esptool.py v2.6-beta1 Serial port /dev/cu.SLAB_USBtoUART Connecting........___ Chip is ESP32D0WDQ6 (revision 1) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None MAC: 24:0a:c4:b0:05:5c Uploading stub... Running stub... Stub running... Changing baud rate to 921600 Changed. Configuring flash size...
高速のUSBserialチップならば921600bpsの速度に対応できるが、低速チップではこの速度に対応できずアップロードエラーとなる。
いろいろ調べて見ると、ビルドツールの mcconfig からアップロードツールのesptool.pyに 引数 –baud 921600 が渡されているらしいのでmcconfigのソースコードをイジって230400bpsにしようと試みたが921600と決め打ちしているような箇所を発見することはできなかった。別のモノが速度を設定している様子。
1.アップロードスピードを変える方法
本日、mcconfigから呼び出されビルドやアップロードを司るESP-IDFのドキュメントを読んでいたらESP-IDFは環境変数ESPBAUDでアップロードスピードを任意に変えることができるのを発見した。
さっそく、ESPBAUD=230400と設定してmcconfigでビルド・アップロードを実行したら、あっけなく230400bpsでアップロードが実行された。
esptool.py v2.6-beta1 Serial port /dev/cu.SLAB_USBtoUART Connecting........_ Chip is ESP32D0WDQ6 (revision 1) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None MAC: 24:0a:c4:b0:05:5c Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed. Configuring flash size...
参考:ESP8266の場合は環境変数UPLOAD_SPEEDで変えることができる。
2.envコマンドでターゲットやスピートを変える方法
ESP32-DevKitCやM5Stack、その他のESP32マイコンボード複数をホストにつないだとき、そのシリアルデバイスは次のように与えられる。(macOSの例)
/dev/cu.SLAB_USBtoUART /dev/cu.SLAB_USBtoUART79 /dev/cu.usbserial-14320
目的のESP32ボードにプログラムをアップロードするには、いちいち環境変数UPLOAD_PORTを書き換える必要があるが、macOSやLinuxではenvコマンドを用いる事によって簡単にターゲットの選択やスピードを設定しビルド/アップロードを実行できる。
$ env UPLOAD_PORT=/dev/cu.SLAB_USBtoUART79 mcconfig -d -m -p esp32 $ env UPLOAD_PORT=/dev/cu.usbserial-14320 ESPBAUD=115200 mcconfig -d -m -p esp32