ようやく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 到着編
2010年05月01日
OpenOCD: NGX ARM USB JTAG 瞬殺 orz
格安OpenOCDアダプタ
NGX ARM USB JTAG

3850円(=$41=$27(本体)+$14(送料)) (94円/1ドル 換算)
送料込みですから。
本体だけなら$27(2500円)と世界最安かもしれません。
2010/4/30に発売。確かにその時、在庫があった。
まさか、こんなに早く売り切れると思ってないので
注文は後にした。
2010/5/1夜。 そろそろ注文しておこう。
げっ!! もう売り切れてる。
だ、だめだった。
orz
お〜〜〜〜〜〜い!
もうこうなったら
ぐれてSH2A用の1マソ円くらいのOpenOCDもできる
JTAGアダプタ買っちゃうかもよ。(グレルナ オイ
で、
「回路図を公開する」と、ある時点で書いてあった。
今その記述は消えている。
その代わりCrossWorksという開発環境用の設定方法が記述してある。
OpenOCDで使うときはCrossWorksの設定から自分で変換する作業が
必要になる。
次の入荷は不明。
運良くNGX ARM USB JTAGを買えた人はレポよろしく。
<重要な注意>
上の印どのメーカはお勧めしません。
購入後に上記国からのスパムメールが明らかに増えました。
お勧めしません。(2010/07)
関連:
安い完成品のOpenOCD/JTAGアダプタを探せっ!
http://avr.paslog.jp/article/1398565.html
NGX ARM USB JTAG

3850円(=$41=$27(本体)+$14(送料)) (94円/1ドル 換算)
送料込みですから。
本体だけなら$27(2500円)と世界最安かもしれません。
2010/4/30に発売。確かにその時、在庫があった。
まさか、こんなに早く売り切れると思ってないので
注文は後にした。
2010/5/1夜。 そろそろ注文しておこう。
げっ!! もう売り切れてる。
だ、だめだった。
orz
お〜〜〜〜〜〜い!
もうこうなったら
ぐれてSH2A用の1マソ円くらいのOpenOCDもできる
JTAGアダプタ買っちゃうかもよ。(グレルナ オイ
で、
「回路図を公開する」と、ある時点で書いてあった。
今その記述は消えている。
その代わりCrossWorksという開発環境用の設定方法が記述してある。
OpenOCDで使うときはCrossWorksの設定から自分で変換する作業が
必要になる。
次の入荷は不明。
運良くNGX ARM USB JTAGを買えた人はレポよろしく。
<重要な注意>
上の印どのメーカはお勧めしません。
購入後に上記国からのスパムメールが明らかに増えました。
お勧めしません。(2010/07)
関連:
安い完成品のOpenOCD/JTAGアダプタを探せっ!
http://avr.paslog.jp/article/1398565.html
2010年04月25日
安い完成品のOpenOCD/JTAGアダプタを探せっ!
以下はWindows上のOpenOCDに特化した話。 (注 以下はOpenOCD(ソフト)とそのアダプタ(ハード)を混同して 書いてあります。気にしないように。(爆 * 完成品のOpenOCDアダプタ OpenOCDのアダプタを自作すると安くできるけど作るのが大変そうなので、 完成品で安めのものをテキトウに探すと以下の物があった。 2010年の初め頃に値段だけでほぼこれを注文する勢いだった。 そもそもOpenOCDて何よ? って状態なので値段だけでメボシをつけた。上はSeggerのJ-LINKクローンアダプタらしい。
これもJ-Link互換品。 ところがOpenOCDをビルドする過程の調査で重大な点を見落としていることに 気づいたのだった。 * OpenOCDアダプタの種類 実はアダプタには種類がたくさんあって例えば上の2つは 「Segger J-Linkタイプ」。 有名なのは「FTDIのFT2232タイプ」かも。 ねむいさんのSTM8S-Discoveryを改造して作ったVersaloonタイプとかもある。 http://openocd.berlios.de/doc/html/Debug-Adapter-Hardware.html#Debug-Adapter-Hardware これらは中身が違うのでOpenOCDが対応しているドライバも違う。 何が問題かというと「Segger J-Linkタイプ」の場合、 「LibUSB-Win32ドライバ」しか使えないので 「Windows VISTA上のLibUSB-Win32ドライバ問題」(VISTA問題)に ブチ当たるのだった。(パソコンの操作が不能になる問題) OpenOCDはLibUSB-Win32の「バージョンを指定」していてこれがまさしく問題のある 危険なバージョンなのだった。orz で、「FTDIのFT2232タイプ」の場合は 1,Libftdi + LibUSB-Win32を利用するタイプ。 「ライセンス問題なし」なのでインストーラ付きの コンパイル済みバイナリが利用できる。 http://www.freddiechopin.info/index.php/download/category/4-openocd# ただし危険な「VISTA問題」が発生する。(WindowsXPなら問題ない) 2,FTDIの提供するドライバ・ライブラリ(*.dll)群を利用するタイプ。 ライセンス問題により自分でビルドする必要がある。 「VISTA問題」は発生しない。 これがあちこちのページで制作例があるものだ。 「ビルドする」という言葉が出てくるやつです。 の、どちらかを選択できるのだ。 *FTDIのFT2232タイプ と、いうわけで選択肢は「FT2232タイプ」に絞られる。 FT2232を使ったAmontec JtagKey クローン系の自作ページはたくさんある。 とくにねむいさんのページは自作・完成品にかかわらず非常に参考になるだろう。 ここでは「自作しないで安めの完成品を探す」のがひとまずの趣旨なのだった。 作っても良いけど、そこそこ安い完成品(自作+2αくらい)があれば それを買った方が「お気楽極楽」に決まっている。 問題は入手性や値段だ。 ところで「2α」:2アルファって? まぁ そこは微妙なわけです。(爆
国内ではこの「USB Open-JTAG+RS232」(以後Open-Jtag) 6400円 (= 5800円+600円(送料)) くらいしか見つけられなかった。 こういうのもある
6560円 (= 5460円+(300円+800円)(手数料) ) *決定版あらわるっ!? 海外に目を向けると何点か出てくる。 その中でも以下の物がかなり良い感じだ。 NGX ARM USB JTAG
3850円(=$41=$27(本体)+$14(送料)) (94円/1ドル 換算) 送料込みですから。 本体だけなら$27(2500円)と世界最安かもしれません。 以下、自作品も含めて表にしてみた。
メーカ | JTAGアダプタ | 価格 | 備考 | |
完成品 | ecst | USB Open-JTAG | 6400円 | JTAGケーブル二本付き、ケース入り |
自作 | 秋月系 | FT223D利用 | 3100円 | 1700円(本体)+800円(手数料)+600円(追加部品) |
自作 | 苺系 | FT2232HX利用 | 4350円 | 3150円(本体)+700円(手数料)+500円(追加部品) |
完成品 | NGX | ARM USB JTAG | 3850円 | 上記参照、JTAGケーブル付き |
OpenOCD vs LPCXpresso (IOビュー画面)
結論から書くと
1,LPCXpressoのデバッグ画面にはIOビュー画面がある。
2,OpenOCD+EclipseにはIOビュー画面がない可能性が高い。
OpenOCD持ってないので予想だが、いろんなページの画面をみても
IOビューを表示しているものを発見できなかったのでこの結論になった。
*IO(ペリフェラル)ビュー画面とは?
以下はAVRのシミュレータのIOビュー画面だ。

例えば上のように
1,ポートレジスタ類を名前とデータで参照・変更できる。
2,ビット単位でも名前とデータが参照・変更できる。
と、この機能はデバッグする上でかなり便利です。
以下は「LPCxpresso」のIOビュー画面だ。

上の画面は「IOCONレジスタ」でPIO2のビット6をプルアップ付きに設定している
ところ。
プルアップ、プルダウン、禁止などを「プルダウンメニュー」でセレクトでき、
状態も確認できる。
当然、ステップ実行中に状態を変えることもできる。
*OpenOCDにはない?
多分ないという予想。orz
代替としてはアドレスを指定してメモリ参照する。
これでもできるが「IOビュー」に比べるとかなり不便。
orz
それでも、それ以外のデバッグ機能があるだけでも「デバッグ」できないよりは
100倍くらい良いといえるといえば言えるのだった。
*MPLAB C30デバッガ
同じgcc+gdb系のMPLAB C30デバッガはビット単位の参照変更はできないが、
IOレジスタの名前一覧が出てきてデータ参照変更ができる。
これくらいが最小限必須かなぁ。
1,LPCXpressoのデバッグ画面にはIOビュー画面がある。
2,OpenOCD+EclipseにはIOビュー画面がない可能性が高い。
OpenOCD持ってないので予想だが、いろんなページの画面をみても
IOビューを表示しているものを発見できなかったのでこの結論になった。
*IO(ペリフェラル)ビュー画面とは?
以下はAVRのシミュレータのIOビュー画面だ。

例えば上のように
1,ポートレジスタ類を名前とデータで参照・変更できる。
2,ビット単位でも名前とデータが参照・変更できる。
と、この機能はデバッグする上でかなり便利です。
以下は「LPCxpresso」のIOビュー画面だ。

上の画面は「IOCONレジスタ」でPIO2のビット6をプルアップ付きに設定している
ところ。
プルアップ、プルダウン、禁止などを「プルダウンメニュー」でセレクトでき、
状態も確認できる。
当然、ステップ実行中に状態を変えることもできる。
*OpenOCDにはない?
多分ないという予想。orz
代替としてはアドレスを指定してメモリ参照する。
これでもできるが「IOビュー」に比べるとかなり不便。
orz
それでも、それ以外のデバッグ機能があるだけでも「デバッグ」できないよりは
100倍くらい良いといえるといえば言えるのだった。
*MPLAB C30デバッガ
同じgcc+gdb系のMPLAB C30デバッガはビット単位の参照変更はできないが、
IOレジスタの名前一覧が出てきてデータ参照変更ができる。
これくらいが最小限必須かなぁ。
2010年04月18日
OpenOCD: Cygwin 1.5系→1.7系 gcc3/gcc4 -mno-cygwin
2009年の年末にCygwin1.7系がリリースされたようだ。 2010年4月現在、最新のsetup.exeを実行すると1.7系になってしまう。 インストーラにインクリメンタルサーチ機能が付いて便利だけど メチャメチャ遅い。orz 非常に大きな変更で大量にHDDを消費した。 ざっくりな変更点は、 1、デフォルト文字コードがUTF8ベースになった。(その他もサポート) 2、複数のCygwinが共存可能になった。 3、4096文字までのパス名をサポート。(以前は260文字) 4、マウントテーブルをレジストリでなくfstab系に保存する。 5、IPv6対応。 等々。 注意点は、 * gcc-4系は「-mno-cygwin」オプションが効かない。 gcc-3系は大丈夫。 * gcc-4系とgcc-3系が同時にインストールされた場合、それぞれ set-gcc-default-4.sh set-gcc-default-3.sh というスクリプトが用意されているのでこれで切り替える。 * emacs が「C-x C-c」 で終了できない。orz 「.emacs」に (global-set-key "\C-x\C-g" 'save-buffers-kill-emacs) を追加できり抜けた。 従って「gcc-3系 + no-cygwin」 はOKだけど「gcc-4系 + no-cygwin 」したいときは cygwinをあきらめてMinGWを使ったほうがよいかも。 でも当面Cygwinの「gcc-3系 + no-cygwin」でOKじゃないかな。 そもそもgcc-3系と4系の共存はCygwin1.7以前からできてたような気もするし よく覚えていない。 * apt-cygを入れた Setup.exeは使いにくいのでこの際「apt-cyg」を入れてみた。 http://stephenjungels.com/jungels.net/projects/apt-cyg/ 本物のapt-getの機能には全く及ばないもののSetup.exeよりらくちんな感じだ。 これでようやくOpenOCDのビルド準備ができた。 過去のコンパイラダウンロード http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3053 http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/openocd_intro/index.html OpenOCD ビルド方法(win32版) http://homepage3.nifty.com/zus/OpenOCD_Build_win32_Flame.html openocd-development http://www.mail-archive.com/openocd-development@lists.berlios.de/