2010年05月29日

OpenOCD: NGX ARM USB JTAG 到着編

OpenOCD: NGX ARM USB JTAG 到着編

ようやくOpenOCD用のARM・JTAGアダプタが到着した。
注文してから1週間くらいで着いた。

その他の物もツイデに注文した。
ngx_arm_jtag_usb.jpg

上の写真で上側が「NGX ARM USB JTAG」、下が「Blueboard LPC1768-H」。
うれしい誤算として「JTAG用20ピン・フラットケーブル付き」だった。
ケーブルどうしようか困っていたが助かった。
ビニール線で手作りでもたいしたことないけどフラットケーブルの方が良いね。


で、「NGX ARM USB JTAG」。
結局、回路図がなかったのでググってみたら「oocdlink互換」と
言っている人がいた。
http://www.mail-archive.com/openocd-development@lists.berlios.de/msg13129.html

で、oocdlinkを調べるとこれが「-s,-h,-pと3種類」あってどれだか不明だ。

しかたないのでテスターでパターンを追っかけた結果、

「oocdlink-s互換」と判明した。
回路的には全く同じだと思います。

使用部品の型番が微妙に違うけど誤差範囲。
以下は結局「oocdlink-s」の話と同じだ。

使用部品:JTAG周り
*FT2232D
*74HC125D(SRST/TRST用)
* 93LC46B1 EEPROM

主要信号(TDI,TCK,etc)はターゲットに100Ω抵抗を介して直接つながる
低コストタイプなのでターゲットの動作電圧範囲は「3.0V〜5.0V」となる。

*動作
rollyのCrossWorksは既に「NGX ARM USB JTAG」アダプタ対応済みだったので
(本家のマニュアルより早い)接続してみた。

一応、認識したけどRunさせると「CPUを止められない」エラーで止まる。(^^;
OpenOCDのソースコード見ると設定値が間違っているような気がしなくもないけど
初JTAGアダプタなのでマッタリ行くのだ。

JTAGアダプタを入手するまで1年くらいかかったことになる。

*FT2232D 使用
なので最近のFT2232H使用の高速タイプの1世代前。
秋月のモジュールもFT2232D。
速度的にはJTAGKEYと同じと思う。

*SH-2A
ところで、ねむいさんのページに話題のSH-2AにFT2232系のアダプタで
つながる話があってびっくりした。
http://nemuisan.blog.bai.ne.jp/?eid=174671

SH2-Aが3V以上で動いてるならうちも使えそうだけど何ボルトか
覚えていない。(^^;
調べよっと。

listexportってツールが賞味期限なのかリンク切れ多発で迷子の迷子の。orz


*OpenOCDサーバを動かす
OpenOCDてTCPサーバだったのね (^^;
今、gitでゲットするとOpenOCD Ver0.5になるようだ。


http://www.m2uu.com/elektronika:blueboard-arm-lpc2148
上にある記述の「lpc2148.cfg」の部分を「lpc1768.cfg」に変えただけで動いた。
と、いうか、認識したというレベル。

「blueboard lpc1768-h」を動かすためのコンフィグファイルは、
以下を「ngx_lpc1768.cfg」という名前で保存する。
#
# Configuration file for NGX Blueboard (LPC1768 CPU)
# using NGX USB JTAG (0403:6010 USB id)
#
# Used with openocd 5.0 version
# 
# Last change: 2010-05
#
 
# port configurations
telnet_port 4444
gdb_port 3333
 
# cpu configuration
source [find target/lpc1768.cfg]
 
# interface configuration
source [find interface/openocd-usb.cfg]
 
# change device description or else device will not be found
ft2232_device_desc "NGX JTAG"
とりあえず全部デフォルトのコンフィグファイルだけで動いたことになる。 コマンドラインで
>openocd -f ngx_lpc1768.cfg
と実行する。 openocd.exeはインストール済みでパスが通っているので「ngx_lpc1768.cfg」さえ指定すれば どこからでも実行できる。
>openocd -f ngx_lpc1768.cfg
Open On-Chip Debugger 0.5.0-dev-00261-g2e1eaaa (2010-05-29)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.berlios.de/doc/doxygen/bugs.html
adapter_nsrst_delay: 200
jtag_ntrst_delay: 200
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
RCLK - adaptive
Info : device: 4 "2232C"
Info : deviceID: 67330064
Info : SerialNumber: FTxxxxx
Info : Description: NGX JTAG A
Info : RCLK (adaptive clock speed) not supported - fallback to 666 kHz
Info : JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xb
a00, ver: 0x4)
Info : lpc1768.cpu: hardware has 6 breakpoints, 4 watchpoints
openocdサーバを立ち上げると上の様になる。(1行目以外はopenocdの出力) 次、 この画面は放置しといて teratermなんかでtcpクライアントでopenocdサーバに接続する。 ホスト名: localhost サービス:Telnet TCPポート:4444 で接続。 すると、
Open On-Chip Debugger
>
と出ました。 うえのリンク先のまねをしてコマンドを入れてみた。
> flash list
{name lpc2000 base 0 size 524288 bus_width 0 chip_width 0}
> halt
> reg 0
r0 (/32): 0x10000440
> reg 15
pc (/32): 0x00000188
> resume
> reg 15
pc (/32): 0x00000188
> poll
background polling: on
TAP: lpc1768.cpu (enabled)
target state: running
> reset
RCLK not supported - fallback to 666 kHz
JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
> reset init
RCLK not supported - fallback to 666 kHz
JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x1fff0080 msp: 0x10001ffc
>
という感じでひとまずJTAG経由でターゲットと通信はできてそうだ。 なんか一安心。 v(^^) *インストールメモ コンパイル系: *OpenOCDはgitで最新版(Ver0.50の途中版)を持ってきた。  コンパイルはcygwin上で「-mno-cygwin」を付けてコンパイル。 *objdump -p openocd.exe | grep dll  でcygwinに依存しないことを確認。 *ベースとなるOpenOCDのインストーラはVer0.40を使用。  インストール先のopenocd.exeを自分でコンパイルしたopenocd.exeに  置き換える。openocd\ftd2xx\i386\ftd2xx.dllも同じ場所にコピーする。  同様にopenocd\tclフォルダ(コンパイルフォルダ下の)の[board,interface,target]フォルダを  Ver0.40の同名フォルダに上書き。  (これらの*.cfgファイルはopenocdのバージョンとあわせた方が良い) *ベースとなるOpenOCDは特に必要ないと思う。  openocd.exeとftd2xx.dllと*.cfgファイルだけあればよいようだ。 FT2232ドライバ系: *「CDM 2.06.00 WHQL Certified」をインストール。   デバイスマネージャに現れるまでJTAGアダプタを抜き差しする。   VCPのチェックはあえて入れなかった。(入れなくても良い) * 認識不良風なのでUSBハブを使わず直接PCのUSB端子にJTAGアダプタを差したら   正しく認識した。その後PCをリセットする。 * 結局VCPのチェックは入れなくても自動で判別されるようだ。   (JTAGアダプタはVCPじゃない方の制御方法を使う) * FT_PROGというFTDI純正ソフトでJTAGアダプタの内部情報を確認できる。 <重要な注意> 上の印どのメーカはお勧めしません。 購入後に上記国からのスパムメールが明らかに増えました。 お勧めしません。(2010/07)
posted by Copyright (C) avrin All Rights Reserved. at 11:54| Comment(0) | OpenOCD | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。