はじめに
Altera®(Intel®)SoC FPGA 向け U-Boot のブリッジ開放コマンドは、これを実行することで、FPGA のコンフィグレーション後に HPS-FPGA 間のブリッジを開放(有効)にします。
U-Boot の ブリッジ開放コマンドは、U-Boot のバージョンにより異なる種類が存在します。
この記事では、それらの違いについて説明します。
1. U-Boot の SoC FPGA ブリッジ開放コマンドの変遷
-
u-boot-socfpga_v2013.01.01 時代からは、Altera® で定義されたカスタム命令として、
run bridge_enable_handoff コマンドがありました。
-
u-boot-socfpga_v2014.10_arria10_bringup バージョンからは、Arria® 10 SoC 用として、
fpgabr 1 コマンドが追加されました。
-
u-boot-socfpga_v2017.09 バージョン以降(現在の最新は u-boot-socfpga_v2019.04)では、上記2つの古いコマンドは実装されていません。
代わりに、ブリッジを開放にする新しいコマンドとして、bridge enable が採用されています。
【表 1】 u-boot-socfpga バージョン別のブリッジ開放コマンド
参考: U-Boot ソースコードの入手先
- U-Boot のソースコードは、DENX Software Engineering の Web サイトから公式(オリジナル)のものを入手するか、 GitHub の altera-opensource/u-boot-socfpga から「スナップショット」をダウンロードすることができます。
参考資料:Das U-Boot(DENX Software Engineering)
参考資料:altera-opensource/u-boot-socfpga
2. 新しい u-boot-socfpga_v2019.04 でのブリッジ開放コマンド
2-1. bridge コマンド
u-boot-socfpga_v2019.04 には、以下のような bridge コマンドが含まれています。
# bridge enable (ブリッジ開放)
# bridge disable (ブリッジ閉鎖)
【図 1】 bridge コマンドの help 表示
2-2. u-boot-socfpga_v2019.04 でのブリッジ初期状態を確認してみる
u-boot-socfpga_v2019.04 と Linux を含む SD カードを用意して、Cyclone® V SoC 開発キットで起動させます。
Linux に root でログインして、以下の cat コマンドを実行することで、ブリッジ名、ブリッジ状態が確認できます。
# cat /sys/class/fpga_bridge/br*/name ← ブリッジ名を確認
# cat /sys/class/fpga_bridge/br*/state ← ブリッジの状態を確認
【図 2】 u-boot-socfpga_v2019.04 でのブリッジ・デフォルト設定
2-3. 手動でブリッジを開放(bridge enable)に設定する
U-Boot のプロンプトから、bridge enable コマンドを実行して、手動でブリッジを開放に設定します。設定後 Linux を起動して cat コマンドでブリッジが開放されていることを確認します。
【図 3】 u-boot-socfpga_v2019.04 で手動でブリッジを開放設定する
3. ブリッジ開放のための U-Boot 環境変数(env)設定方法
3-1. デフォルトの U-Boot 環境変数を確認する
U-Boot の printenv -a コマンドにより、デフォルトの U-Boot 環境変数を確認します。
【図 4】 デフォルトの U-Boot 環境変数を確認する
3-2. U-Boot 環境変数にブリッジ開放(bridge enable)設定を追加する
U-Boot の bootcmd 環境変数に、bridge enable コマンドを追加します。
【図 5】 U-Boot の bootcmd 環境変数に bridge enable コマンドを追加する
3-3. ブリッジ開放設定が環境変数に保存されていることを確認する
上記【図 5】で設定した内容が有効になっていることを確認します。
【図 6】 ブリッジ開放設定が環境変数に保存されていることを確認する
4. u-boot-socfpga バージョン別のコマンド、環境変数比較
4-1. コマンドの比較(help コマンドによる表示)
【表 2】のように、u-boot-socfpga のバージョンによって使用できるコマンド が異なります。
【表 2】 u-boot-socfpga バージョン別のコマンド比較
4-2. 環境変数の比較
【表 3】のように、u-boot-socfpga のバージョンによって登録されている環境変数が異なります。
【表 3】 u-boot-socfpga バージョン別の環境変数比較
4-3. SD カード内容の比較
u-boot-socfpga バージョン別のブリッジ開放方法の違いを下図に示します。
v2013.01.01 の U-Boot では、u-boot-scr スクリプトファイル内から、run bridge_enable_handoff を実行してブリッジを開放しています。
v2014.10_arria10_bringup では、【表 3】のように環境変数内に fpgabr 1 コマンドを設定してブリッジを開放しています。
v2019.04 も同様に、【図 5】のように環境変数内に bridge enable コマンドを設定してブリッジを開放する形になります。
【図 7】 u-boot-socfpga バージョン別のブリッジ開放方法の違い
関連記事へのリンク
- ブートローダー、U-Boot に関連して、以下の記事も参考にしてください:
参考: SoC EDS v19.1 std / v19.3 pro 以降のブートローダー生成フロー(Cyclone® V SoC / Arria® V SoC 編)
参考: SoC EDS v19.1 std / v19.3 pro 以降のブートローダー生成フロー(Arria® 10 SoC 編)
参考: SoC EDS v19.1 std / v19.3 pro 以降のブートローダー生成フロー(付録:Linux バイナリーのビルド)