デバッグ

ホストによる QSPI フラッシュのプログラム ホストによる QSPI フラッシュのプログラム (XAPP1372)

Document ID
XAPP1372
Release Date
2022-06-29
Revision
1.0 日本語

ハードウェア環境のセットアップ

  1. PC によっては、BIOS 設定画面で Above 4G Memory AssignmentResizable BAR Support の設定が必要です。

  2. VCK190 プロジェクトをビルドします (VCK190 プロジェクトのビルド方法は、リファレンス デザインの readme.txt ファイルを参照してください)。Vivado ハードウェア マネージャーを使用して PDI ファイルをダウンロードし、PCIe リンク ステータスを確認します。

  3. ホスト側で、lspci コマンドを使用して BAR アドレスを取得します。次に、devmem コマンドを使用して BAR 空間に対する読み出しと書き込みが可能なことを確認します。

ソフトウェア デバッグ

ホスト アプリケーションをコンパイルするには、いずれかのディレクトリを選択し、アプリケーション ソース コードをこのディレクトリに対して実行します。次に、x86 ホストで makefile を実行してアプリケーションをコンパイルします。

> make

すると、次の表に示す 3 つのオブジェクトが生成されます。

表 1. makefile を実行して生成されるオブジェクト
オブジェクト 説明
main 128Mb フラッシュに対してプログラムとベリファイを実行します。
program_only 128Mb フラッシュに対してプログラムを実行します。
debug 128Mb フラッシュに対してプログラムを実行します。それと同時に、デバッグ スイッチを開いてすべてのデバッグ ログを表示します。

次に、ホスト上で実行ファイルを実行します。次の図に、64MB フラッシュに対するプログラムとベリファイのログを示します。プログラムするフラッシュのサイズを変更するには、ファイル xqspipsu.h でマクロ BOARD_BRAM_SIZE を変更します。

図 1. 64MB フラッシュのプログラムとベリファイ

次の図に、64MB フラッシュに対するプログラムのログを示します。

図 2. 64MB フラッシュのプログラム

性能

128MB のイメージをプログラムするのにかかる時間は、192 秒 (3 分 12 秒) です。次の表に示す 2 組の性能結果を比較すると、時間とプログラム サイズは比例の関係にあることがわかります。たとえば、 48s x 4 = 192s

したがって、128MB フラッシュのプログラムには 32MB フラッシュのプログラムの 4 倍の時間がかかります。

プログラムにベリファイを追加すると、さらに時間がかかります。当然、ベリファイにかかる時間もプログラム サイズに比例して長くなります。

表 2. ホスト プログラミングの性能
動作 サイズ (MB) 時間 (秒) 説明
プログラムのみ 32 48 フラッシュ ID の読み出し、フラッシュの消去、およびフラッシュの書き込み
プログラムのみ 64 96
プログラムのみ 128 192
プログラム + ベリファイ 16 107

フラッシュ ID の読み出し、フラッシュの消去、およびフラッシュの書き込み

その後、フラッシュの内容の読み出しとコンペア

プログラム + ベリファイ 64 216
プログラム + ベリファイ 128 429

性能の最適化

QSPI コントローラーにアクセスするには、ソフトウェアから多数のレジスタ読み出しおよび書き込みを発行します。次の図に示すように、xqspipsu_hw.c にはレジスタ読み出しとレジスタ書き込みの 2 つの機能があります。

図 3. QSPI レジスタの読み出し
図 4. QSPI レジスタの書き込み

これら 2 つの関数は標準の devmem() 関数を元に作成したもので、これを手直しすることによって性能を最適化できます。