Agilex™ 7コンフィグレーション・ユーザーガイド

ID 683673
日付 4/01/2024
Public
ドキュメント目次

5.6.5. アプリケーション・イメージの追加

次の手順を実行して、フラッシュメモリーにアプリケーション・イメージを追加します。

  1. Tclコンソール ウィンドウで QSPI_OPEN および QSPI_SET_CS コマンドを実行して、AS x4インターフェイスとフラッシュメモリーへの排他的アクセスを設定します。これで、QSPI_CLOSE コマンドを実行してアクセスを放棄するまで、AS x4インターフェイスとフラッシュに排他的にアクセスできるようになります。新しいアプリケーション・イメージをフラッシュメモリーに書き込むには、QSPI_WRITE コマンドを使用します。
  2. また、rsu1.tcl スクリプトには、新しいアプリケーション・イメージをフラッシュメモリーにプログラミングする program_flash 関数が含まれています。次のコマンドは、このタスクを実行します。
    program_flash new_application_image.rpd 0x03FF0000 1024

    program_flash 関数は3つの引数を取ります。

    1. フラッシュメモリーに書き込む .rpd ファイル
    2. 開始アドレス
    3. QSPI_WRITE コマンドで書き込むワード数。QSPI_WRITE は、各書き込み命令で最大1024ワードをサポートします。

    図 86. 新しいアプリケーション・イメージのプログラミング
    $ source rsu1.tcl /channels/local/top/master_1 $ program_flash new_application_image.rpd 0x03ff0000 1024 total number of words is 584704 total number of page is 571 total number of sector is 36 reading rpd is completed start writing flash writing flash is completed
  3. QSPI_WRITE コマンドを使用して、新しいアプリケーション・イメージの開始アドレスを、コンフィグレーション・ファームウェア・ポインター・ブロック (CPB) 内の新しいイメージ・ポインター・エントリーに書き込みます。書き込みを開始する前に、新しいイメージ・ポインター・エントリーの値が 0xFFFFFFFF であることを確認してください。
    注: HPSを使用してRSUを管理する場合は、コンフィグレーション・ポインター・ブロック (CPB0およびCPB1) とサブパーティション・テーブル (SPT) の両方のコピーを更新する必要があります。HPS以外の場合、ポインターブロックの両方のコピーの更新は必須ですが、サブパーティション・テーブルの更新は必要ありません。SPTおよびCPBにおけるサブパーティション・テーブルのレイアウトおよびポインタ・ー・ブロックのレイアウトの詳細については、「サブパーティション・テーブルのレイアウト 」および「ポインタ・ー・ブロックのレイアウト 」を参照してください。
上で説明した例に基づくと、CPB0およびCPB1のアドレスオフセット 0x20 は、アプリケーション・イメージの開始アドレスを指している必要があります。新しいアプリケーション・イメージの開始アドレスを次のイメージ・ポインター・エントリーに書き込む前に、次の新しいイメージ・ポインター・エントリーの値は 0xFFFFFFFF である必要があります。
表 55.  コンフィグレーション・ファームウェア・ポインター・ブロックのコンテンツ
CPB開始アドレス + 0x20 コンテンツ
CPB0 + 0x20 = 0x004A0020 現行のアプリケーション・イメージ・ポインター・エントリー (最優先) 0x004B0000
CPB0 + 0x28 = 0x004A0028 次のイメージ・ポインター・エントリー 0xFFFFFFFF
CPB1 + 0x20 = 0x004A8020 現行のアプリケーション・イメージ・ポインター・エントリー (最優先) 0x004B0000
CPB1 + 0x28 = 0x002EC028 次のイメージ・ポインター・エントリー 0xFFFFFFFF
QSPI_read 関数を使用して、新しいイメージ・ポインター・エントリーの値が 0xFFFFFFFF であることを確認できます。QSPI_read 関数は2つの引数を受け取ります。
  1. 開始アドレス
  2. 読み出すワード数

図 87. 新しいイメージ・ポインター・エントリー値が 0xFFFFFFFF であることの確認
$ qspi_read 0x004a0020 1 0x004b0000 $ qspi_read 0x004a0028 1 0xffffffff % qspi_read 0x004a8020 1 0x004b0000 % qspi_read 0x004a8028 1 0xffffffff
これで、QSPI_write_one_word 関数を使用して、新しいアプリケーション・イメージ・アドレスを次のイメージ・エントリーに書き込むことができます。QSPI_write_one_word 関数は2つの引数を受け取ります。
  1. アドレス
  2. ワードの値
図 88. 新しいイメージ・ポインター・エントリーへのアドレス・ポインターの書き込み
% qspi_write_one_word 0x004a0028 0x03FF0000 % qspi_write_one_word 0x004a8028 0x03FF0000

これで、QSPI_read 関数を使用して次のイメージ・ポインター・エントリーを実行して、目的の新しいアプリケーション・イメージの開始アドレスが書き込まれていることを確認することができます。

図 89. 新しいイメージポインターへの更新の確認
% qspi_read 0x004a0028 1 0x03FF0000 % qspi_read 0x004a8028 1 0x03FF0000

ホストソフトウェアは、nCONFIG ピンをアサートすることで、新しいアプリケーション・イメージでAgilex 7 FPGAをリコンフィグレーションできるようになります。または、PCBの電源を入れ直します。リコンフィグレーション後、現在のイメージアドレスを確認してください。予期されるアドレスは 0x03ff0000 です。新しいイメージを追加すると、アプリケーション・イメージ・リストには、新しく追加されたアプリケーション・イメージとセカンダリー・イメージとなった古いアプリケーション・イメージが含まれます。新しく追加されたアプリケーション・イメージが最も高い優先度を持ちます。

注: リモート・システム・アップデート・ホストがアプリケーション・イメージをロードすると、決定ファームウェアはイメージ・ポインター・エントリーを逆の順序で走査します。デバイスを再起動すると、新しいイメージが最も優先されます。