Nios® II デバッグ手法シリーズ
このシリーズでは Nios® II プロセッサーのデバッグに役に立つ便利機能について紹介します。
Software Breakpoint と Hardware Breakpoint
Nios® II Software Build Tools (Nios SBT) for Eclipse を使ってデバッグを行う場合、ブレークポイントを設定する方法として2つの方法がありますが、必要に応じて使い分ける必要があります。この記事では、それらの使い分けの勘所について紹介します。
Software Breakpoint
通常、ブレークポイントを設定するとこちらが使われます。
他のプロセッサーと同様に、プログラムの実行コードの中に break 命令を埋め込んでプログラムカウンター (PC) を停止させます。
[ Nios® II Instruction Set ]
break 命令は R-Type の命令群に属し、この命令を実行するとデバッガーは PC を停止し Break ハンドラーに処理を遷移させます。
[ Break Instruction Instruction Set Reference ]
break から Run させる場合や、シングルステップで実行させる場合には、元の命令をプログラムコードに書き戻し実行させ、命令の実行が終わった後、再び break 命令に書き戻されます。
シングルステップでの動作も同様で、次の命令を break 命令に置き換え、元の命令を書き戻した後にRun、を繰り返します。
そのため、ブレークポイントの数に制限はありませんが、デバッガーがプラグラムコードを書き換えられる必要がありますので、実行セクション (.text) が外部 Flash メモリーや インテル® MAX® 10 FPGA の UFM (Utilizing the User Flash Memory) に割り当てられている場合、正しく動作しないため注意が必要です。
Hardware Breakpoint
ブレークポイントのプロパティーを変更する事で設定できます。
このブレークポイントは、デバッガーのハードウェア機構で実装されますので、Software Breakpoint のように実行メモリの書き換えは行われませんが、デバッガーの設定が必要となります。
[ Nios® II Processor Parameters ]
プラットフォーム・デザイナーの Nios® II Parameter を開いて、JTAG Debug タブの Hardware Breakpoints: の値を 0 以外の値にする必要があります。
注意事項
- Hardware Breakpoint を有効にしている場合、その設定値以上のブレークポイントを設定するとデバッガーの動作が不安定になりますのでご注意ください。
- 実行セクション (.text) が外部 Flash メモリーや MAX®10 の UFM (Utilizing the User Flash Memory) に割り当てられている製品において、完成後にソフトウェアのデバッグが必要になった場合、Software Breakpoint は使用できなくなりますので、あらかじめ Hardware Breakpoint が使えるように設定しておく必要があります。なお、上記実装ではデバッガーからのプログラムの書込みはできませんので、Debug Configuration の Download ELF to selected target system のチェックは外してデバッグしてください。
実行セクション(.text)が Flash メモリーに割り当てられている際の、Debug 手法は、下記コンテンツを参照ください。
Nios® II SBT for Eclipse における Run/Debug Configuration 設定の使い方
おすすめページ
弊社では Nios® II に関する各種情報とまとめた「Nios® II まとめページ」をご用意しております。本記事以外にも有用な情報が満載ですのでこちらも併せてご確認ください。