ブートおよびコンフィギュレーション¶
Versal™ ACAP 用にブートローダー、ベアメタル アプリケーション (APU/RPU 用)、および Linux オペレーティング システムを統合してロードする方法を示します。この章では、次のトピックについて説明します。
システム ソフトウェア: PLM、Arm® トラステッド ファームウェア (ATF)、U-Boot
スタンドアロン アプリケーションのブート イメージを生成する手順。
SD ブート、QSPI、および OSPI ブート モードのブート シーケンス。
これらの設定は、Vitis™ ソフトウェア プラットフォームと PetaLinux ツール フローを使用して実行できます。「Versal ACAP CIPS および NoC (DDR) IP コアの設定」では、PS 内に各プロセッシング ユニットのソフトウェア ブロックを作成することにのみに重点を置いていましたが、この章ではより大規模なシステムの一部としてこれらのブロックをロードする方法を説明します。
システム ソフトウェア¶
この章のブートおよびコンフィギュレーションの説明の大部分は、ここで挙げるシステム ソフトウェア ブロックについてです。
プラットフォーム ローダーおよびマネージャー¶
PLM (プラットフォーム ローダーおよびマネージャー) は、Versal ACAP の PMC (Platform Management Controller) ブロック内の専用プロセッサの 1 つで実行されるソフトウェアです。プラットフォーム管理、エラー管理、パーシャル リコンフィギュレーション、デバイスのサブシステム再起動など、起動および実行時の管理を担当します。PLM はイメージを再ロードし、パーシャル PDI とサービス割り込みをロードできます。PLM はブート ソースからプログラマブル デバイス イメージを読み取り、NoC の初期化、DDR メモリの初期化、プログラマブル ロジック、およびプロセッシング システムを含むシステムのコンポーネントを設定してから、デバイスのブートを完了します。
U-Boot¶
U-Boot はセカンダリ ブートローダーとして機能します。U-Boot は、PLM ハンドオフ後に Linux を Arm A72 APU にロードし、ボード コンフィギュレーションに基づいてプロセッシング システム内の残りのペリフェラルをコンフィギュレーションします。U-Boot は、eMMC、SATA、TFTP、SD、QSPI などのさまざまなメモリ ソースからイメージを取得できます。U-Boot は、PetaLinux ツール フローを使用して設定およびビルドできます。
Arm トラステッド ファームウェア¶
Arm トラステッド ファームウェア (ATF) は、APU の EL3 (例外レベル 3) で実行される透過的なベアメタル アプリケーション レイヤーです。ATF には、セキュア ワールドと非セキュア ワールドを切り替えるためのセキュア モニター レイヤーが含まれます。セキュア モニターの呼び出しと TBBR (Trusted Board Boot Requirements) の実装により、Versal ACAP の APU に Linux をロードするには ATF レイヤーが必須です。PLM は APU で実行される ATF をロードします。ATF は EL3 で動作し続けてサービス要求を待ちます。PLM は APU で実行される U-Boot を DDR にロードします。U-Boot は SMP モードで Linux OS を APU にロードします。ATF (bl31.elf) はデフォルトで PetaLinux に含まれており、PetaLinux プロジェクトの image ディレクトリにあります。
スタンドアロン アプリケーションのブート イメージの生成¶
Vitis ソフトウェア プラットフォームは、Versal アーキテクチャの自動ブート イメージ作成をサポートしていません。ブータブル イメージを生成するには Bootgen を使用します。Bootgen は、Vitis ソフトウェア プラットフォーム パッケージに含まれるコマンド ライン ユーティリティです。Bootgen の主な機能は、ブータブル イメージのさまざまなパーティションを統合することです。Bootgen は、Bootgen イメージ フォーマット (BIF) ファイルを入力として使用し、バイナリ BIN または PDI フォーマットで 1 つのファイル イメージを生成します。不揮発性メモリ (NVM) (QSPI または SD カード) にロードできる単一のファイル イメージを出力します。次の手順を実行して、PDI/BIN ファイルを生成します。
Vitis IDE で [XSCT Console] ビューがまだ開いていない場合は、[Window] → [Show View] をクリックして開きます。Show View ウィザードの検索バーに「xsct console」と入力します。[Open] をクリックして、コンソールを開きます。
[XSCT Console] で次のコマンドを入力して、ブート イメージを生成するフォルダーを作成します。
mkdirbootimagescdbootimages/
<design-package>/<board-name>/ready_to_test/qspi_images/standalone/<cips or cips_noc>/<apu or rpu>/ ディレクトリにある sd_boot.bif ファイル、<Vitis platform project>/hw/<.pdi-file> ディレクトリにある PDI ファイル、<Vitis application-project>/Debug フォルダーにあるアプリケーションの ELF ファイルを、手順 2 で作成したフォルダーにコピーします。
注記
必要に応じて、任意のテキスト エディターで sd_boot.bif ファイルを開き、Vitis プロジェクトごとに PDI または ELF の名前を変更します。
[XSCT Console] ビューで次のコマンドを実行します。
`bootgen -image <bif filename>.bif -arch versal -o BOOT.BIN`
[XSCT Console] ビューには、次のログが表示されます。
SD ブート モードのブート シーケンス¶
次の手順は、SD ブートモードのブート シーケンスを示しています。
イメージを確認するには、必要なイメージを SD カードにコピーします。
スタンドアロンの場合は、BOOT.BIN を SD カードにコピーします。
Linux イメージの場合は、<plnx-proj-root>/images/linux に移動し、BOOT.BIN、イメージ、rootfs.cpio.gz.uboot、boot.scr を SD カードにコピーします。
注記
リリースされたパッケージ パス (<design-package>/<vck190 or vmk180>/ready_to_test/qspi_images/linux/) の一部として、すぐにテスト可能なイメージを使用して VCK190/VMK180 ボードを起動するか、「サンプル プロジェクト: PetaLinux を使用した Linux イメージの作成」を参照し、PetaLinux ツールを使用して独自の Linux イメージ セットをビルドします。
SD カードを VMK180/VCK190 ボードの J302 コネクタに挿入します。
Micro USB ケーブルの一端を VMK180/VCK190 ボードの Micro USB ポート (J207) に接続し、もう一端をホスト マシンの空きの USB ポートに接続します。
スイッチ SW1 を次の図に示すように設定し、ボードを SD ブート モードに設定します。
12V 電源を VMK180/VCK190 の 6 ピン Molex コネクタに接続します。
使用しているホスト マシンによって、Tera Term または Minicom を使用して、ターミナル セッションを開始します。次の図に示すように、システムの COM ポートとボー レートを設定します。
ポート設定では、デバイス マネージャーで COM ポートを検証し、com ポートに対して Interface-0 を選択します。
電源スイッチ (SW13) を使用して VMK180/VCK190 ボードに電源を投入します。
注記
スタンドアロン イメージの場合は、対応するログがターミナルに表示されます。Linux イメージの場合は、ターミナルで起動シーケンスの後に user: root および pw: root を使用してログインできます。その後、ターミナルで gpiotest を実行します。次の図のようログが表示されます。
QSPI ブート モードのブート シーケンス¶
このセクションでは、QSPI ブートモードのブート シーケンスを示します。このためには、次の図に示すように QSPI ドーター カード (製品番号: X_EBM-01、REV_A01) を接続する必要があります。
図 2: VCK190 のドーター カード

注記
スタンドアロンの場合は、BOOT.BIN を SD カードにコピーします。Linux イメージの場合、リリースされたパッケージ パス (<design-package>/<vck190 or vmk180>/ready_to_test/qspi_images/linux/) の一部として、すぐにテスト可能なイメージを使用して VCK190/VMK180 ボードを起動するか、「サンプル プロジェクト: PetaLinux を使用した Linux イメージの作成」を参照し、PetaLinux ツールを使用して独自の Linux イメージ セットをビルドします。
次の手順を使用して、ドーター カードにイメージをフラッシュする必要があります。 注記: 次の手順では、まず SD ブート モードを使用してイメージをロードし、QSPI フラッシュ メモリを間接的にプログラムします。
カードの電源を切った状態で、QSPI ドーター カードを取り付けます。
次の図と同じようにブート モード スイッチ SW1 を ON-OFF-OFF-OFF から SD ブートモードに設定します。
ボード上の SD カード スロットに SD カードを挿入します。
ボードに電源を投入します。U-Boot の段階で、「Hit any key to stop autoboot:」というメッセージが表示されたら、いずれかのキーを押し、次のコマンドを実行して QSPI ドーター カードのイメージをフラッシュ メモリに書き込みます。
sfprobe000sferase0x00x10000000fatloadmmc00x80000BOOT.BINsfwrite0x800000x0<BOOT.BIN_filesize_in_hex>fatloadmmc00x80000Imagesfwrite0x800000xF00000<Image_filesize_in_hex>fatloadmmc00x80000rootfs.cpio.gz.u-bootsfwrite0x800000x2E00000<rootfs.cpio.gz.u-boot_filesize_in_hex>fatloadmmc00x80000boot.scrsfwrite0x800000x7F80000<boot.scr_filesize_in_hex>
画像をフラッシュ メモリに書き込んだ後、ボードの電源スイッチをオフにし、SW1 ブート モード ピンの設定を QSPI ブート モード (ON-OFF-ON-ON) に変更します。
ボードの電源を切って入れ直します。これで、QSPI フラッシュ内のイメージを使用してボードが起動します。
OSPI ブート モードのブート シーケンス¶
OSPI ブート モード用にデザインをコンフィギュレーションするには、「OSPI ブート モードのコンフィギュレーション」を参照してください。このセクションでは、OSPI ブートモードのブート シーケンスを示します。このためには、次の図のように OSPI ドーター カード (パーツ番号 X-EBM-03 REV_A02) を接続する必要があります。

注記
スタンドアロンの場合は、BOOT.BIN を SD カードにコピーします。Linux イメージの場合、リリースされたパッケージ パス (<design-package>/<vck190 or vmk180>/ready_to_test/qspi_images/linux/) の一部として、すぐにテスト可能なイメージを使用して VCK190/VMK180 ボードを起動するか、「サンプル プロジェクト: PetaLinux を使用した Linux イメージの作成」を参照し、PetaLinux ツールを使用して独自の Linux イメージ セットをビルドします。
イメージをドーター カードのフラッシュ メモリに書き込むには、次の手順に従います。
注記
次の手順では、まず SD ブート モードを使用してイメージをロードし、OSPI フラッシュ メモリを間接的にプログラムします。
カードの電源を切った状態で、OSPI ドーター カードを取り付けます。
次の図と同じようにブート モード スイッチ SW1 を ON-OFF-OFF-OFF から SD ブートモードに設定します。
ボード上の SD カード スロットに SD カードを挿入します。
ボードに電源を投入します。U-Boot の段階で、「Hit any key to stop autoboot:」というメッセージが表示されたら、いずれかのキーを押し、次のコマンドを実行して OSPI ドーター カードのイメージをフラッシュ メモリに書き込みます。
sfprobe000sferase0x00x10000000fatloadmmc00x80000BOOT.BINsfwrite0x800000x0<BOOT.BIN_filesize_in_hex>fatloadmmc00x80000Imagesfwrite0x800000xF00000<Image_filesize_in_hex>fatloadmmc00x80000rootfs.cpio.gz.u-bootsfwrite0x800000x2E00000<rootfs.cpio.gz.u-bootfilesize_in_hex>fatloadmmc00x80000boot.scrsfwrite0x800000x7F80000<boot.scr_filesize_in_hex>
イメージを書き込んだら、ボードの電源スイッチをオフにします。
SW1 ブート モードのピン設定を OSPI ブート モード (ON-OFF-OFF-OFF) に変更します。
ボードの電源を切って入れ直します。これで、OSPI フラッシュ内のイメージを使用してボードが起動します。
注記
VMK180 量産ボードの場合、OSPI イメージはデザイン パッケージの一部として提供されません。VCK190 の OSPI イメージのみがデザイン パッケージの下に共有されます。
eMMC ブート モードのブート シーケンス¶
eMMC ブート モード用にデザインをコンフィギュレーションするには、「eMMC ブート モードのコンフィギュレーション」を参照してください。このセクションでは、eMMC ブート モードのブート シーケンスを示します。このためには、次の図のように eMMC ドーター カード (パーツ番号 X-EBM-02、REV_A02) を接続する必要があります。

注記
スタンドアロンの場合は、BOOT.BIN を SD カードにコピーします。Linux イメージの場合、リリースされたパッケージ パス (<designpackage>/<vck190 or YAML_DT_BOARD_FLAGS_vmk180>/ready_to_test/emmc_images/linux) の一部として、すぐにテスト可能なイメージを使用して VCK190 または vmk180 ボードを起動するか、「サンプル プロジェクト: PetaLinux を使用した Linux イメージの作成」を参照し、PetaLinux ツールを使用して独自の Linux イメージ セットをビルドします。
Versal ボード上の eMMC フラッシュ メモリを初めてフォーマットする場合は、次の手順に従います。
カードの電源を切った状態で、eMMC ドーター カードを取り付けます。
次の図と同じように、ブート モード スイッチ SW1 を ON-ON-ON-ON JTAG に設定します。
この例では、XSCT コンソールを使用して、ブート イメージ ファイル (boot.bin) をダウンロードします。eMMC フラッシュ メモリをフォーマットするのに Linux イメージをロードするため、U-boot コンソールを使用します。
ボードとホスト コンピューターにイーサネット ケーブルが接続されていることを確認してください。ホスト コンピューター上で dhcp および tftpb サーバーを設定します。
Linux イメージの BOOT.BIN、イメージ、rootfs.cpio.gz.u-boot、および boot.scr をホスト tftp ホーム ディレクトリにコピーします。
[XSCT Console] ビューで、次の connect コマンドを使用して JTAG を介してターゲットに接続します。
xsct%connect
connect コマンドは、接続のチャネル ID を返します。
次の target コマンドを実行して、使用可能なターゲットを一覧表示し、ID を使用してターゲットを選択します。ターゲットには JTAG チェーンで検出されたときに ID が割り当てられるので、ターゲット ID はセッションごとに変わります。
xsct%targets
次のコマンドを使用して、VCK190 ボードに boot.bin をダウンロードし、U-Boot コンソールを取得します。
xsct%targets1xsct%rstxsct%deviceprogramBOOT.BIN
このコマンドを実行したあとに、シリアル コンソールに PLM と U-Boot のブート ログが表示されます。
U-Boot の段階で、「Hit any key to stop autoboot:」というメッセージが表示されたら、いずれかのキーを押し、次のコマンドを実行して eMMC ドーター カードのイメージをフラッシュ メモリに書き込みます。
dhcptftpboot0x80000Imagetftpboot0x2000000rootfs.cpio.gz.u-bootbooti0x800000x20000000x1000
先の U-Boot コマンドを実行したあと、Linux がブートを開始し、Linux コンソール プロンプトで停止し、ユーザーがコマンドを入力するのを待ちます。
Linux コンソール プロンプトから次のコマンドを実行して、eMMC Linux のブータブル パーティションを作成し、eMMC を FAT32 ファイルシステムでフォーマットします。
root@xilinx-vmk180-2021_1:~# fdisk /dev/mmcblk0Thenumberofcylindersforthisdiskissetto233472.Thereisnothingwrongwiththat,butthisislargerthan1024,andcouldincertainsetupscauseproblemswith:1)softwarethatrunsatboottime(e.g.,oldversionsofLILO)2)bootingandpartitioningsoftwarefromotherOSs(e.g.,DOSFDISK,OS/2FDISK)Command(mforhelp):mCommandActionatoggleabootableflagbeditbsddisklabelctogglethedoscompatibilityflagddeleteapartitionllistknownpartitiontypesnaddanewpartitionocreateanewemptyDOSpartitiontablepprintthepartitiontableqquitwithoutsavingchangesscreateanewemptySundisklabeltchangeapartition's system iduchangedisplay/entryunitsvverifythepartitiontablewwritetabletodiskandexitCommand(mforhelp):nPartitiontypepprimarypartition(1-4)eextendedpPartitionnumber(1-4):1Firstsector(16-14942207,default16):Usingdefaultvalue16Lastsectoror+size{,K,M,G,T}(16-14942207,default14942207):Usingdefaultvalue14942207Command(mforhelp):wThepartitiontablehasbeenaltered.Callingioctl()tore-readpartitiontablefdisk:WARNING:rereadingpartitiontablefailed,kernelstillusesoldtable:Deviceorresourcebusyroot@xilinx-vmk180-2021_1:~# mkfs.vfat -F 32 -n boot /dev/mmcblk0p1
eMMC フラッシュ メモリは FAT32 ファイルシステムでフォーマットされています。
Linux イメージを eMMC フラッシュ メモリに書き込むには、次の手順に従います。
カードの電源を切った状態で、eMMC ドーター カードを取り付けます。
次の図と同じように、ブート モード スイッチ SW1 を ON-ON-ON-ON JTAG に設定します。
この例では、XSCT コンソールを使用して、ブート イメージ ファイル (boot.bin) をダウンロードします。EMMC フラッシュ メモリをフォーマットするのに Linux イメージをロードするため、U-boot コンソールを使用します。
ボードにイーサネット ケーブルが接続されていることを確認してください。ホスト コンピューター上で dhcp および tftpb サーバーを設定します。
Linux イメージの BOOT.BIN、イメージ、rootfs.cpio.gz.u-boot、および boot.scr をホスト tftp ホーム ディレクトリにコピーします。また、上記のセクションで説明するように、最初に U-Boot からイメージをコピーする前に、eMMC カードが FAT32 ファイルシステムでフォーマットされるようにしておいてください。
[XSCT Console] ビューで、次の connect コマンドを使用して JTAG を介してターゲットに接続します。
xsct%connect
connect コマンドは、接続のチャネル ID を返します。
target コマンドを実行して、使用可能なターゲットを一覧表示します。ID を使用してターゲットを選択します。ターゲットには JTAG チェーンで検出されたときに ID が割り当てられるので、ターゲット ID はセッションごとに変わります。
xsct%targets
次のコマンドを使用して、VCK190 ボードに boot.bin をダウンロードし、U-Boot コンソールを取得します。
xsct%targets1xsct%rstxsct%deviceprogramBOOT.BIN
このコマンドを実行したあとに、シリアル コンソールに PLM と U-Boot のブート ログが表示されます。
U-Boot の段階で、「Hit any key to stop autoboot:」というメッセージが表示されたら、いずれかのキーを押し、次のコマンドを実行して eMMC ドーター カードのイメージをフラッシュ メモリに書き込みます。
fatls mmc 0 // to check emmc is formatted or not. dhcp tftpb 0x80000 BOOT.BIN fatwrite mmc 0 0x80000 BOOT.BIN $filesize tftpb 0x80000 Image fatwrite mmc 0 0x80000 Image $filesize tftpb 0x80000 rootfs.cpio.gz.u-boot fatwrite mmc 0 0x80000 rootfs.cpio.gz.u-boot $filesize tftpb 0x80000 boot.scr fatwrite mmc 0 0x80000 boot.scr $filesize
画像をフラッシュ メモリに書き込んだ後、ボードの電源スイッチをオフにし、SW1 ブート モード ピンの設定を eMMC ブート モード (OFF-ON-ON-OFF) に変更します。
ボードの電源を切って入れ直します。これで、eMMC フラッシュ メモリ内のイメージを使用してボードが起動します。