NIOSでprintfを使用する場合
NIOSを使った時のデバッグ出力についてです。
JTAG_UARTを用いてprintfでデバッグ出力している場合は気を付ける場合があります。
USB Blasterと繋げている場合は出力表示されますが、
未接続の場合は、printfで止まる可能性があるので、気を付けてください。
特に、FPGA内蔵RAMにプログラムを保存し、USB Blasterと接続せず自走させて動かす時、このことを忘れていて動かない、ってこともあります。
記述例
実機評価(確認)中、SignalTapとprintfの表示とでデバッグしていくと思います。
その時、printfをバンバン入れていくと思いますが、製品として出す前にprintfを1つ1つ削除するのは、面倒だと思います。
そこで、下記のようにprintfにラッパー(display)を被せるようにすれば、一発でprintfを無効にできます。
使い方
上記述例を基準に説明します。
デバッグ表示させたいソースに「DebugDisplay.h」をインクルードし、printfを使用せず、ラッパーのdisplay()を使用して、printfの引数のように記述します。
(13,25,28行目の記述例)
デバッグ時はこの記述例の「DebugDisplay.h」で良いです。
デバッグが完了し、USB Blasterを接続せずに自走させて動作確認する場合は、「DebugDisplay.h」の4行目を
#define DEBUG_MODE (0)
に変更して、再コンパイルして使用します。
このDEBUG_MODEが0になると、8行目のdisplayが有効になり、printf()が使用されなくなります。
最後に
実機動作確認で、気付きにくい所なので、注意してください。
また、printfが消えることにより、処理時間が変わります。
アクセス間隔が短くなり、今までうまくいっていた所がうまくいかなくなったりするので、その場合は、関数sleep()などでアクセス間隔を長くすると動く場合があります。