SoC ブートローダー
インテル® SoC FPGA は、ブートローダーを使用して、ハード・プロセッサー・システム (HPS) 上にエンドユーザー・アプリケーションを読み込み、実行します。エンドユーザー・アプリケーションは、シンプルなベアメタル・アプリケーションでも、Linux* オペレーション・システムのような複雑なオペレーティング・システムでも構いません。
このページでは、ブートローダーとは何かを説明し、利用可能なブートローダーおよびそれらの主な特性を掲載し、ブートローダーによる開始方法を説明、またその他のリソースを掲載しています。
1. ブートローダーとは
ブートローダーの定義
SoC デバイスが起動する際、まず BootROM と呼ばれるソフトウェアが動作します。いくつかの理由で、BootROM には次のような制限された機能があります。
- オンチップ ROM に収まる必要があるため、小型でなければならない
- 変更するコストが非常に高いため、非常に堅牢でなければならず、その分機能が少なくなる
- システムがどのように構成されたかが分からないため、すべてを立ち上げることができない
一方でエンドユーザー・アプリケーションは、一般的に大型で、実行する前に、システムをエンドユーザーの必要に応じて構成する必要があります。
ブートローダーの仕事は、BootROM とエンドユーザー・アプリケーションの間のギャップを埋めることです。
通常のブートローダーのタスクには次のようなものが含まれます。
- スルーレート、電圧、プルアップ / プルダウンなどのピンの多重化とピンの設定を構成する
- クロックツリーでクロックを構成する
- SDRAM を立ち上げ、キャリブレーションする
- フラッシュメモリーを初期化する
- フラッシュメモリーからエンド・アプリケーションを読み込む
- エンド・アプリケーションに制御を渡す
上記に記載される機能のほか、ブートローダーは次のような高度な機能を提供し、より複雑な導入や、より簡単な開発を可能にします。
- クラウドからエンドユーザー・アプリケーションを取り込むネットワーク・アクセス。
- より簡単な問題診断を可能にするデバッグツール。
- インタラクティブ・コマンド向けコマンドライン・インターフェイス。
- エンドユーザー・アプリケーションのシンプルな読み込みとブートローダーによる実行を可能にするフレームワークを実行するアプリケーション。アプリケーションが終了した後、制御はブートローダーに戻されます。
マルチステージのブートローダー
ブートローダーのプロセスは、複数のステージ、通常は 2 つのステージに分割することができることがあります。
Cyclone® V SoC については、そのステージに SDRAM が立ち上げられていないため、BootROM は最大 64KB のブートローダーしか読み込むことができません。サイズの制限により、ネットワークや複雑なファイルシステムへのアクセスなど、高度な機能を実現することができません。そのような機能を希望する場合は、ブートローダーの第 1 ステージが SDRAM を立ち上げ、第 2 ステージでより多くの機能を読み込みます。2 ステージ・ブートローダーは、Cyclone® V SoC と Arria® V SoC のデフォルトオプションです。
インテル® Arria® 10 SoC は、より大きな RAM サイズを備えています。256KB のオンチップ RAMにより、ブートローダーの第 1 ステージは Cyclone® V SoC と Arria® V SoC より多くの機能を持つことができます。そのため、通常 1 ステージを必要とします。しかし、複数の種類のフラッシュへのアクセス、複雑なファイルシステムやネットワークなど、より複雑な場合でさえ、ユーザーは追加的なブートローダーのステージを自由に使用できます。
インテル® Stratix® 10 SoC では、通常、2 ステージ・ブートローダーが使用されます。最初の小さなブートローダーのステージは、FPGA 構成ストリームの一部であり、セキュア・デバイス・マネージャー (SDM) によって HPS オンチップ RAM へ読み込まれ、一方で 2 つ目のより大きなブートローダーのステージは、HPS がアクセスできるどの場所にでも保存できます。
2. ハードウェア・ハンドオフ
ハンドオフの概要
すべてのインテル® SoC FPGA プロジェクトは、HPS に影響を与える様々なシステム設定がユーザーによって入力されるような、ハードウェア・プロジェクトから開始します。例えば、以下のものがあります。
- ピン・マルチプレクサー
- ピン設定
- SDRAM 設定
- クロック設定
これらの設定を適用することが、ブートローダーの仕事であり、これらの設定を受け取るブートローダーのプロセスは、ハードウェアからソフトウェアへのハンドオフと呼ばれます。
具体的なブートローダーと SoC デバイスファミリーによって、ハンドオフは異なる形式をとります。通常次のようなものがあります。
- Cyclone® V と Arria® V SoC については、ハンドオフは XML ファイル、バイナリーファイル、ソースコード・ファイルの組み合わせです。これらのファイルはソースコードに変換され、その後プリローダーへコンパイルされます
- インテル® Arria® 10 SoC については、ハンドオフは、デバイスツリー・ファイルに変換され、ブートローダーによって使用される単一の XML ファイルに含まれています
- インテル® Stratix® 10 SoC については、ハンドオフ情報は、FPGA 構成ビットストリームの一部です
ハンドオフ情報の入力と変更を行う主な方法は、Qsys でそれらを編集することを介してです。
ハンドオフ情報に加えて、ブートローダーには、次の方法を介して、ユーザーが選択できる様々な設定があります。
- BSP エディターでの設定の変更
- ブートローダー・ソースコードの編集
- デバイスツリーが使用中の場合、ブートローダー・デバイスツリーを編集
Cyclone® V Soc と Arria® V SoC ハンドオフ

インテル® Arria® 10 SoC ハンドオフ

インテル® Stratix® 10 SoC ハンドオフ

3. 利用可能なブートローダー
利用可能なブートローダーの概要
次の表では、利用可能なブートローダー、ライセンスのタイプ、サポートされる SoC、および 2 ステージサポートの提供状況を掲載しています。
U-Boot
U-Boot は、業界で広く使用され、多くの機能を提供するブートローダーです。
- U-Boot は限定されたオンチップ RAMを搭載するシステム (インテル® Cyclone® V SoC やインテル® Arria® V SoCなど) 向けに「SPL」と呼ばれる、オプションの第 1 ステージです。
- ネットワーク機能
- フラッシュメモリーのサポート
- コマンドライン・インターフェイス
- スクリプティング
- U-Boot カスタム・アプリケーション
U-Boot は、General Public License (GPL) に基づいて開発されているため、一般に提供される製品へのいかなる貢献も公開される必要があります。
U-Boot ソースコードは、GitHub ウェブサイトの U-Boot SoC FPGA ページで利用できます。
インテル® Arria® 10 SoC、Arria® V SoC、Cyclone® V SoC については、U-Boot ソースコードは、インテル® SoC FPGA エンベデッド開発スイート (SoC EDS) に含まれており、シンプルで簡単な開発プロセスを促進しています。
Cyclone® V と Arria® V SoC 向けのサポートは、GitHub のウェブサイト上の公式 U-Boot git ツリーへまとめられました。インテル® Arria® 10 SoC 向けサポートの準備も進められています。
主な一般用 U-Boot ホームページは、Das U-Boot -- the Universal Boot Loader ウェブページにあります。
MPL
Minimal Preloader (MPL) は、インテル® SoC FPGA ベアメタル・ハードウェア抽象化ライブラリー (HWLIB) を使用して開発されたブートローダーです。これは、最小限のフットプリント向けに設計されたシングルステージ・ブートローダーです。
MPL は、次のデバイスで利用できます。
- Cyclone® V SoC
- Arria® V SoC
- インテル® Arria® 10 SoC
MPL は、Berkeley Software Distribution (BSD) ライセンスにより提供されており、より簡単な開発と導入を可能にします。
MPL は SoC EDS の一部として提供され、<SoC EDS Installation Folder>/embedded/examples/software/Intel® FPGA-SoCFPGA-HardwareLib-MPL.tar.gz ファイルにあるプロジェクト・アーカイブです。アーカイブには、詳細な MPL の説明と使用情報を含む README.txtというファイルが含まれています。
UEFI
Unified Extensible Firmware Interface (UEFI) は、プラットフォームの初期化とファームウェアのブートストラップを簡素化する標準化されたファームウェアの仕様です。
UEFI ブートローダーは、次のデバイスで利用できます。
- インテル® Arria® 10 SoC
- インテル® Stratix® 10 SoC
UEFI は、非常に明確に指定され、何百ものテクノロジー企業によって使用されており、コードの多くが再利用されることができ、高速な開発サイクルを可能にしています。
インテル® SoC FPGA に実装される UEFI は、2 つのステージで構成されます。
- Pre-Efi 初期化フェーズ (PEI)。このステージでは、プラットフォームを構成し、エンドユーザー・アプリケーションまたは DXE のどちらかを読み込みます。
- ドライバー実行環境 (DXE)。このステージでは、追加の UEFI ドライバーを読み込み、ネットワークやコマンドライン・インターフェイスなどの拡張機能を可能にします。
UEFI ブートローダーでは、DXE 環境を対象とする特別なアプリケーションを実行する機能も提供しています。そのようなアプリケーションは、終了制御が DXE に戻る際に実行できます。
UEFI は、より簡単な開発と導入を可能にする BSD ライセンスで提供されています。
UEFI ソースコードは、GitHub のウェブサイトの UEFI SoC FPGA ページで利用できます。
インテル® Arria® 10 SoC については、UEFI は、U-Boot と同じ開発フローを可能にする SoC EDS により提供されます。
ATF
ARM Trusted Firmware (ATF) は、ARMv8-a 向けのセキュア・ワールド・ソフトウェアのリファレンス実装であり、Trusted Board Boot Requirements (TBBR) や セキュア・モニター・コールなどのさまざまな ARM インターフェイス規格を実装しています。
ATF は、BSD ライセンスに基づいて共同で開発され、簡単な開発と導入を可能にします。
ATF は小型で、First Stage Bootloader (FSBL) として設計されています。これは、UEFI と共に使用され、PXE、続いて DXE を読み込みますが、例えばシンプルなベアメタル・アプリケーションを読み込むことにも使用できます。
ATF のインテル® SoC FPGA ポート向けのソースコードには、https://github.com/Intel FPGA-opensource/arm-trusted-firmware でアクセスできます。
4. スタートガイド
U-Boot スタートガイド
U-Boot を開始するために、次のリソースが利用可能です。
- Cyclone® V プリローダーの生成とコンパイル
- Arria® 10 U-Boot の生成とコンパイル
MPL スタートガイド
MPL は、SoC EDS の一部として提供され、<SoC EDS Installation Folder>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz ファイル内のプロジェクト・アーカイブにあります。アーカイブには、インテル® Arria® 10 SoC、Arria® V SoC、Cyclone® V SoC の詳細な使用情報を含む README.txt というファイルが含まれています。
UEFI スタートガイド
UEFI を開始するために、次のリソースが利用可能です。
- インテル® Arria® 10 SoC UEFI スタートガイド
- インテル® Arria® 10 SoC UEFI ブートローダー・ユーザーガイド
- インテル® Stratix® 10 SoC UEFI ブートローダー・ユーザーガイド
ソースコード
ソースコードは、次のウェブサイトから入手できます。
- GitHub 上のインテル® SoC FPGA U-Boot
- 公式 Denx U-Boot ソースコード
- GitHub 上のインテル® SoC FPGA UEFI
- GitHub 上の ARM Trusted Firmware
- Cyclone® V 向け SoC EDS、Arria® V、Arria® 10 U-Boot ソースコード、および Arria® 10 UEFI ソースコード。ソースコードは、bsp-editor ツールを使用することにより生成されます。詳細については、SoC EDS ユーザーガイド、「ブートツールのユーザーガイド」の章を参照してください。
- SoC EDS for S10 SoC U-Boot のソースコードは、<SoC EDS Installation Folder>/embedded/host_tools/Intel FPGA/bootloaders/stratix10/u-boot/uboot-socfpga.tar.gz ファイルにあります。
- SoC EDS for MPL ソースコードは、<SoC EDS Installation Folder>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz ファイルにあります。