ESP32 を AE-FT2232 でつないで OpenOCD+GDBでデバッグ

#はじめに

先日、[ESP32 を FT232H でつないで OpenOCD+GDBでデバッグ](http://qiita.com/rukihena/items/f5585436c16f74d0f01d) という記事を書きました。

これは、プログラム書き込み(UART接続)に FT232Rを使い、デバッグ(JTAG接続)にFT232H を使うという、FT232シリーズを2個使うものでした。

FT232シリーズには、デュアルチャネルのものがあり、それ1個で（USBケーブルも1本で）ESP32とつなぐことができたので、その方法を紹介します。

#AE-FT2232

FT232シリーズで、MPSSE機能が使えて、デュアルチャネルなものなら何でもいいと思うのですが、ここでは秋月電子の [AE-FT2232](http://akizukidenshi.com/catalog/g/gM-02990/) (￥1,450-)を用います。（電子工作で必要なものはとりあえず秋月で探して、無ければ他の店を検討するのがいいと思ってます。）

![M-02990.jpg](https://qiita-image-store.s3.amazonaws.com/0/104360/68512df4-c2e1-ba5b-51d4-04ba27c88de6.jpeg)

#ドライバインストール

ドライバのインストールには、[ESP32 を FT232H でつないで OpenOCD+GDBでデバッグ](http://qiita.com/rukihena/items/f5585436c16f74d0f01d) と同様に [Zadig](http://zadig.akeo.ie/) を用います。

AE-FT2232をPCに接続すると、仮想COMポートとして認識されます。デュアルチャネルなので2個出現します（COM1はマザボに付いてるポートです）。

![ft2232-1.png](https://qiita-image-store.s3.amazonaws.com/0/104360/f0d83cc0-0a13-d0d4-6427-85cba40af921.png)

ここでは1番目をデバッグ用、2番目をプログラム書き込み用とします。（最初、逆で試していたのですが、なぜか成功しませんでした。。。）

Zadig を使って、「Dual RS232 (Interface 0)」のドライバを WinUSB に置き換えます。

![ft2232-2.png](https://qiita-image-store.s3.amazonaws.com/0/104360/911d219e-70e8-e8df-89e9-42b020e30b0f.png)

置き換えが成功すると、仮想COMポートが一つ減って、ユニバーサル シリアル バス デバイス に 「Dual RS232」が増えます。

![ft2232-3.png](https://qiita-image-store.s3.amazonaws.com/0/104360/9ee364e7-15c2-00fd-e6b2-7e735c68d354.png)

#配線

2つのチャネルの呼び方に統一感が無くて混乱しがちなのでまとめておきます。

|日本語|番号|アルファベット|
|:--|:--|:--|
|1番目|0|A|
|2番目|1|B|

1番目をデバッグ用、2番目を書き込み用としたので、ADn がデバッグ用、BDn が書き込み用です。ACn や BCn が何なのか気になりますが、使わないので気にしないことにします。

AE-FT2232にはI/O電圧用の3.3Vレギュレータが乗っていないので、外部で作った3.3VをAE-FT2232に入力してやる必要があります。そのため、 **JP2AとJP2Bを外して、VCCIOA,VCCIOB に3.3Vを接続します。**

|AE-FT2232ピン名|信号名|ESP32ピン名|
|:--|:--|:--|
|-|3.3V|3V3|
|VCCIOA|3.3V|-|
|VCCIOB|3.3V|-|
|AD0|TCK|GPIO13|
|AD1|TDI|GPIO12|
|AD2|TDO|GPIO15|
|AD3|TMS|GPIO14|
|BD0(TXD)|→|RXD0|
|BD1(RXD)|←|TXD0|
|GND|GND|GND|

繰り返しになりますが、 **JP2AとJP2Bを外してください。** （大事なことなので2度いいました。）

このほかに、例によって EN と GPIO0 の配線も必要です。

Lチカを試すなら GPIO4 にLEDを繋ぎましょう。

配線イメージを載せておきます。

![DSC_0904.JPG](https://qiita-image-store.s3.amazonaws.com/0/104360/80da8d6e-4827-ff3d-43fd-4489f9c0b1d5.jpeg)

スイッチサイエンスさんの [ESP-WROOM-32ピッチ変換済みモジュール《フル版》α版](https://www.switch-science.com/catalog/3144/) を使用しました。ブレッドボードに挿すと幅が足りなくて配線しにくいので、メスのピンヘッダを半田付けして使っています。

#設定ファイル

[ESP32 を FT232H でつないで OpenOCD+GDBでデバッグ](http://qiita.com/rukihena/items/f5585436c16f74d0f01d) とほぼ同じなのですが、違う点が一つだけあります。

esp32.cfg の編集で、
`source [find interface/ftdi/tumpa.cfg]`
を
`source [find interface/ftdi/um232h.cfg]`
にしてましたが、今回は
`source [find interface/ftdi/esp32_devkitj_v1.cfg]`
とします。

（DevKitJ とは、 [ESP‑WROVER‑KIT](https://espressif.com/en/products/hardware/esp-wrover-kit/overview) のことのようです。）

#おわりに

その他は、[ESP32 を FT232H でつないで OpenOCD+GDBでデバッグ](http://qiita.com/rukihena/items/f5585436c16f74d0f01d) と同じです。

[ESP32をEclipse上でデバッグする](http://qiita.com/rukihena/items/f758105d3ed6dc6dae87) も、もちろん可能です。

ハードウェア的には [ESP‑WROVER‑KIT](https://espressif.com/en/products/hardware/esp-wrover-kit/overview) と同じなので、それを使ってもいいのですが、残念ながら大きすぎます。

[スイッチサイエンス](https://www.switch-science.com/)さんあたりで、FT2322搭載のESP32開発ボードを用意していただけたらいいなと思っています。

#ポエム

ブレッドボードフレンドリーにするためには、900mil にする必要がある。
しかしそうするとピン配列のシルク印刷ができないか、無理に書いても読みにくくなってしまう。
もうメスピンヘッダを使う前提で作ってもいいのではないだろうか。
しかしブレッドボードに固定できないのも考え物だ。
ブレッドボードに固定するためだけのピンを用意するのはどうだろうか。
いや、ダミーにするよりも、よく使われる10本程度を300milで並べたらどうだろう。
他のピンも使いたければ、メスピンヘッダを装着して使うようにすればいい。

![esp32beakout.png](https://qiita-image-store.s3.amazonaws.com/0/104360/7038746c-3d01-7658-f6e9-6e04544f86ad.png)

（´-`）.｡oO（誰か作ってくれないかな）