AR# 59518

Zynq-7000 SoC: 大型の QSPI メモリを使用する場合の QSPI ブート時間に関する注意事項

説明

Zedboard などで、大型 (>16MB) の QSPI を用いて Zynq デバイスをブートする際に、高速 QSPI クロック (40MHz 以上) がプログラムされているとブート時間が改善されません。  

FSBL のデフォルトの QSPI クロックを 25MHz (8分周) から 100MHz (2 分周) に変更すると、(ビットストリームとアプリケーションをロードするための) ブート時間がなくなることが想定されます。

しかし、ブート時間は変わりません。 

この理由を教えてください。 

ソリューション

QSPI ドライバーの構築方法が原因で、この動作が見られます。  

QSPI パーツが 16MB よりも大きい場合、ドライバーはリニア モードから I/O アクセス モードに切り替わります。  

I/O の場合、別の方法でメモリがコピーされるため、リニア モードでの直接コピーほど高速ではありません。

この問題は次の方法で回避できます。

すべてのブート コードが下位の 16MB に収まる場合、(FSBL アプリケーション ソース ディレクトリにある) qspi.c で、qspi.c の FlashReadID 関数に次の行を追加できます。「Deduce flash size」コード ブロックの最後、かつ「return XST_SUCCESS」の前に次の行を追加します。

QspiFlashSize = FLASH_SIZE_128M;

注記: これは、ブート イメージが 16MB よりも大きい場合、または 16MB バウンダリを超える場合は、機能しません。

ブート プロセスが完了すると、システム コードによって QSPI へのアクセスが制御され、メモリ全体へのアクセスが回復します。

AR# 59518
日付 05/28/2018
ステータス アクティブ
種類 一般
デバイス