インテル® Stratix® 10コンフィグレーション・ユーザーガイド

ID 683762
日付 12/16/2019
Public
ドキュメント目次

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

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

  1. QSPI_OPEN コマンドとQSPI_SET_CSコマンドをTclコンソールウィンドウで実行し、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ワードをサポートします。
    図 82. 新しいアプリケーション・イメージのプログラミング
    $ source rsu1.tcl /channels/local/top/master_1 $ program_flash new_application_image.rpd 0x03ff0000 1024 total number of words is 458752 total number of page is 448 total number of sector is 28 reading rpd is completed start erasing flash erasing flash is completed start writing flash writing flash is completed

  3. QSPI_WRITEコマンドを使用し、新しいアプリケーション・イメージの開始アドレスを、コンフィグレーション・ファームウェア・ポインター・ブロック (CPB) の新しいイメージ・ポインター・エントリーに書き込みます。書き込みを開始する前に、新しいイメージ・ポインター・エントリーの値が0xFFFFFFFFであることを確認してください。
    注: コンフィグレーション・ファームウェア・ポインター・ブロックとサブ・パーティション表を編集する際は、両方のコピー (CBP0とCBP1) を更新する必要があります。コンフィグレーション・ファームウェア・ポインター・ブロックの詳細については、 を参照してください。
上に示されている例に基づき説明すると、CPB0およびCPB1のアドレスオフセット0x20は、アプリケーション・イメージの開始アドレスを指している必要があります。新しいアプリケーション・イメージの開始アドレスを次のイメージ・ポインター・エントリーに書き込む前に、次の新しいイメージ・ポインター・エントリーの値は0xFFFFFFFFでなければなりません。
表 45.  コンフィグレーション・ファームウェア・ポインター・ブロックの内容
CPB開始アドレス + 0x20 内容
CPB0 + 0x20 = 0x002E4020 現在のアプリケーション・イメージ・ポインター・エントリー (優先順位が最も高い) 0x002F4000
CPB0 + 0x28 = 0x002E4028 次のイメージ・ポインター・エントリー 0xFFFFFFFF
CPB1 + 0x20 = 0x002EC020 現在のアプリケーション・イメージ・ポインター・エントリー (優先順位が最も高い) 0x002F4000
CPB1 + 0x28 = 0x002EC028 次のイメージ・ポインター・エントリー 0xFFFFFFFF
表 46.  コンフィグレーション・ファームウェア・ポインター・ブロックの内容
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. 読み出すワード数
図 83. 新しいイメージ・ポインター・エントリーの値が0xFFFFFFFFであることの確認
$ qspi_read 0x002e4020 1 0x002f4000 $ qspi_read 0x002e4028 1 0xffffffff % qspi_read 0x002ec020 1 ISR is empty 0x002f40000 % qspi_read 0x002ec028 1 0xffffffff

これにより、QSPI_write_one_word関数を使用して次のイメージエントリーへの新しいアプリケーション・イメージ・アドレスの書き込みを開始することができます。QSPI_write_one_word関数は2つの引数を取ります。
  1. アドレス
  2. ワードの値
図 84. 新しいイメージ・ポインター・エントリーへのアドレスポインターの書き込み
% qspi_write_one_word 0x002e4028 0x03ff0000 % qspi_write_one_word 0x002ec028 0x03ff

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

新しいイメージポインターに対する更新の確認

% qspi_read 0x002e4028 1 0x03ff0000 % qspi_read 0x002ec028 1 0x03ff0000

これで、ホスト・ソフトウェアはnCONFIGピンをアサートし、 インテル® Stratix® 10 FPGAを新しいアプリケーション・イメージでリコンフィグレーションできるようになります。もしくは、PCBの電源を再投入することでも可能です。リコンフィグレーション後は、現在のイメージアドレスを確認します。想定されるアドレスは、0x03ff0000です。新しいイメージを追加すると、アプリケーション・イメージ・リストには新しく追加されたイメージが含まれ、古いアプリケーション・イメージは2番目のイメージになります。新しく追加されたアプリケーション・イメージの優先順位が最も高くなります。

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