インテル® Agilex™ ハード・プロセッサー・システム (HPS) のリモート・システム・アップデート・ユーザーガイド
ID
683184
日付
11/10/2021
Public
このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。
1. 概要
2. ユースケース
3. クアッドSPIフラッシュのレイアウト
4. インテル® Quartus® Prime開発ソフトウェアとツールのサポート
5. ソフトウェアのサポート
6. フラッシュの破損 - 検出と回復
7. リモート・システム・アップデートの例
8. バージョンの互換性に関する考慮事項
9. HPS先行でのRSUの使用
A. コンフィグレーション・フローの図
B. RSUステータスコードとエラーコード
C. U-Boot RSUリファレンス情報
D. LIBRSUリファレンス情報
E. 組み合わせたアプリケーション・イメージ
15. SoCのリモート・システム・アップデート・ユーザーガイドの改訂履歴
C.6.1. rsu_init
C.6.2. rsu_exit
C.6.3. rsu_slot_count
C.6.4. rsu_slot_by_name
C.6.5. rsu_slot_get_info
C.6.6. rsu_slot_size
C.6.7. rsu_slot_priority
C.6.8. rsu_slot_erase
C.6.9. rsu_slot_program_buf
C.6.10. rsu_slot_program_factory_update_buf
C.6.11. rsu_slot_program_buf_raw
C.6.12. rsu_slot_verify_buf
C.6.13. rsu_slot_verify_buf_raw
C.6.14. rsu_slot_enable
C.6.15. rsu_slot_disable
C.6.16. rsu_slot_load
C.6.17. rsu_slot_load_factory
C.6.18. rsu_slot_rename
C.6.19. rsu_slot_delete
C.6.20. rsu_slot_create
C.6.21. rsu_status_log
C.6.22. rsu_notify
C.6.23. rsu_clear_error_status
C.6.24. rsu_reset_retry_counter
C.6.25. rsu_dcmf_version
C.6.26. rsu_max_retry
C.6.27. rsu_dcmf_status
C.6.28. rsu_create_empty_cpb
C.6.29. rsu_restore_cpb
C.6.30. rsu_save_cpb
C.6.31. rsu_restore_spt
C.6.32. rsu_save_spt
C.6.33. rsu_running_factory
C.7.1. dtb
C.7.2. list
C.7.3. slot_by_name
C.7.4. slot_count
C.7.5. slot_disable
C.7.6. slot_enable
C.7.7. slot_erase
C.7.8. slot_get_info
C.7.9. slot_load
C.7.10. slot_load_factory
C.7.11. slot_priority
C.7.12. slot_program_buf
C.7.13. slot_program_buf_raw
C.7.14. slot_program_factory_update_buf
C.7.15. slot_rename
C.7.16. slot_delete
C.7.17. slot_create
C.7.18. slot_size
C.7.19. slot_verify_buf
C.7.20. slot_verify_buf_raw
C.7.21. status_log
C.7.22. update
C.7.23. notify
C.7.24. clear_error_status
C.7.25. reset_retry_counter
C.7.26. display_dcmf_version
C.7.27. display_dcmf_status
C.7.28. display_max_retry
C.7.29. restore_spt
C.7.30. save_spt
C.7.31. create_empty_cpb
C.7.32. restore_cpb
C.7.33. save_cpb
C.7.34. check_running_factory
D.6.1. librsu_init
D.6.2. librsu_exit
D.6.3. rsu_slot_count
D.6.4. rsu_slot_by_name
D.6.5. rsu_slot_get_info
D.6.6. rsu_slot_size
D.6.7. rsu_slot_priority
D.6.8. rsu_slot_erase
D.6.9. rsu_slot_program_buf
D.6.10. rsu_slot_program_factory_update_buf
D.6.11. rsu_slot_program_file
D.6.12. rsu_slot_program_factory_update_file
D.6.13. rsu_slot_program_buf_raw
D.6.14. rsu_slot_program_file_raw
D.6.15. rsu_slot_verify_buf
D.6.16. rsu_slot_verify_file
D.6.17. rsu_slot_verify_buf_raw
D.6.18. rsu_slot_verify_file_raw
D.6.19. rsu_slot_program_callback
D.6.20. rsu_slot_program_callback_raw
D.6.21. rsu_slot_verify_callback
D.6.22. rsu_slot_verify_callback_raw
D.6.23. rsu_slot_copy_to_file
D.6.24. rsu_slot_enable
D.6.25. rsu_slot_disable
D.6.26. rsu_slot_load_after_reboot
D.6.27. rsu_slot_load_factory_after_reboot
D.6.28. rsu_slot_rename
D.6.29. rsu_slot_delete
D.6.30. rsu_slot_create
D.6.31. rsu_status_log
D.6.32. rsu_notify
D.6.33. rsu_clear_error_status
D.6.34. rsu_reset_retry_counter
D.6.35. rsu_dcmf_version
D.6.36. rsu_max_retry
D.6.37. rsu_dcmf_status
D.6.38. rsu_save_spt
D.6.39. rsu_restore_spt
D.6.40. rsu_save_cpb
D.6.41. rsu_create_empty_cpb
D.6.42. rsu_restore_cpb
D.6.43. rsu_running_factory
D.7.1. count
D.7.2. list
D.7.3. size
D.7.4. priority
D.7.5. enable
D.7.6. disable
D.7.7. request
D.7.8. request-factory
D.7.9. erase
D.7.10. add
D.7.11. add-factory-update
D.7.12. add-raw
D.7.13. verify
D.7.14. verify-raw
D.7.15. copy
D.7.16. log
D.7.17. notify
D.7.18. clear-error-status
D.7.19. reset-retry-counter
D.7.20. display-dcmf-version
D.7.21. display-dcmf-status
D.7.22. display-max-retry
D.7.23. create-slot
D.7.24. delete-slot
D.7.25. restore-spt
D.7.26. save-spt
D.7.27. create-empty-cpb
D.7.28. restore-cpb
D.7.29. save-cpb
D.7.30. check-running-factory
D.7.31. help
3.2.4. アプリケーション・イメージのレイアウト
アプリケーション・イメージは、SDMファームウェアとコンフィグレーション・データで構成されています。コンフィグレーション・データは、最大4つのセクションを含みます。SDMファームウェアには、これらのセクションに対するポインターが含まれています。次の表で示されているのは、アプリケーション・イメージ内のセクション数とセクションポインターの位置です。
| オフセット | サイズ (バイト) | 説明 |
|---|---|---|
| 0x1F00 | 4 | セクション数 |
| … | ||
| 0x1F08 | 8 | 最初のセクションのアドレス |
| 0x1F10 | 8 | 2番目のセクションのアドレス |
| 0x1F18 | 8 | 3番目のセクションのアドレス |
| 0x1F20 | 8 | 4番目のセクションのアドレス |
| … | ||
| 0x1FFC | 4 | 0x1000から0x1FFBのCRC32 |
セクションポインターは、フラッシュ内のFPGAイメージの実際の位置と一致させる必要があります。この要件を満たすには、2つのオプションが使用可能です。
- クアッドSPI フラッシュメモリー内の実際の位置に一致させるアプリケーション・イメージを生成することができます。システムによって、適用される更新のセットが異なる場合があるため、このオプションは実用的ではない可能性があります。その結果、新しいアプリケーション・イメージを格納するのに適したスロットが異なる場合があります。
- アドレス0に位置していると仮定してアプリケーション・イメージを生成し、ポインターを更新して実際の位置に一致させることができます。
- インテル® Quartus® PrimeQuartus Prime開発ソフトウェアのバージョン21.1以降では、Use relative addressオプションがデフォルトになります。このオプションは、単一のアプリケーション・ビットストリームを生成するためのものです。開始アドレスを指定する必要はありません。これは、イメージをQSPIフラッシュメモリー内の任意の位置にプログラムできるためです。イメージをロードするには、フラッシュメモリーに格納されているイメージの開始アドレスを正しく指す必要があります。
このオプションをディスエーブルする場合は、Use relative addressチェックボックスをオフにして、フラッシュメモリー内のイメージのStart addressを指定します。詳細については、インテルAgilexコンフィグレーション・ユーザーガイド内のアプリケーション・イメージの生成を参照してください。
- インテル® Quartus® PrimeQuartus Prime開発ソフトウェアのバージョン21.1以降では、Use relative addressオプションがデフォルトになります。このオプションは、単一のアプリケーション・ビットストリームを生成するためのものです。開始アドレスを指定する必要はありません。これは、イメージをQSPIフラッシュメモリー内の任意の位置にプログラムできるためです。イメージをロードするには、フラッシュメモリーに格納されているイメージの開始アドレスを正しく指す必要があります。
HPSを使用してRSUを管理する場合、U-BootクライアントとLIBRSUクライアントの両方は次の手順を実装します。これは、アドレス0をターゲットにしているアプリケーション・イメージを実際の送信先スロットアドレスに再配置するために行われます。
INITIAL_ADDRESS 用に作成されたアプリケーション・イメージから NEW_ADDRESS にポインターを更新する手順は、次のとおりです。
- INITIAL_ADDRESS をターゲットにするアプリケーション・イメージを作成します。
- アプリケーション・イメージのオフセット0xF100から32ビット値を読み出し、セクションの数を特定します。
- <s>= 1 to number_of_sections の場合、
- section_pointer = 0xF100 + (s * 8) から64ビットのセクションポインターを読み出します。
- INITIAL_ADDRESS を section_pointer から引きます。
- NEW_ADDRESS を section_pointer に加えます。
- 更新された section_pointer を格納します。
- アドレス0x1000から0x1FFBのCRC32を再計算します。新しい値をオフセット0x1FFCに格納します。CRC32の値は、次の手順を使用してデータのコピー上で計算する必要があります。
- 各バイトのビットを入れ替え、ビットが逆の順に発生するようにしてCRCを計算します。
- 計算したCRC32の値のバイトを入れ替え、逆の順序で表示されるようにします。
- CRC32の値の各バイトのビットを入れ替えます。
- CRC32の値をフラッシュに書き込みます。
詳細については、アプリケーション・イメージの作成を参照してください。
注: ファクトリー・アップデート・イメージの形式は異なります。ポインター更新には異なる手順が必要です。HPSを使用してRSUを管理する場合、U-BootクライアントとLIBRSUクライアントの両方がこの手順を実装して、ファクトリー・アップデート・イメージを再配置します。
注: 組み合わせたアプリケーション・イメージの形式は異なります。再配置する必要のあるポインターはありません。イメージは、変更せずに任意のアドレスにフラッシュ内で配置できます。