1. 株式会社PALTEK
  2. TECHブログ
  3. 技術情報
  4. 実務に役立つ!Versal™ マルチブート・フォールバックの基本と検証

TECHブログ

実務に役立つ!Versal™ マルチブート・フォールバックの基本と検証

実務に役立つ!Versal™ マルチブート・フォールバックの基本と検証

この記事でわかること

  • Versal のマルチブート機能の仕組みと、SD カード・QSPI フラッシュそれぞれでのブートイメージ切り替え方法
  • フォールバック機能の動作原理と、ゴールデンイメージを活用した自動復旧の仕組み
  • PLM へのマルチブートレジスタ書き換え・ソフトウェアリセット要求の仕組み
  • VCK190 評価ボードを使ったディップスイッチによるブートイメージ選択の実機確認概要
  • 詳細手順資料とソースコードの入手方法

 

皆さま、こんにちは!
本ブログでは、Versal™をこれから活用する方、Zynq™ UltraScale+™ MPSoC の設計経験がある方を対象に、Versal のリモートアップデートの概要を解説します。

以前『実務に役立つ!Zynq™ UltraScale+™ MPSoC マルチブート・フォールバックの基本と検証』と題し、MPSoC を使ったマルチブート・フォールバックの基本と検証についても紹介していますので、併せてご確認ください。

Versal でブートを行う際、以下のようなことができれば便利だと思いませんか?

  1. ボード上に実装したスイッチでブートイメージの切り替え
  2. ブートイメージが破損した際に起動するバックアップ用のイメージの実装

実は、1 はマルチブート、2 はフォールバックという機能を使用することで実現可能です。
本ブログでは、そんな便利機能であるマルチブート・フォールバックの概要を説明します。

詳細な内容を記載した資料と、実機確認に使用したソースコードは、ブログ最後に記載のリンクからダウンロード可能です。
資料内では VCK190 を使用した実機確認も行っているため、評価ボードをお持ちの方はすぐにお試しいただけます。
それでは参りましょう!

1. 用語解説

本ブログで登場する単語について解説します。

ゴールデンイメージ
ブートデバイスに予め用意しておく、正常に起動することが確認できているバックアップ用のイメージです。リモートアップデートで通常のブートイメージを書き込む際に、書き損じてしまったなど、起動予定のブートイメージに問題があった場合でも、ゴールデンイメージがあれば復旧が可能となります。
PDI
PDI(Programmable Device Image)は、Versal デバイスのブートイメージで、ブートとコンフィギュレーションに使用するバイナリで構成されています。PDI は複数のイメージを集めたもので、ブートローダー、ファームウェア、ハードウェアコンフィギュレーションデータなどが含まれます。
PLM
PLM(Platform Loader and Manager)は、デバイスのブートおよびコンフィギュレーションを実行し、その後は電源管理などのサービスを継続的に提供します。
RCU
RCU(ROM Code Unit)は、POR または SRST 後に、PDI をデコードし、ブートヘッダーの読み出し、検証を実行、PDI の中の PLM をロード、起動します。
FAT32
SD カードや USB メモリで広く使用されているファイルシステムです。Versal で SD カードブートを行う場合、FAT32 にフォーマットされたファイルシステムにブートイメージを格納する必要があります。

2. マルチブートとは

ブートイメージを切り替えてブートを行う機能です。Versal は初回起動時に選択されたブートデバイスから、特定の位置(アドレス)やファイル名を検索し、ブートイメージを読み出して起動します。

初回起動時に検索される特定の位置(アドレス)やファイル名は、マルチブートレジスタによって変更することができます。Versal では、ユーザーアプリケーションから PLM に対してこのレジスタの書き換え、ソフトウェアリセットを要求することで、マルチブート機能を実現できます。

アドレスやファイル名の指定は、xilloader_client.c に用意されている XLoader_UpdateMultiboot()関数で実行します。ソフトウェアリセットは、レジスタ値を保持した状態で再ブートするため、任意のアドレスやファイル名からブートイメージを読み出すことが可能です。

2.1. SD カードの場合

最初に起動する BOOT.BIN と起動したいブートイメージのファイル名を BOOTXXXX.BIN として FAT32 でフォーマットされたパーティションへ保存する必要があります。XXXX には 1 ~ 8190 までの数字が入ります。

下図の例は、以下のような構成です。

マルチブート制御用のイメージ BOOT.BIN
切り替え対象イメージ BOOT0001.BIN、BOOT0002.BIN
ゴールデンイメージ BOOT0003.BIN

SD カードのマルチブートイメージ図

図 1. SD カードのマルチブートイメージ図

電源投入時には必ず BOOT.BIN が起動し、BOOT.BIN に含まれる PLM によって、任意に選択したブートイメージを起動することができます。例えばマルチブートレジスタの値が 0x2 の場合、BOOT0002.BIN で Versal がブートします。

2.2. QSPI フラッシュの場合

電源投入時、QSPI フラッシュのアドレス 0x0 に格納されているブートイメージが必ず起動します。そのため、複数のブートイメージから選択して起動させたい場合は、QSPI フラッシュの先頭アドレス (0x0) に、マルチブート制御用のブートイメージを格納します。

下図の例は、以下のような構成です。

マルチブート制御用のイメージ Image 1
切り替え対象イメージ Image 2、Image 3
ゴールデンイメージ Image 4

QSPI フラッシュのマルチブートイメージ図

図 2. QSPI フラッシュのマルチブートイメージ図

マルチブートで起動するブートイメージは、電源投入時に起動するマルチブートレジスタの値によって決定されます。具体的には、「設定値 × 32KB (0x8000)」に格納されているブートイメージでブートします。例えば、0x20000 に格納されているブートイメージでブートしたい場合、マルチブートレジスタに設定する数値は (0x20000÷0x8000 =) 0x4 となります。

3. フォールバックとは

ブートイメージが見つからない、ブート中のイメージでエラーなどの問題が発生した場合に、ブートデバイス内の他のブートイメージを検索する機能です。

検索したブートデバイス内に有効なブートイメージがあった場合、そのブートイメージを使用してブートを開始します。ブートデバイスごとに検索範囲が決められており、探索限界に達するとロックダウンとなり機能を停止します。

表 1. 各ブートデバイスのブートイメージの検索範囲
各ブートデバイスのブートイメージの検索範囲

Advanced Micro Devices, Inc., "Boot Device Modes",Versal Adaptive SoC System Software Developers Guide (UG1304), 2025-12-8 (v2025.2) (参照 2026-2-3)

3.1. SD カードの場合

下図の例は、以下のような構成です。

破損したブートイメージ BOOT.BIN、BOOT0001.BIN、BOOT0002.BIN
ゴールデンイメージ BOOT0003.BIN

SD カードのフォールバックイメージ図

図 3. SD カードのフォールバックイメージ図

はじめに BOOT.BIN が検索されますが、ファイルが見つからない、破損している場合は、BOOT0001.BIN を検索、同じような状況であれば BOOT0002.BIN を検索といった形で、検索するブートイメージ名を 1 つずつインクリメントします。すべて見つからない、破損しているようであれば、ゴールデンイメージの BOOT0003.BIN が起動します。

ゴールデンイメージのファイル名は、基本的に一番大きい数字にする必要があり、必ず起動できるものを保持する必要があります。また、リモートアップデートなどで書き換えをしないように注意してください。ゴールデンイメージは、アップデートの失敗や他のイメージに問題がある場合でも、システムとして停止することを防ぐ目的で使用することができます。

3.2 QSPI フラッシュの場合

はじめに 0x0 に格納されているブートイメージが検索され、ブートヘッダーが見つからない、破損している場合はフォールバックが実行されます。フォールバックが実行されるとアドレスを 32KB (0x8000) ずつインクリメントし、次のブートイメージを検索します。

下図の例は、以下のような構成です。

破損したブートイメージ Image1、Image 2、Image 3
ゴールデンイメージ Image 4

QSPI フラッシュのフォールバックのイメージ図

図 4. QSPI フラッシュのフォールバックのイメージ図

2 回目、4 回目のインクリメントで Image 2、Image 3 がありますが、破損しているため再度フォールバックを実施します。6 回目のインクリメントでゴールデンイメージの Image 4 が起動します。

4. 実機確認概要

以下のようなイメージで、SD カードでのマルチブート、フォールバックを実機で確認します。

検証内容イメージ

図 5. 検証内容イメージ

基板上のディップスイッチで BOOT0001.BIN, BOOT0002.BIN のどちらを起動するか決定します。最初に BOOT.BIN 内のユーザーアプリケーションが起動し、ディップスイッチの値を読み取ります。その後、マルチブートレジスタの書き換えとソフトウェアリセットを PLM に要求します。

BOOT0001.BIN は正常なブートイメージのため、ユーザーアプリケーションまで起動します。BOOT0002.BIN は破損させたブートイメージのため、フォールバックが実行され、ゴールデンイメージである BOOT0005.BIN が起動します。

5. 資料の実行環境

本ブログの内容は、以下の環境で実機確認を行っております。

表 2. 実行環境
Host PC CPU : AMD Ryzen™ 9 7950X
OS :Ubuntu 24.04 LTS
評価ボード VCK190
AMD Tools Vivado™ 2025.2
Vitis™ 2025.2

6. 資料ダウンロード

本ブログで紹介した内容の詳細な説明や VCK190 評価ボードを使用した実機確認手順について確認されたい場合は、以下より資料をダウンロード可能です。

7. まとめ

いかがでしたでしょうか。
今回はマルチブート・フォールバックの概要を紹介しました。

マルチブート機能を利用することで、ユーザーは任意のブートイメージを選択して起動できます。これにより、異なる動作モードへの切り替えなどが容易になります。

また、フォールバック機能により、ブートイメージが破損している場合でも、システムは自動的に次の有効なイメージを検索して起動します。これにより、システムの信頼性と可用性が向上します。

本ブログの情報が、お客様の役に立てれば幸いです。
最後まで閲覧いただき、ありがとうございました!

関連ブログ