USB接続(簡易)JTAG Debugger を作る

Gnuk を作ってみたいけど開発環境が大変(高価)という貴兄に、以前 FTDI2232D Module can be JTAG dongle (英語)を書きましたが、あんまり作る人がいないみたいなので改めて日本語で書きます。ケーブルを含めて 2150円でできます。ハンダ付けも必要なく、ブレッドボードでつなぐだけで作れます。

以前であれば、このような dongle はプリンタのパラレルポートに接続する形式が一般的でした。プログラミングの面からも I/O ポートを直接叩く形でラクチンですので。しかし、昨今ではパラレルポートのない note PC なども多く、USB での接続が望まれます(パラレルポート接続の dongle であればもっと安価にできますが、今回の対象ではありません)。

注意点: この簡易 JTAG Debuuger は市販されている本物の JTAG Debugger と異なり、バッファーを入れておらず必要最小限の接続のため、あくまでも簡易バージョンであることをご理解ください。接続を間違って壊してしまうなどのトラブルを避けるためには、とても高価なボードにつないで利用する向きにはお勧めできません。

STM8S Discovery Kit の STM32 部分を使うのなら高価な JTAG Debugger は必要なく、この簡易 JTAG Debuuger で十分でしょう。

部品

部品はすべて秋月電子で入手できます。下記の表の部品を揃えます。抵抗は 4本しか使わないので友達と分けましょう。ジャンパーワイヤは 5本だけ使うので友達と分けましょう。ワイヤーの色はなんでもかまいません。

部品 値段
炭素皮膜抵抗 1/6W 100Ω (100本入) 100円
ブレッドボード EIC-301 150円
ブレッドボード・ジャンパーワイヤ(オス-メス) 15cm(青) 300円
USBケーブル (A-miniB) 1.5m 150円
FT2232D USB-シリアル 2ch変換モジュール 1450円
合計 2150円

作り方

その一: FT2232D USB-シリアル 2ch変換モジュールの設定

ジャンパーの JP2A を外します。チャネル A の電圧レベルが 3.3V になるようにするためです。

その二: 部品の接続

  • FT2232D USB-シリアル 2ch変換モジュール をブレッドボードに刺します。

  • 抵抗、ジャンパーワイヤーをつなぎます。信号の接続は下記のようになります。:

    40 AD0 ----[100 Ω]-----> TCLK
    39 AD1 ----[100 Ω]-----> TDI
    38 AD2 ----[100 Ω]-----> TDO
    37 AD3 ----[100 Ω]-----> TMS
    25 GND ----------------> GND
    

これだけ。

使い方

STM8S Discovery Kit の STM32 部分との接続

STM8S Discovery Kit の STM32 部分の CN5 のピン配置は下記のようです。:

1 Vdd (3.3V)
2 --- (no pin)
3 TDO
4 TCLK
5 TMS
6 TDI
7 GND
8 nRST

Vdd , nRST 以外の 5 本の線をつなぎます。

ソフトウェアの設定

FTDI 2232 は usbserial のモジュールがロードされてしまい OpenOCD が使えなくなります。 と、思ったいたら、今試したら、 usbserial のモジュールがロードされていても使えますな。

ま、困った場合には下記のエントリを /etc/modprobe.d/blacklist.conf に足してみてください。:

# Don't load the driver for usbserial interface
blacklist ftdi_sio

OpenOCD で使う

下記のコマンドラインのように interface/openocd-usb.cfg を指定します。:

$ openocd -f interface/openocd-usb.cfg -f target/stm32.cfg

できあがり写真

DIY JTAG Debugger

感想

あぁ、これが 2007年にあればなぁ。 In chase of a bug in Marvell's Orion 88F5182 は半年もかからなかったかもしれない。いや、無いからこそ追うことができたのかも。