インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

B.5.2.2.2. 間接書き込み動作

間接書き込み動作では、SRAMからフラッシュメモリーにデータをプログラミングします。次のレジスターにより、間接書き込み動作を制御します。

  • Indirect Write Transfer (indwr) レジスター
  • Indirect Write Transfer Watermark (indwrwater) レジスター
  • Indirect Write Transfer Start Address (indwrstaddr) レジスター
  • Indirect Write Transfer Number Bytes (indwrcnt) レジスター
  • indaddrtrigレジスター

これらのレジスターは、間接書き込み操作を発行する前にコンフィグレーションする必要があります。開始アドレスは、indwrstaddrレジスターで定義する必要があります。また、書き込まれる合計バイト数は、indwrcntレジスターで指定します。indwrレジスターのStart Indirect Write (start) ビットにより、SRAMからフラッシュメモリーへの間接書き込み動作をトリガーします。

SRAMからフラッシュデバイスにデータを書き込む際に、外部マスターは32ビットの書き込みトランザクションをデータスレーブに発行します。書き込みアクセスのアドレスは、間接アドレスの範囲内にする必要があります。間接アドレスは、indaddrtrigレジスターを介してコンフィグレーションすることができます。外部マスターでは、間接転送の最後のワードまで32ビットの書き込みを発行することができます。最後の書き込みでは、外部マスターは32ビット、16ビット、または8ビットの書き込みを発行して転送を完了することができます。最後の転送で書き込むデータが4バイト未満の場合でも、外部マスターでは32ビットの書き込みを発行することができます。この場合、Quad SPIコントローラーは、余分なバイトを破棄します。

SRAMのサイズにより、Quad SPIコントローラーが外部マスターから受け入れることのできるデータの量が制限されます。書き込みアクセスの時点でSRAMがフルではない場合、データは最小のレイテンシーでSRAMにプッシュされます。外部マスターがSRAMで許容できるよりも多くのデータをSRAMにプッシュしようとした場合、Quad SPIコントローラーは待機状態で外部マスターにバックプレッシャーを行います。SRAMからフラッシュメモリーにデータがプッシュされてSRAMリソースが解放されると、SRAMは外部マスターからさらにデータを受信できる状態になります。SRAMがフラッシュページのサイズ以上のバイト数を保持している場合、もしくはSRAMが現在の間接転送の残りのバイトをすべて保持している場合に、Quad SPIコントローラーはフラッシュメモリーへの書き込み動作を開始します。

プロセッサーでsramfillレジスターのSRAMフィルレベルを使用し、SRAMにデータをさらに書き込むタイミングを制御することもできます。

もしくは、indwrwaterレジスターでSRAMのフィル・レベル・ウォーターマークをコンフィグレーションすることも可能です。SRAMのフィルレベルがウォーターマーク・レベルを下回ると、間接転送ウォーターマーク割り込みが生成されます。これは、データの次のページをSRAMに書き込むようにソフトウェアに示すものです。Quad SPIコントローラーは、フラッシュメモリーへのEnd-of-Data (EOD) 以外の書き込みを、SRAMに完全なフラッシュページのデータが含まれている場合にのみ開始するため、ウォーターマーク・レベルを1つのフラッシュページよりも大きい値に設定し、システムのストールを回避する必要があります。このウォーターマークの機能は、すべて1の値をindwrwaterレジスターに書き込むことで無効にすることができます。

書き込みアクセスのアドレスが間接トリガーアドレスの範囲外にある場合は、次のいずれかの動作が発生します。

  • ダイレクト・アクセス・モードが有効になっている場合は、この書き込みではダイレクト・アクセス・モードを使用します。
  • ダイレクト・アクセス・モードが無効になっている場合は、スレーブは要求元のマスターにエラーを返します。

間接動作は、indwrレジスターのCancel Indirect Write (cancel) ビットを1に設定することでキャンセルすることができます。詳細は、「間接書き込み動作」のセクションを参照してください。