ようやくOpenOCD用のARM・JTAGアダプタが到着した。 注文してから1週間くらいで着いた。 その他の物もツイデに注文した。上の写真で上側が「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 watchpointsopenocdサーバを立ち上げると上の様になる。(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)
2010年05月29日
OpenOCD: NGX ARM USB JTAG 到着編
この記事へのコメント
コメントを書く