1 つのプ ロ グ ラ ムのデバ ッ グ
1 つのプ ロ グ ラ ム をデバ ッ グする には、 次の手順に従い ます。
1. プ ロ セ ッ サを接続 し ます。
2. ELFフ ァ イ ルを ダ ウ ン ロ ー ド し ます。
3. 必要なブ レー ク ポ イ ン ト お よ びウ ォ ッ チポ イ ン ト を設定 し ます。
4. con コ マ ン ド を使用 し てプ ロ セ ッ サの実行を開始す る か、stp コ マン ド を使用 し てプ ロ グ ラ ムの
命令を順に実行 し ます。
5. state コ マ ン ド を使用 し てプ ロ セ ッ サの ス テー タ ス を確認 し ます。
6. 必要に応 じ て stop コ マ ン ド を使用 し 、 プ ロ セ ッ サ を停止 し ます。
7. プ ロ セ ッ サが停止 し た ら 、 レ ジ ス タ お よ び メ モ リ に対 し て読み出 し お よ び書 き 込みを実行 し ます。
8. プ ロ グ ラ ム を再実行す る には、run コ マン ド を使用 し ます。
XMD ユーザー コ マ ン ド R
複数プ ロ セ ッ サ環境でのプ ロ グ ラ ムのデバ ッ グ
複数プ ロ セ ッ サ環境でプ ロ グ ラ ム をデバ ッ グす る には、 次の手順に従い ます。
1. プ ロ セ ッ サ 1 に接続 し ます。
2. debugconfig コ マン ド を使用 し て リ セ ッ ト 時の動作を設定 し ます。 リ セ ッ ト 時の動作は、 シ ス
テ ム アーキテ ク チ ャ に よ り 異な り ます。「デバ ッ グセ ッ シ ョ ンの設定」 を参照 し て く だ さ い。
3. ELFフ ァ イ ルを ダ ウ ン ロ ー ド し ます。
4. 必要なブ レー ク ポ イ ン ト お よ びウ ォ ッ チポ イ ン ト を設定 し ます。
5. con コ マ ン ド を使用 し てプ ロ セ ッ サの実行を開始す る か、stp コ マン ド を使用 し てプ ロ グ ラ ムの
命令を順に実行 し ます。
6. プ ロ セ ッ サ 2 に接続 し ます。
7. debugconfig コ マン ド を使用 し て リ セ ッ ト 時の動作を設定 し ます。 リ セ ッ ト 時の動作は、 シ ス
テ ム アーキテ ク チ ャ に よ り 異な り ます。「デバ ッ グセ ッ シ ョ ンの設定」 を参照 し て く だ さ い。
8. ELFフ ァ イ ルを ダ ウ ン ロ ー ド し ます。
9. 必要なブ レー ク ポ イ ン ト お よ びウ ォ ッ チポ イ ン ト を設定 し ます。
10. con コ マ ン ド を使用 し てプ ロ セ ッ サの実行を開始す る か、stp コ マン ド を使用 し てプ ロ グ ラ ムの 命令を順に実行 し ます。
11. targets コ マ ン ド を使用 し てシ ス テ ムの タ ーゲ ッ ト を リ ス ト し ます。 各 タ ーゲ ッ ト には タ ーゲ ッ ト ID が付け ら れてい ます。 ア ク テ ィ ブな タ ーゲ ッ ト は、 ア ス タ リ ス ク (*) で示 さ れます。
12. targets <target id> コ マン ド を使用 し て タ ーゲ ッ ト を切 り 替え ます。
13. state コ マ ン ド を使用 し てプ ロ セ ッ サの ス テー タ ス を確認 し ます。
14. stop コ マ ン ド を使用 し て、 プ ロ セ ッ サを停止 し ます。
15.プ ロ セ ッ サが停止 し た ら 、 レ ジ ス タ お よ び メ モ リ に対 し て読み出 し お よ び書 き 込みを実行 し ます。
16.プ ロ グ ラ ム を再実行す る には、run コ マン ド を使用 し ます。
デバ ッ グ セ ッ シ ョ ン でのプ ロ グ ラ ムの実行
1. プ ロ セ ッ サに接続 し ます。
2. ELFフ ァ イ ルを ダ ウ ン ロ ー ド し ます。
3. <exit> 関数でブ レー ク ポ イ ン ト を設定 し ます。
4. con コ マ ン ド を使用 し てプ ロ セ ッ サの実行を開始 し ます。
5. state コ マ ン ド を使用 し てプ ロ セ ッ サの ス テー タ ス を確認 し ます。
6. stop コ マ ン ド を使用 し て、 プ ロ セ ッ サを停止 し ます。
7. プ ロ セ ッ サが停止 し た ら 、 レ ジ ス タ お よ び メ モ リ に対 し て読み出 し お よ び書 き 込みを実行 し ます。
8. プ ロ グ ラ ム を再実行す る には、run コ マン ド を使用 し ます。
自動例外 ト ラ ッ プ でのセー フ モー ド の使用
XMD では、 エ ラ ーが発生 し た場合にプ ロ グ ラ ムの例外を ト ラ ッ プで き ます。 エ ラ ーには、 不正な 命令の実行やバ スエ ラ ーな ど があ り ます。 次の手順に従い ます。
1. プ ロ グ ラ ム を ダ ウ ン ロ ー ド し ます。
第 11 章 : Xilinx Microprocessor Debugger (XMD)
R
2. safemode on コ マン ド を実行 し ます。
3. con コ マ ン ド を使用 し てプ ロ グ ラ ム を開始 し ます。
例外が発生す る と 、 プ ロ グ ラ ム が停止 し ま す。 こ の機能は、GUI デバ ッ ガ (Insight GDB ま たは
SDK) で作業する 際に有益です。
• SDK を使用す る 場合、 プ ロ グ ラ ム を実行す る 前に [Initialization] タ ブで [Enable Safemode]
チ ェ ッ ク ボ ッ ク ス を オンに し て く だ さ い。
• GDB を使用す る 場合、 プ ロ グ ラ ム を実行す る 前に、 プ ロ グ ラ ム を ダ ウ ン ロ ー ド し て XMD コ ン ソ ールで safemode on コ マ ン ド を実行 し て く だ さ い。
例外が発生す る と プ ロ グ ラ ムが停止 し 、GUI に例外を発生 さ せた コ ー ド 行が表示 さ れます。
プ ロ セ ッ サのデ フ ォル ト 例外設定
次の表に、 例外 ト ラ ッ プのデフ ォ ル ト 設定を プ ロ セ ッ サの タ イ プ別に示 し ます。
表 11-5 : PowerPC プ ロ セ ッ サの例外設定
例外 ID ト ラ ッ プ 例外名
0 な し 外部 ク リ テ ィ カル割 り 込み例外
1 あ り 外部バ スエ ラ ー例外
2 あ り デー タ格納例外
3 あ り 命令格納例外
4 な し 外部非 ク リ テ ィ カル割 り 込み例外
5 な し 不整列デー タ ア ク セ ス例外
6 あ り 不正 op コ ー ド 例外
7 あ り FPU 使用不可例外
8 な し シ ス テ ム読み出 し 命令
9 あ り APU 使用不可例外
10 な し プ ロ グ ラ マブルイ ン タ ーバル タ イ マの タ イ ム ア ウ ト 例外 11 な し 固定 イ ン ターバル タ イ マの タ イ ム ア ウ ト 例外
12 な し ウ ォ ッ チ ド ッ グ タ イ マの タ イ ム ア ウ ト 例外
13 な し デー タ TLB ミ ス例外
14 な し 命令 TLB ミ ス例外
15 な し デバ ッ グ イ ベン ト 例外
16 あ り アサー ト エ ラ ー
17 あ り プ ロ グ ラ ム終了
XMD ユーザー コ マ ン ド R
例外設定の上書き
デフ ォ ル ト の例外設定を上書 き す る には、 次の 2 つの方法があ り ます。
1. 次の コ マ ン ド を使用 し ます。
xmdconfig [-mb_trap_mask|-ppc_trap_mask] [MASK]
こ の コ マ ン ド では、 現在の XMD セ ッ シ ョ ンのすべての タ ーゲ ッ ト にマ ス ク が設定 さ れます。
すべての XMD セ ッ シ ョ ン に独自のデフ ォ ル ト 設定 を定義す る には、 その コ マ ン ド を ホーム
デ ィ レ ク ト リ にあ る .xmdrc フ ァ イ ルに記述 し ます。
2. 次の コ マ ン ド を使用 し ます。
safemode -config mode [MASK]
こ の コ マ ン ド では、現在の タ ーゲ ッ ト にのみマ ス ク が設定 さ れます。 プ ロ グ ラ ムのデバ ッ グ中、
ト ラ ッ プ設定を変更す る のに便利な方法です。
メ モ : タ ーゲ ッ ト への接続を切断する と 、 現在の タ ーゲ ッ ト は破棄 さ れます。
セー フ モー ド 設定の表示
現在のセーフ モー ド 設定を表示す る には、 次の コ マン ド を入力 し ます。
safemode -info
セーフ モー ド では、XMD に よ り ト ラ ッ プす る 例外ハン ド ラ にブ レー ク ポ イ ン ト が設定 さ れます。
• MicroBlaze では、 すべての例外に よ り PC が 0x20 に移動 し ます。
• PowerPC プ ロ セ ッ サでは、ELF フ ァ イ ルか ら 例外ハン ド ラ の場所が検出 さ れます。
表 11-6 : MicroBlaze の例外設定
例外 ID ト ラ ッ プ 例外名
0 あ り 高速シ ンプ レ ッ ク ス リ ン ク 例外
1 な し 不整列デー タア ク セ ス例外
2 あ り 不正 op コ ー ド 例外
3 あ り 命令バ スエ ラ ー例外
4 あ り デー タバ スエ ラ ー例外
5 あ り 0 での除算例外
6 あ り 浮動小数点例外
7 あ り 特権命令例外
8 あ り デー タ 格納例外
9 あ り 命令格納例外
10 あ り デー タ TLB ミ ス 例外
11 あ り 命令 TLB ミ ス 例外
12 あ り アサー ト エ ラ ー
13 あ り プ ロ グ ラ ム終了
第 11 章 : Xilinx Microprocessor Debugger (XMD)
R
こ の検出は、 ほ と ん ど の ス タ ン ド ア ロ ン ま たは Xilkernal プ ロ ジ ェ ク ト で機能 し ます。 別の ソ フ ト ウ ェ ア プ ラ ッ ト フ ォーム を使用 し てい る 場合、 検出が う ま く 機能 し ない可能性があ り ます。 その場 合は、 次の コ マ ン ド を使用 し て例外ハン ド ラ のア ド レ ス を設定 し て く だ さ い。
safemode -config [exception_id] [exception_handler_addr]
connect コ マ ン ド のオプ シ ョ ン
XMD では、異な る タ ーゲ ッ ト (プ ロ セ ッ サ ま たはペ リ フ ェ ラ ル) でプ ロ グ ラ ム をデバ ッ グで き ます。
XMD と タ ーゲ ッ ト の通信を確立する には、XMD を タ ーゲ ッ ト に接続す る 必要があ り ます。接続が 確立 さ れ る と 、 各 タ ーゲ ッ ト に固有の タ ーゲ ッ ト ID が割 り 当て ら れ ます。プ ロ セ ッ サに接続す る
と 、GDB サーバーが起動 し 、GDB ま たは SDK と の通信が可能にな り ます。
構文
connect {mb | ppc | mdm} <Connection_Type> [Options]
次のセ ク シ ョ ンで、 異な る タ ーゲ ッ ト の接続オプシ ョ ンについて説明 し ます。
PowerPC プ ロ セ ッ サ
ザ イ リ ン ク ス Virtex®デバ イ ス には、PowerPC (405 お よ び 440) プ ロ セ ッ サ コ アが 1 つ ま たは 2 つ含ま れてい ます。 XMD は、 ボー ド 上の JTAG 接続を介 し て こ れ ら の PowerPC プ ロ セ ッ サに接 続 し ます。ま た、TCP ソ ケ ッ ト イ ン タ ーフ ェ イ ス を介 し て IBM PowerPC プ ロ セ ッ サ命令セ ッ ト シ ミ ュ レー タ (ISS) に も 接続 さ れ ます。
PowerPC プ ロ セ ッ サに接続す る には、connect ppc コ マ ン ド を使用 し て、 リ モー ト の GDB サーバー を起動 し ま す。 XMD が PowerPC プ ロ セ ッ サに接続 さ れた ら 、XMD を介 し て powerpc-eabi-gdb ま たは SDK を PowerPC に接続 し 、 デバ ッ グ を実行 し ます。
メ モ : XMD では、 仮想ア ド レ ス指定はサポー ト さ れません。 デバ ッ グは、 リ アルモー ド で実行 さ れてい る プ ロ グ ラ ムでのみ可能です。
PowerPC プ ロ セ ッ サ ハー ド ウ ェ アの接続
XMD は PowerPC プ ロ セ ッ サハー ド ウ ェ アに接続す る 際、JTAG チ ェーン と PowerPC プ ロ セ ッ サ タ イ プお よ びシ ス テ ム内のプ ロ セ ッ サ を自動的に検出 し 、 最初のプ ロ セ ッ サに接続 し ます。こ のデ フ ォ ル ト 処理は、 次のオプシ ョ ン を使用 し て変更で き ます。
表 11-7 : connect コ マ ン ド のオプ シ ョ ン
オプ シ ョ ン 説明
ppc PowerPC プ ロ セ ッ サに接続 し ます。
mb MicroBlaze プ ロ セ ッ サに接続 し ます。
mdm MDM ペ リ フ ェ ラ ルに接続 し ます。
<Connection_Type> 接続方法を指定 し ます。 タ ーゲ ッ ト に よ っ て異な り ます。
[Options] 接続オプシ ョ ン。
connect コ マ ン ド のオプ シ ョ ン R
構文
connect ppc hw [-cable <JTAG Cable options>] {[-configdevice <JTAG chain options>]} [-debugdevice <PowerPC options>]
-cable のオプ シ ョ ン (JTAG ケーブル オプ シ ョ ン)
次のオプシ ョ ン を使用 し て、 タ ーゲ ッ ト と の接続に使用す る JTAG ケーブルを指定 し ます。
-configdevice のオプ シ ョ ン (JTAG チ ェ ーン オプ シ ョ ン)
次のオプシ ョ ン を使用 し て、JTAG チ ェ ーンに含ま れ る ザ イ リ ン ク ス以外のデバ イ ス に関す る 情報 を 指定 し ま す。 169 ページ の 「特殊な JTAG チ ェ ーン設定でのザ イ リ ン ク ス 以外のデバ イ ス のデ バ ッ グ セ ッ シ ョ ン例」 を参照 し て く だ さ い。
表 11-8 : -cable のオプ シ ョ ン (JTAG ケーブルオプ シ ョ ン)
オプ シ ョ ン 説明
fname <filename.svf> SVF (Serial Vector Format ) フ ァ イ ルの名前を指定 し ます。
frequency <cable speed in Hz>
ケーブルの ク ロ ッ ク ス ピー ド を Hz で指定 し ます。
有効なケーブル ス ピー ド は次の と お り です。
• パ ラ レ ルケーブル 4 : 5000000 (デフ ォ ル ト)、2500000、 200000
• プ ラ ッ ト フ ォーム USB : 24000000、12000000、6000000 (デフ ォル ト)、3000000、1500000、750000
port <port name> ポー ト を指定 し ます。 有効なポー ト 名は lpt1、lpt2、...usb21、 usb22... です。
type <cable_type> ケーブルの タ イ プを指定 し ます。 有効な ケーブル タ イ プは次の と お り です。
• xilinx_parallel3
• xilinx_parallel4
• xilinx_platformusb
• xilinx_svffile
xilinx_svffile に指定す る と 、fname オプシ ョ ンで指定 し た フ ァ イ
ルに JTAG コ マン ド が記述 さ れます。
表 11-9 : -configdevice のオプ シ ョ ン (JTAG チ ェ ーン オプ シ ョ ン)
オプ シ ョ ン 説明
devicenr <device position> JTAG チ ェーン内のデバ イ ス の位置を指定 し ます。デバ イ ス位置の番号は、1 か ら 開始 し ます。
irlength <length of the JTAG Instruction Register>
デバ イ ス の IR レ ジ ス タ の幅を指定 し ます。こ の情報 は、 デバ イ ス の BSDL フ ァ イ ルに記述 さ れてい ます。
idcode <device idcode> デバ イ ス の JTAG ID コ ー ド を指定 し ます。
jtagport <cpu> PowerPC プ ロ セ ッ サの JTAG ピ ン を FPGA ユーザー IO ピ ンに直接接続す る かを指定 し ます。
partname <device name> デバ イ ス名を指定 し ます。