ESP8266 環境での開発はコンパイル後のバイナリサイズが大きいため、転送に時間がかかってしまい開発時の待ち時間が多分に発生してしまいます。そこで、シリアルUSBの転送速度を標準の 115200 から変更することで、転送にかかる時間を下げ、開発のサイクルを高速化します。
どこまで転送速度が上げられるかですが、ハードウェア的な制約のシリアルUSB変換チップの baudrate、今回使った FDTI の FT231X は最大 3M ですが、ESP8266 側は 921600 までのようです。
とコードの定義でも最大 921600 となっています。試しにそれ以上に上げてみましたがエラーでうまく転送できませんでした。
速度を測る
早速速度を測定してみましょう。約280KBのファームウェアを、標準の 115200 で転送してみます。
$ time esptool -vv -cd ck -cb 115200 -cp /dev/cu.usbserial-DA01219J -ca 0x00000 -cf firmware.bin
esptool -vv -cd ck -cb 0.02s user 0.10s system 0% cpu 36.238 total
36秒かかりますね。
では続いて 921600 にして転送してみましょう。
$ time esptool -vv -cd ck -cb 921600 -cp /dev/cu.usbserial-DA01219J -ca 0x00000 -cf firmware.bin
esptool -vv -cd ck -cb 0.02s user 0.10s system 0% cpu 13.089 total
13秒!約3倍の転送速度で完了しました。というわけでシリアルUSB変換チップが対応しているなら、921600 に変更するだけで気軽に開発速度を上げる事が出来るので、試してみると良いと思います。
PlatformIO の場合
platform.ini に
upload_speed = 921600
を定義するだけで OK です。
もっと速く転送する方法
あったら知りたいので教えて下さい!