JTAGkey clone



雑誌の付録( DesignWaveMagazin 2008年 5月号Interface 2009年 5月号 ) にARMマイコンが付いてきていた事もあり、ARMマイコンを使いたいな〜と思ってました。 DesignWaveMagazin 2008年 6月号 では開発環境がフリーで手に入る事(WinARM, OpenOCD, Eclipse)、JTAGドングル(PCとマイコンを繋ぐ機材)を自作できる事まで書いてあったから尚更です。 気持ちは高ぶるが、なかなか腰が重い私。ふとした切っ掛けでようやく作成する事にしました。

ネットで調べていると、神木さんが ターゲットVcc = 1.65〜5.5V というすばらしい物を作成されているのを発見しました。かの有名な Amontec JTAGkey の互換品です!! 更に、検索していると、神木さんのを元に ねむいさん が改良された(というか部品を少々変更された)回路を興されています。 しかも使用されている特殊ICは上手くすればサンプル品をゲットできます。 という事で、ねむいさんの回路 を使って作成開始です。

私の場合は、更に手を抜いて秋月から発売されている FT2232D USB-シリアル2ch変換モジュール を使ってUSB側を端折りました (^^;


回路図はこんな感じです。JTAGkeyとして認識して欲しかったので モジュール に EEPROM を乗っけます。
JTAGkeyはPortBを使用していなさそうなので、RS-232Cを繋げれたらな〜と思い、線だけは出しておきました。




で、早速作り上げました。


 
 
 


電源とGND以外は UEW で配線しています。 UEWは被覆がウレタンなので半田熱で溶けます。以前は半田鏝に直接先端を当てて溶かしていた(溶けると煙が出る)のですが、 なかなか溶けてくれない時がありました。φ0.2の細いのを使ってるのに〜。と思ってたのですが。 たまたま半田鏝に半田が着いた状態でその半田の中に入れてみた所、熱が伝わりやすいのか、簡単に溶けてくれました。


部品 個数 単価 購入場所
FT2232D USB-シリアル2ch変換モジュール 1 \1700 秋月電子通商
SN74LVC1G125DCKR 1 サンプル品 Texas Instruments
SN74LVC2G125DCTR 2 サンプル品 同上
SN74LVC2T45DCTR 1 サンプル品 同上
ボックスヘッダ20P(ロック無・MILスタンダード) 1 \100 千石電商
ヘッダソケット20P(MILスタンダード) 日圧 RA-S201T 2 \150 同上



早速、PCと接続です。
FT2232DはPCに接続するとドライバを要求してくるので、接続する前に本家からドライバを入手しておきます。 で、接続した時にそのドライバを入れればOKです。

JTAGkeyに化かすためには、EEPROMにPID, VIDを書き込まないといけません。 FTDI chip社のHPからFT_Prog (MProgから代わったみたいです) を取ってきて次の様に設定しました。


---------------------------------------------------------------------
[USB_Device_Descriptor]
 Custom VID/PID: Custom VID/PID
 Vendor ID:   0403
 Produst ID:   CFF8
 USB Version:  USB 2.0

[USB_Config_Descriptor]
 Bus Powered:  チェック
 Max Bus Power: 90mAmps
 USB Remote Wakeup: ノーチェック
 Pull Down IO Pins in USB Suspend: ノーチェック

[USB_String_Descriptors]
 Manufacturer:      Amontec
 Product Description:  Amontec JTAGkey
 Serial Number:     チェック
 Auto Generate Serial:  ノーチェック
 Serial:         32Q1Q4X9 or FT

[Hardware_Specific]
 Port_A
  Hardware:  245 FIFO  チェック
         High Current I/O's ノーチェック
  Driver:    D2XX Direct
 Port_B
  Hardware:  RS232 UART  チェック
         High Current I/O's ノーチェック
 Driver:    Virtual COM Port
---------------------------------------------------------------------



EEPROMへ設定値を書き込みして、一度USBケーブルを抜き、再び差し込むと VID, PID が変わっているのでドライバを要求してきます。ココまで来ると純正のJTAGkeyと同じ なので、ドライバは純正の物を使用する事にし …… あれっ、色々インストールしたりアンインストールしたりしているうちに、最終的に ねむいさんの所にあったドライバ をインストールしてますね…。 ただ、そのままインストール(初回にUSBを指した時に聞かれる)しただけでは、PortBがRS-232Cとしては 認識してくれてなくて、「デバイスマネージャ」の「USBコントローラ」の所に表示されている PortBのプロパティに「VCPを使う」とかいうチェックボックスがあったのでそれにチェックを入れると、 "新しいデバイスを認識しました"とか言ってくるので、ねむいさんのドライバ群を展開した先を指定(jtagport.infが入っている) して COMポートとして見えるようにしました。






JTAGkeyとして物は完成したみたいだけど、動かしてみない事には配線ミスとかないか全然分りません。 そこで、OpenOCDをインストールして Interface 2009年 5月号 付録基板 に接続し、動きを見てみることにしました。

OpenOCDの最新版をインストールには、自分でコンパイルしないといけないみたいです。 そこで、ZUSさんが書かれたOpenOCD ビルド方法(win32版) を参考に環境を構築しようとしたのですが、少々情報が古い(2010年3月現在)のと、自分の環境に合わせて程よく手抜きをしました。

先ず、OpenOCD 0.3.0移行はSVNで取得するのではなく、GITで取得する様です(HPに書かれてます)。 そういえば最近、本屋さんでGIT関係の本が増えてきてました。
GITの環境はないのでどうしようかと思いましたが、常用しているCygwinに入ってたりしないかな〜と探ってみると、 案の定ありました。早速インストールしました。GITを使うといっても最新のソースコード(0.5.0に成っていました)を取得するだけなので操作はいたって簡単。
ZUSさんの手順ではCygwinを介さずにWindows上で実効するように MinGW, MSYS をインストールするとかあるのでるが、チョイと面倒なのと、 CygwinのGCCにMinGW相当のオプションがあった気がしたので makeとかその他のコマンドソフトも既にインストール済みのCygwinのを使用する事にしました。 その他はZUSさんの手順とおりです。

【注意】
現時点(2010年3月21日)のCygwinの gcc(gcc-4.exeにリンクされている) のバージョン(4.3.4) では "-mno-cygwin" をサポートしていません(version4.3.4に対応する mingw-targeted cross-compiler がない)。 なので、Cygwinのインストーラで 3.x系の gcc を インストールして、CC="gcc-3 -mno-cygwin" と指定しないといけないです。cygwin1.dll を使ってないか調べるには以下のコマンドで確認できます。


$ objdump -p ./openocd.exe | grep dll
    DLL Name: FTD2XX.dll
    DLL Name: msvcrt.dll
    DLL Name: msvcrt.dll
    DLL Name: KERNEL32.dll
    DLL Name: USER32.dll




C:\Program Files\OpenOCD\0.4.0\bin に各ファイルを移し、以下のファイルを作成します。

FILE: jtagkey_lpc2388.cfg

source [find ../interface/jtagkey.cfg]
source [find ../target/lpc2388.cfg]
			

JTAGkey cloneと Interface 付録基板(最低限の部品を搭載)を繋ぎ、JTAGkey cloneをPCのUSBポートへ繋ぐと赤LEDが点灯します。 次に、付録基板に電源を入れる(USBから電源を取っているので、他のUSBポートへ繋ぐ)と黄LEDが点灯します。 LEDの光ってない写真を撮ってしまった orz




この状態で、コマンドプロンプトでカレントディレクトリを openocd.exe の場所に移し、以下のコマンドを実行します。




この時点で、OpenOCDとJTAGkey, 付録基板がソフト的に繋がった事になります。
OpenOCD 0.3.0 あたりまでは接続に成功すると画面上に 「Info : JTAG Tap/device matched」 という文字列が出てたみたいですが、今のバージョン(0.5.0)では出ません。

念の為、本当に繋がっているのか telnet で OpenOCD へアクセスして付録基板に付いている lpc2388のTAPを取得してみました。
OpenOCDとの接続は、別のコマンドプロンプトを開いて以下のコマンドを実行します。


> telnet localhost 4444


telnet経由でOpenOCDと通信が成立したら、以下のコマンドを打つと現在繋がっているJTAGの TAP情報等を返してくれます。



"TapName" は lpc2388.cfg 内で情報を与えているのでその文字列が表示されていると思います。 取ってきたそのままの情報は "IdCode" と "Expected" くらいかな。 試しに lpc2388.cfg 内の情報を殆ど削って同じ事をすると "TapNeme", "IrMask" は違う値を返してきました。 因みに IdCode=0x4f1f0f0f は ARM7TDMI-S を指すみたいです。



これで JTAGkey clone としては動作確認まで出来た事になります。



<-Back
管理者: 宝 寿々郎(TAKARA Jujurou)