ホスト ソフトウェア デザイン

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

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

アドレス マップ

ホストと VCK190 の環境をセットアップしたら、ホスト コンピューターで lspci コマンドを実行し、すべての PCIe BAR 空間の一覧を表示します。次の図に示すように、ホストがアクセスできる PCIe BAR は 3 つあります。

図 1. PCIe BAR

BAR3 空間のサイズは 256MB で、アドレスは 0x381F_0000_0000 ~ 0x381F_0FFF_FFFF です。BAR3 空間は Versal デバイスのアドレス 0xF000_0000 ~ 0FFFF_FFFF にマップされ、この中には PMC スレーブ空間とブロック RAM 空間が含まれます。QSPI コントローラーは PMC にあります。

このアプリケーション ノートでは、ホストは BAR3 空間にのみアクセスします。1 つ目の空間は QSPI コントローラー アドレス セグメントで、ベース アドレスは 0x381f_0103_0000、サイズは 64KB です。2 つ目の空間はブロック RAM セグメントで、ベース アドレスは 0x381f_0800_0000、サイズは 32KB です。

表 1. PCIe BAR3 のアドレス マップ
PCIe BAR3 空間 デバイス名 Versal デバイス アドレス ベース
0x381F_0103_0000 ~ 0x381F_0103_FFFF QSPI コントローラー 0xF103_0000 ~ 0xF103_FFFF (64KB)
0x381f_0800_0000 ~ 0x381F_0800_7FFF

ブロック RAM Port0

読み出しの場合
0xF800_0000 ~ 0xF800_7FFF (32KB)

このブロック RAM には、2 つのポートに対してそれぞれ独立したアドレスがあります。前述のように、1 つのアドレスはホストからのリードバック用で、PCIe BAR3 にマップされます。したがって、ソフトウェア アプリケーションでは、PCIE_BAR_BRAM マクロを xqspipsu.h で定義しています。もう 1 つのアドレスは QSPI コントローラーによって書き込まれるため、ソフトウェアから QSPI コントローラーに対し、BOARD_BRAM_BASE アドレスが 0x201_8000_0000 であることを通知します。このアクセスは、Versal デバイス内部で実行されます。

表 2. デュアル ポート ブロック RAM のアドレス マップ
PCIe BAR3 デバイス名 サイズ (B) Versal デバイス アドレス ベース ホスト アクセス
0x381f_0800_0000

ブロック RAM Port0

読み出しの場合
32K 0xF800_000 ホストから BAR 空間へのアクセス
NOP

ブロック RAM Port1

書き込みの場合
32K 0x201_8000_0000 ホストがこの 64 ビット アドレスを QSPI コントローラーの DMA アドレス レジスタに設定
図 2. ホスト ソフトウェアのアドレス マップ

ホスト アプリケーションのデータフロー

次の図に、プログラミングの全体的なガイドラインを示します。全体的なプログラミング フローは、QSPI のアボートと初期化、フラッシュ ID の読み出し、フラッシュの消去、フラッシュの書き込み、フラッシュのベリファイの各サブフローで構成されます。フラッシュのベリファイ サブフローでは、フラッシュからブロック RAM への DMA 読み出し、ホストによるブロック RAM からホスト ローカル RAM への読み出し、およびホスト上でのコンペアが実行されます。

図 3. ホスト アプリケーションのデータフロー