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 | このブログの読者になる | 更新情報をチェックする

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
posted by Copyright (C) avrin All Rights Reserved. at 21:36| Comment(0) | OpenOCD | このブログの読者になる | 更新情報をチェックする

2010年04月25日

安い完成品のOpenOCD/JTAGアダプタを探せっ!

安い完成品の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アダプタ価格備考
完成品ecstUSB Open-JTAG6400円JTAGケーブル二本付き、ケース入り
自作秋月系FT223D利用3100円1700円(本体)+800円(手数料)+600円(追加部品)
自作苺系FT2232HX利用4350円3150円(本体)+700円(手数料)+500円(追加部品)
完成品NGXARM USB JTAG3850円上記参照、JTAGケーブル付き
手数料や追加部品なんかは状況によるので当然ざっくりめだ。 NGX ARM USB JTAGの送料$14を選択しているがトラッキング不可の普通郵便に すればさらに「-400円」することができる。ただし到着に2週間以上 かかる可能性がある。(届かない可能性も。。。) *ここまでのまとめ このように見れば安いと思われている秋月系の「3100円」に対して NGX ARM USB JTAGは「3850円」と な、なんと、750円ポッチしか違わないのだった!! これはもう走るしかない! (ハシウ? で、 NGX ARM USB JTAG 2010/04/25現在まだ未発売で(オイ 発売は2010/04/30からなのだ。 回路図も公開されるらしい。 人柱乙 ! (オ〜〜〜〜〜イ OpenOCD: NGX ARM USB JTAG 瞬殺 orz http://avr.paslog.jp/article/1405767.html <重要な注意> 上の印どのメーカはお勧めしません。 購入後に上記国からのスパムメールが明らかに増えました。 お勧めしません。(2010/07) 参考リンク: 過去のコンパイラダウンロード 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/
posted by Copyright (C) avrin All Rights Reserved. at 11:05| Comment(3) | OpenOCD | このブログの読者になる | 更新情報をチェックする

OpenOCD vs LPCXpresso (IOビュー画面)

結論から書くと
1,LPCXpressoのデバッグ画面にはIOビュー画面がある。
2,OpenOCD+EclipseにはIOビュー画面がない可能性が高い。

OpenOCD持ってないので予想だが、いろんなページの画面をみても
IOビューを表示しているものを発見できなかったのでこの結論になった。

*IO(ペリフェラル)ビュー画面とは?
以下はAVRのシミュレータのIOビュー画面だ。
io-view-avr.gif
例えば上のように
1,ポートレジスタ類を名前とデータで参照・変更できる。
2,ビット単位でも名前とデータが参照・変更できる。

と、この機能はデバッグする上でかなり便利です。

以下は「LPCxpresso」のIOビュー画面だ。
io-view-lpcxpresso.gif
上の画面は「IOCONレジスタ」でPIO2のビット6をプルアップ付きに設定している
ところ。
プルアップ、プルダウン、禁止などを「プルダウンメニュー」でセレクトでき、
状態も確認できる。
当然、ステップ実行中に状態を変えることもできる。


*OpenOCDにはない?
多分ないという予想。orz
代替としてはアドレスを指定してメモリ参照する。
これでもできるが「IOビュー」に比べるとかなり不便。

orz



それでも、それ以外のデバッグ機能があるだけでも「デバッグ」できないよりは
100倍くらい良いといえるといえば言えるのだった。



*MPLAB C30デバッガ
同じgcc+gdb系のMPLAB C30デバッガはビット単位の参照変更はできないが、
IOレジスタの名前一覧が出てきてデータ参照変更ができる。
これくらいが最小限必須かなぁ。
posted by Copyright (C) avrin All Rights Reserved. at 10:21| Comment(0) | OpenOCD | このブログの読者になる | 更新情報をチェックする

2010年04月18日

OpenOCD: Cygwin 1.5系→1.7系 gcc3/gcc4 -mno-cygwin

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/
posted by Copyright (C) avrin All Rights Reserved. at 20:02| Comment(0) | OpenOCD | このブログの読者になる | 更新情報をチェックする