UrJtagを使う
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2009/04/26からのアクセス回数 &counter;
** はじめに [#tc11b2ce]
ディジタル・デザイン・テクノロジにLattice XP2が付録として...
&ref(1.jpg);
残念ながら、
- なひたふさんが、
[[Window用の書き込みソフト>http://www.nahitech.com/nahita...
を公開されていますが、Mac OS Xでは使えません
- Lattice XP2用のUSB接続のダウンロードケーブルが入手が難...
ためUrJtagを使ってプログラムを書き込むことにしました。
** JTAGケーブルの選定 [#jf4d9d0b]
UrJtagは、
[[様々なJTAGケーブル>http://urjtag.svn.sourceforge.net/vi...
をサポートしています。
- Xilinx parallel cable等のパラレルポート用のJTAGケーブル
- JTAGKeyやOlimex ARM-USB-JTAG等のFT2232を使ったUSBケーブル
- Altera USB-Blaster, Xilinx Platform USB Cable
しかし、
- Macにはパラレルポートはありませんし、
- LeopardではD2XXドライバとVCP(仮想COMポート)ドライバは同...
[[MacOSXでFTDIのBit-Bangモードを試す>http://arms22.blog91...
を参照してください。
そこで、[[USB-Blasterの互換ケーブル>http://www.hdl.co.jp/...
私は試していませんが、
世の中には[[USB-Blasterもどき>http://sa89a.net/mp.cgi/ele...
** UrJtagのインストール [#u6ec5fbb]
[[MacPort]]を使って、UrJtagをインストールします。
ターミナルから以下のコマンドを入力します。
#pre{{
$ sudo port install urjtag
}}
これだけで、urjtagのインストールは完了です。ターミナルか...
#pre{{
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
}}
** UrJtagの動作確認 [#ca9753f9]
urjtagが正常にインストールできたかどうか確認します。'''US...
- USB-Blasterを接続
- urjtagを起動(jtagと入力)し、
- jtag>プロンプトが表示されたらcable UsbBlasterと入力します
#pre{{
$ jtag
UrJTAG 0.9 #1359
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008 Kolja Waschk and the respective ...
UrJTAG is free software, covered by the GNU General Publi...
welcome to change it and/or distribute copies of it under...
There is absolutely no warranty for UrJTAG.
WARNING: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.
jtag> cable UsbBlaster
Connected to libftdi driver.
jtag>
}}
のようにConnected to libftdi driver.が表示されたら、urjta...
認識できています。
** UrJtagの使い方 [#x1e06b48]
urjtagの基本的な使い方を、トラ技2006年4月号の付録、ALTERA...
で調べてみます。
これが、MAX IIとHDL-CQ1の実験用ボードです。
&ref(scan.jpg);
接続しているチップを調べるコマンドがdetectです。
UrJtagのdetectを実行します。
#pre{{
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010100001000011011101 (0x0000000002...
Manufacturer: Altera
Unknown part!
chain.c(133) Part 0 without active instruction
chain.c(184) Part 0 without active instruction
chain.c(133) Part 0 without active instruction
jtag>
}}
メーカーがAlteraであることは認識しているようですが、チッ...
出力されます。
これは、UrJtagのデーターベースにMAX IIが登録されていない...
*** BSDLファイルからJTAG情報を抽出 [#w4d242e6]
今回のチップは、Altera EPM240T100です。
Googleで、EPM240T100 BSDLで検索して、EPM240T100のBSDLファ...
私は、[[ここ>http://www.altera.co.jp/support/devices/bsdl...
のBSDLファイルをダウンロードしました。
BSDLファイルには、EPM240T100のチップ情報が定義されていま...
次に、ダウンロードしたEPM240T100.BSD.txtをbsdlコマンドを...
#pre{{
$ jtag
jtag> bsdl dump EPM240T100.BSD.txt
signal GND(1)
signal GND(2)
signal GND(3)
signal GND(4)
signal GND(5)
途中省略
bit 236 O ? IO27 235 1 Z
bit 237 I ? IO26
bit 238 C 1 *
bit 239 O ? IO26 238 1 Z
jtag>
}}
dumpコマンドの結果をコピーし、epm240ファイルに保存します。
*** JTAG情報のセット [#ic8176e1]
UrJtagのJTAG情報は、インストール先のxxxx/share/urjtag/以...
MacPortでインストールしたUrJtagの場合、/opt/local/share/u...
JTAG情報は、製造会社名/型名/品番名のような階層構造になっ...
#pre{{
/opt/local/share/urjtag/altera/epm240/epm240
}}
に置くことにします。
このディレクトリは管理者権限でないとアクセスできないので、
#pre{{
$ sudo mkdir -p /opt/local/share/urjtag/altera/epm240/
$ sudo cp -p epm240 /opt/local/share/urjtag/altera/epm240/
}}
次に、/opt/local/share/urjtag/altera/のPART情報にepm240の...
BSDLに
#pre{{
attribute IDCODE_REGISTER of EPM240T100 : entity is
"0000"& --4-bit Version
"0010000010100001"& --16-bit Part Number (hex 20A1)
"00001101110"& --11-bit Manufacturer's Identity
"1"; --Mandatory LSB
}}
と定義されていますので、0010000010100001がパート番号にな...
PARTSに以下の1行を追加します。
#pre{{
0010000010100001 epm240 EPM240
}}
次に、/opt/local/share/urjtag/altera/STEPPINGSにバージョ...
#pre{{
0000 epm240 0
}}
これで、EPM240が正しく認識できるか調べてみましょう。
#pre{{
$ jtag
jtag > cable UsbBlaster
Connected to libftdi driver.
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010100001000011011101 (0x0000000002...
Manufacturer: Altera
Part(0): EPM240
Stepping: 0
Filename: /opt/local/share/urjtag/altera/epm240/epm...
jtag>
}}
今度は、EPM240として認識されました。これで完了です!
** バウンダリスキャンを試してみる [#e01e1e73]
先にEPM240が認識された状態から、バウンダリスキャンを実行...
*** IDCODEのチェック [#de619b9f]
最初にIDCODEを出力してみます。
JTAGでの手順は以下の通りです。
+ instructionにIDCODEを指定する
+ irレジスタをシフトする
+ drレジスタをシフトする
+ drレジスタの内容を表示する
を実行した結果は以下の通りです。
#pre{{
jtag> instruction IDCODE
jtag> shift ir
jtag> shift dr
jtag> dr
00000010000010100001000011011101
jtag>
}}
drの値にdetectの出力でてた、
#pre{{
Device Id: 00000010000010100001000011011101 (0x0000000002...
}}
の値がセットされていいます。
*** SAMPL/PRELOADコマンド [#ke831052]
次にSAMPL/PRELOADコマンドを使って各ピンの状態を出力します。
#pre{{
jtag> instruction SAMPLE/PRELOAD
jtag> shift ir
jtag> shift dr
jtag> dr
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001101001001001001001001
001001001001001001001001001001
jtag>
}}
見やすいようにdrの出力を30ビット単位で区切ってあります。
MAX IIは、IOピンが80ピンで、各ピンの情報は3つのセルで
管理されています。
一番右下の値がLSBの値です。
ほとんどが001のパターンに対して
&ref(sample.jpg);
だけ101となっています。これは、右下から数えて17ピン目の情...
EPM240T100.BSDファイルをみると
#pre{{
--BSC group 16 for I/O pin 1
"48 (BC_4, IO1, input, X)," &
"49 (BC_1, *, control, 1)," &
"50 (BC_1, IO1, output3, X, 49, 1, Z)," &
}}
とあり、ピン番号1番の情報であることが分かります。
MAX IIに書き込まれているプログラムは、1番ピンに1を出力...
なので、その値を正しくスキャンできていることが分かります。
*** EXTESTコマンド [#ie1830cd]
次にEXTESTコマンドを使ってピンの出力を変えてみます。
HDL-CQ1ボードのLED7は、EPM240の37ピンです。
EPM240T100.BSDファイルをみると、
#pre{{
--BSC group 70 for I/O pin 37
"210 (BC_4, IO37, input, X)," &
"211 (BC_1, *, control, 1)," &
"212 (BC_1, IO37, output3, X, 211, 1, Z)," &
}}
とあり、ちょうどdrの出力の上から10ピン目になります。
この値を001から101に変更して、出力値として1を送るとLEDは...
#pre{{
jtag> instruction EXTEST
jtag> shift ir
jtag> dr 001001001001001001001001001101
001001001001001001001110001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001101001001001001001001
001001001001001001001001001001
001001001001001001001001001101
001001001001001001001110001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001101001001001001001001
001001001001001001001001001001
jtag> shift dr
jtag>
}}
(ビット列は、10ピン単位に改行してあります)
すると予想通り、LED7が消灯します。
(中央の緑のLEDが3個だけ点灯しており、一番下のLEDが
消灯しています)
&ref(extest.jpg);
** CPLDへの書き込み [#y7e9a0cc]
UrJtagは、CPLDへの書き込み用にSVFフォーマットをサポートし...
*** LatticeのツールでSVFファイルを作成 [#p52686f2]
それでは、Latticeのツールが生成したプログラムからSVFファ...
には、どのようにすればよいかご説明します。
このツールは、GoogleでLattice jed svf convertで検索し、
http://www.it.lth.se/digp/PDF_files/lattice/lattice_dcd.pdf
の中の、Fig. 2-1の図でSVFファイルへの変換をサポートしてい...
手順は以下の通りです。
- ispVMを起動する
- ispToolメニューからUniversal Fiel Writerを選択する
- 出力ファイルフォーマットプルダウンメニューでSerial Vect...
- Fiel->Open Input Data File...メニューを選択し、変換する...
- Output Data Fileをダブルクリックし、出力ファイルを指定...
- Project->Generateメニューを選択し、変換する
&ref(ispVM.jpg);
*** Lattice XP2のBDSL情報 [#n584ea0b]
MAX IIと同様にLattice XP2のBSDLを取得し、JTAGファイルに変...
以下のファイルを参照してください。
- BDSLファイル、&ref(lfxp2_5e_tqfp144.bsm.txt);
- JTAGファイル、&ref(lfxp2-5e-tqfp144.jtag.txt);
*** プログラムの書き込み [#id3b45cc]
最後に、SVFファイルをLattice XP2に書き込みます。
#pre{{
jtag> cable UsbBlaster
Connected to libftdi driver.
jtag> detect
IR length: 8
Chain length: 1
Device Id: 00000001001010011001000001000011 (0x0000000001...
Manufacturer: Lattice Semiconductors
Part(0): lfxp2-5e-tqfp144
Stepping: 0
Filename: /opt/local/share/urjtag/lattice/lfxp2-5e-...
jtag> svf hdl_sample.svf
時間がかかりますが、そのまま待ってください
jtag> instruction BYPASS
jtag> shift ir
jtag> quit
}}
これで、Lattice XP2をリセットすると、DL3の緑のLEDが点滅し...
** コメント [#jf947abc]
この記事は、
#vote(おもしろかった[31],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- JTAGの使い方は、INTERFACE 2005年2月号のJTAG徹底活用研究...
- 「FT2232を使ったUSBケーブルはそのままでは正常に動作しま...
- もなかさま、コメントありがとうございます。どこのケーブ...
- もなかさま、ありがとうございます。うまく接続できました...
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2009/04/26からのアクセス回数 &counter;
** はじめに [#tc11b2ce]
ディジタル・デザイン・テクノロジにLattice XP2が付録として...
&ref(1.jpg);
残念ながら、
- なひたふさんが、
[[Window用の書き込みソフト>http://www.nahitech.com/nahita...
を公開されていますが、Mac OS Xでは使えません
- Lattice XP2用のUSB接続のダウンロードケーブルが入手が難...
ためUrJtagを使ってプログラムを書き込むことにしました。
** JTAGケーブルの選定 [#jf4d9d0b]
UrJtagは、
[[様々なJTAGケーブル>http://urjtag.svn.sourceforge.net/vi...
をサポートしています。
- Xilinx parallel cable等のパラレルポート用のJTAGケーブル
- JTAGKeyやOlimex ARM-USB-JTAG等のFT2232を使ったUSBケーブル
- Altera USB-Blaster, Xilinx Platform USB Cable
しかし、
- Macにはパラレルポートはありませんし、
- LeopardではD2XXドライバとVCP(仮想COMポート)ドライバは同...
[[MacOSXでFTDIのBit-Bangモードを試す>http://arms22.blog91...
を参照してください。
そこで、[[USB-Blasterの互換ケーブル>http://www.hdl.co.jp/...
私は試していませんが、
世の中には[[USB-Blasterもどき>http://sa89a.net/mp.cgi/ele...
** UrJtagのインストール [#u6ec5fbb]
[[MacPort]]を使って、UrJtagをインストールします。
ターミナルから以下のコマンドを入力します。
#pre{{
$ sudo port install urjtag
}}
これだけで、urjtagのインストールは完了です。ターミナルか...
#pre{{
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
}}
** UrJtagの動作確認 [#ca9753f9]
urjtagが正常にインストールできたかどうか確認します。'''US...
- USB-Blasterを接続
- urjtagを起動(jtagと入力)し、
- jtag>プロンプトが表示されたらcable UsbBlasterと入力します
#pre{{
$ jtag
UrJTAG 0.9 #1359
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008 Kolja Waschk and the respective ...
UrJTAG is free software, covered by the GNU General Publi...
welcome to change it and/or distribute copies of it under...
There is absolutely no warranty for UrJTAG.
WARNING: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.
jtag> cable UsbBlaster
Connected to libftdi driver.
jtag>
}}
のようにConnected to libftdi driver.が表示されたら、urjta...
認識できています。
** UrJtagの使い方 [#x1e06b48]
urjtagの基本的な使い方を、トラ技2006年4月号の付録、ALTERA...
で調べてみます。
これが、MAX IIとHDL-CQ1の実験用ボードです。
&ref(scan.jpg);
接続しているチップを調べるコマンドがdetectです。
UrJtagのdetectを実行します。
#pre{{
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010100001000011011101 (0x0000000002...
Manufacturer: Altera
Unknown part!
chain.c(133) Part 0 without active instruction
chain.c(184) Part 0 without active instruction
chain.c(133) Part 0 without active instruction
jtag>
}}
メーカーがAlteraであることは認識しているようですが、チッ...
出力されます。
これは、UrJtagのデーターベースにMAX IIが登録されていない...
*** BSDLファイルからJTAG情報を抽出 [#w4d242e6]
今回のチップは、Altera EPM240T100です。
Googleで、EPM240T100 BSDLで検索して、EPM240T100のBSDLファ...
私は、[[ここ>http://www.altera.co.jp/support/devices/bsdl...
のBSDLファイルをダウンロードしました。
BSDLファイルには、EPM240T100のチップ情報が定義されていま...
次に、ダウンロードしたEPM240T100.BSD.txtをbsdlコマンドを...
#pre{{
$ jtag
jtag> bsdl dump EPM240T100.BSD.txt
signal GND(1)
signal GND(2)
signal GND(3)
signal GND(4)
signal GND(5)
途中省略
bit 236 O ? IO27 235 1 Z
bit 237 I ? IO26
bit 238 C 1 *
bit 239 O ? IO26 238 1 Z
jtag>
}}
dumpコマンドの結果をコピーし、epm240ファイルに保存します。
*** JTAG情報のセット [#ic8176e1]
UrJtagのJTAG情報は、インストール先のxxxx/share/urjtag/以...
MacPortでインストールしたUrJtagの場合、/opt/local/share/u...
JTAG情報は、製造会社名/型名/品番名のような階層構造になっ...
#pre{{
/opt/local/share/urjtag/altera/epm240/epm240
}}
に置くことにします。
このディレクトリは管理者権限でないとアクセスできないので、
#pre{{
$ sudo mkdir -p /opt/local/share/urjtag/altera/epm240/
$ sudo cp -p epm240 /opt/local/share/urjtag/altera/epm240/
}}
次に、/opt/local/share/urjtag/altera/のPART情報にepm240の...
BSDLに
#pre{{
attribute IDCODE_REGISTER of EPM240T100 : entity is
"0000"& --4-bit Version
"0010000010100001"& --16-bit Part Number (hex 20A1)
"00001101110"& --11-bit Manufacturer's Identity
"1"; --Mandatory LSB
}}
と定義されていますので、0010000010100001がパート番号にな...
PARTSに以下の1行を追加します。
#pre{{
0010000010100001 epm240 EPM240
}}
次に、/opt/local/share/urjtag/altera/STEPPINGSにバージョ...
#pre{{
0000 epm240 0
}}
これで、EPM240が正しく認識できるか調べてみましょう。
#pre{{
$ jtag
jtag > cable UsbBlaster
Connected to libftdi driver.
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010100001000011011101 (0x0000000002...
Manufacturer: Altera
Part(0): EPM240
Stepping: 0
Filename: /opt/local/share/urjtag/altera/epm240/epm...
jtag>
}}
今度は、EPM240として認識されました。これで完了です!
** バウンダリスキャンを試してみる [#e01e1e73]
先にEPM240が認識された状態から、バウンダリスキャンを実行...
*** IDCODEのチェック [#de619b9f]
最初にIDCODEを出力してみます。
JTAGでの手順は以下の通りです。
+ instructionにIDCODEを指定する
+ irレジスタをシフトする
+ drレジスタをシフトする
+ drレジスタの内容を表示する
を実行した結果は以下の通りです。
#pre{{
jtag> instruction IDCODE
jtag> shift ir
jtag> shift dr
jtag> dr
00000010000010100001000011011101
jtag>
}}
drの値にdetectの出力でてた、
#pre{{
Device Id: 00000010000010100001000011011101 (0x0000000002...
}}
の値がセットされていいます。
*** SAMPL/PRELOADコマンド [#ke831052]
次にSAMPL/PRELOADコマンドを使って各ピンの状態を出力します。
#pre{{
jtag> instruction SAMPLE/PRELOAD
jtag> shift ir
jtag> shift dr
jtag> dr
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001101001001001001001001
001001001001001001001001001001
jtag>
}}
見やすいようにdrの出力を30ビット単位で区切ってあります。
MAX IIは、IOピンが80ピンで、各ピンの情報は3つのセルで
管理されています。
一番右下の値がLSBの値です。
ほとんどが001のパターンに対して
&ref(sample.jpg);
だけ101となっています。これは、右下から数えて17ピン目の情...
EPM240T100.BSDファイルをみると
#pre{{
--BSC group 16 for I/O pin 1
"48 (BC_4, IO1, input, X)," &
"49 (BC_1, *, control, 1)," &
"50 (BC_1, IO1, output3, X, 49, 1, Z)," &
}}
とあり、ピン番号1番の情報であることが分かります。
MAX IIに書き込まれているプログラムは、1番ピンに1を出力...
なので、その値を正しくスキャンできていることが分かります。
*** EXTESTコマンド [#ie1830cd]
次にEXTESTコマンドを使ってピンの出力を変えてみます。
HDL-CQ1ボードのLED7は、EPM240の37ピンです。
EPM240T100.BSDファイルをみると、
#pre{{
--BSC group 70 for I/O pin 37
"210 (BC_4, IO37, input, X)," &
"211 (BC_1, *, control, 1)," &
"212 (BC_1, IO37, output3, X, 211, 1, Z)," &
}}
とあり、ちょうどdrの出力の上から10ピン目になります。
この値を001から101に変更して、出力値として1を送るとLEDは...
#pre{{
jtag> instruction EXTEST
jtag> shift ir
jtag> dr 001001001001001001001001001101
001001001001001001001110001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001101001001001001001001
001001001001001001001001001001
001001001001001001001001001101
001001001001001001001110001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001001001001001001001001
001001001101001001001001001001
001001001001001001001001001001
jtag> shift dr
jtag>
}}
(ビット列は、10ピン単位に改行してあります)
すると予想通り、LED7が消灯します。
(中央の緑のLEDが3個だけ点灯しており、一番下のLEDが
消灯しています)
&ref(extest.jpg);
** CPLDへの書き込み [#y7e9a0cc]
UrJtagは、CPLDへの書き込み用にSVFフォーマットをサポートし...
*** LatticeのツールでSVFファイルを作成 [#p52686f2]
それでは、Latticeのツールが生成したプログラムからSVFファ...
には、どのようにすればよいかご説明します。
このツールは、GoogleでLattice jed svf convertで検索し、
http://www.it.lth.se/digp/PDF_files/lattice/lattice_dcd.pdf
の中の、Fig. 2-1の図でSVFファイルへの変換をサポートしてい...
手順は以下の通りです。
- ispVMを起動する
- ispToolメニューからUniversal Fiel Writerを選択する
- 出力ファイルフォーマットプルダウンメニューでSerial Vect...
- Fiel->Open Input Data File...メニューを選択し、変換する...
- Output Data Fileをダブルクリックし、出力ファイルを指定...
- Project->Generateメニューを選択し、変換する
&ref(ispVM.jpg);
*** Lattice XP2のBDSL情報 [#n584ea0b]
MAX IIと同様にLattice XP2のBSDLを取得し、JTAGファイルに変...
以下のファイルを参照してください。
- BDSLファイル、&ref(lfxp2_5e_tqfp144.bsm.txt);
- JTAGファイル、&ref(lfxp2-5e-tqfp144.jtag.txt);
*** プログラムの書き込み [#id3b45cc]
最後に、SVFファイルをLattice XP2に書き込みます。
#pre{{
jtag> cable UsbBlaster
Connected to libftdi driver.
jtag> detect
IR length: 8
Chain length: 1
Device Id: 00000001001010011001000001000011 (0x0000000001...
Manufacturer: Lattice Semiconductors
Part(0): lfxp2-5e-tqfp144
Stepping: 0
Filename: /opt/local/share/urjtag/lattice/lfxp2-5e-...
jtag> svf hdl_sample.svf
時間がかかりますが、そのまま待ってください
jtag> instruction BYPASS
jtag> shift ir
jtag> quit
}}
これで、Lattice XP2をリセットすると、DL3の緑のLEDが点滅し...
** コメント [#jf947abc]
この記事は、
#vote(おもしろかった[31],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- JTAGの使い方は、INTERFACE 2005年2月号のJTAG徹底活用研究...
- 「FT2232を使ったUSBケーブルはそのままでは正常に動作しま...
- もなかさま、コメントありがとうございます。どこのケーブ...
- もなかさま、ありがとうございます。うまく接続できました...
#comment_kcaptcha
ページ名:
SmartDoc