インテル® Stratix® 10 SoC FPGAブート・ユーザーガイド

ID 683847
日付 11/10/2021
Public
ドキュメント目次

6.2. LinuxからのFPGAファブリックのコンフィグレーション

注: この機能は、Linux*カーネルのバージョン4.9 LTSI以降でサポートされています。この機能に関する最新情報については、RocketBoards.orgおよび インテル® パブリックgitのリポジトリーを参照してください。

インテルStratix 10 SoC FPGA用のLinux*カーネルを使用すると、OS内からFPGAのプログラミングをイネーブルできます。

FPGAのリコンフィグレーションをカーネルレベルでテストする場合は、カーネルのソースコードに対して次の変更を加えます。
  1. arch/arm64/boot/dts/altera/Makefile のファイル内で、2番目の .dtb ファイルを追加します。例えば、
    dtb-$(CONFIG_ARCH_STRATIX10) += socfpga_stratix10_socdk.dtb
    dtb-$(CONFIG_ARCH_STRATIX10) += overlay.dtb
    
  2. 以下に示すように、新しい overlay.dts ファイルを作成し、ファイルにRBFファイルのオーバーレイ情報を追加します。
    /dts-v1/;
    /plugin/;
    / {
    	fragment@0 {
    		target-path = "/soc/base_fpga_region";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		__overlay__ {
    			#address-cells = <1>;
    			#size-cells = <1>;
    
    			firmware-name = "overlay.dtb";
    			config-complete-timeout-us = <30000000>;
    		};
    	};
    };
    

この機能のためにLinux*カーネルをビルドすると、ビルドによって2つの *.dtb ファイルが生成されます。

表 15.  結果のファイル
デバイス・ツリー・ファイル 説明
socfpga_stratix10_socdk.dtb デフォルトの *.dtb ファイル。システムをブートするためにカーネルイメージで使用されます。
overlay.dtb *.dtb ファイル。OSでFPGAコンフィグレーションをトリガーするために使用されます。

コンパイル出力フォルダーで、FPGAコンフィグレーション・ファイル (*.rbf) の名前を、overlay.rbf という名前に変更します。次に、FPGAコンフィグレーション・ファイル (*.rbf) および overlay.dtb ファイルの両方をRoot File Systemの次の位置にコピーします。

$ mkdir <your_ROOTFS>/lib/firmware

$ cp overlay.dtb <your_ROOTFS>/lib/firmware/

$ cp overlay.rbf <your_ROOTFS>/lib/firmware/

上記の変更により、システム上にオーバーレイを適用することで、Linux*でFPGAをプログラミングできます。Linux*をブートし、ルート権限でログインした後、次のコマンドを使用してFPGAコンフィグレーションを開始します。

# mkdir /sys/kernel/config/device-tree/overlays/0

# echo overlay.dtb >

/sys/kernel/config/device-tree/overlays/0/path/
オーバーレイを再適用する場合は、最初に既存のオーバーレイを削除してから、前の手順を再実行する必要があります。
# rmdir /sys/kernel/config/device-tree/overlays/0

# mkdir /sys/kernel/config/device-tree/overlays/0

# echo overlay.dtb >/sys/kernel/config/device-tree/overlays/0/path

次のデザイン例、 インテル® Stratix® 10 SoC HPS First Single QSPI Flash Boot で示しているのは、Linuxデバイス・ツリー・オーバーレイを使用してFPGAファブリックをコンフィグレーションする方法です。