1. はじめに
この記事では Arm® Trusted Firmware(以下 ATF)を用いることで、GPL ライセンスを回避することが可能なことと、ATF の環境構築フローについてご紹介します。
前提として、Agilex™ 5 FPGA の HPS 起動フローとしては U-Boot と ATF を用いたフローが存在します。
図 1 と 図 2 はそれぞれ Linux における U-Boot と ATF の起動フローを表しています。
U-Boot を用いたブートフロー
【図 1】U-Boot を用いたブートフローの例 参考: Hard Processor System Booting User Guide: Agilex™ 5 SoCs
ATF を用いたブートフロー
【図 2】ATF を用いたブートフローの例 参考: Hard Processor System Booting User Guide: Agilex™ 5 SoCs
U-Boot は GPL ライセンスとなるため、必要に応じてソースコードを開示しなければならない義務が発生します。一方、ATF の場合は BSD ライセンスとなるため、GPL ライセンスを回避することができます。
GPL ライセンスの回避を検討される際には、この記事をご参考にしていただければ幸いです。
2. ATF のライセンス
ATF のソースは下記 Github から取得することができます。 参考:altera opensource - Arm Trusted Firmware
注記:上記紹介させていただいた ATF が取得できる github は、現在最新のリビジョンとなっています。その為ご確認される際にはその時点での最新の内容をご参照ください。
下記リンクのライセンスに関する記載では、ATF は BSD ライセンスとなっている旨の記載があります。 参考:altera opensource - Arm Trusted Firmware - license.rst
メモ:下記は license.rst ファイルの抜粋です。
| The software is provided under a BSD-3-Clause license (below). Contributions to this project are accepted under the same license with developer sign-off as described in the :ref:`Contributor's Guide`. |
注記:BSD-3-Clause や GPL など、OSS ライセンスの条項や取り扱いについては、お客様にてご判断ください。
3. ATF 環境作成フロー紹介
下記メーカーの資料に ATF を用いたベアメタル環境(Hello World)作成フローが紹介されています。
参考資料: Altera FPGA Developer Site - Baremetal Hello World Example
下記は参考資料の ATF をビルドしている箇所を抜粋しコメントをつけております。
# ATF のソースを取得します。
git clone -b QPDS24.3_REL_GSRD_PR https://github.com/altera-opensource/arm-trusted-firmware atf
# fiptool を作成します。
make -C atf fiptool
# ATF をビルドします。
make -C atf bl2 bl31 PLAT=agilex5 DEBUG=1 SOCFPGA_BOOT_SOURCE_QSPI=1 LOG_LEVEL=50こちらのコマンドを実行すると下記ファイルが生成されます。
./arm-trusted-firmware-qspi/build/agilex5/release/bl2.bin
./arm-trusted-firmware-qspi/build/agilex5/release/bl31.bin
./fiptool
これらのファイルは下図 Build Flow の赤枠で示した箇所で生成および使用されます。
【図 3】Hello World ベアメタルサンプルの Build Flow参考:Altera FPGA Developer Site - Baremetal Hello World Example
メモ:bl2.bin ファイルと bl31.bin ファイルの補足
bl2.bin ファイル : First Stage Bootloader(FSBL) として sof/jic ファイルに内包します。
bl31.bin ファイル : Second Stage Bootloader(SSBL) としてフラッシュメモリ(今回の参考資料の場合は QSPI)に格納します。
⇒bl2.bin ファイルと bl31.bin ファイルを書き込むことで、ATF のブートを行うことができます。
ブート確認まで行いたい場合は、参考資料 の手順を参照して対応ください。bl2, bl31 に続けて Hello World のベアメタルアプリケーションを起動する形で動作確認いただけます。 尚、ブート用の Flash イメージの生成には fiptool と呼ばれる ATF ソースツリーに含まれるユーティリティーが使用できます。
メモ:fiptool の補足
fiptool は Firmware Image Package(FIP) ファイルを操作するための Python ユーティリティです。参考資料では ベアメタルアプリのバイナリ(hello_world.bin ファイル)と bl31.bin ファイルをパッケージングし一つのファイルにする用途で fiptool を作成しています。
4. 注意点
ATF を使用することで GPL ライセンスを避けることはできますが、U-Boot で使用できたコンソールは使用できなくなります。
U-Boot のコンソールはデバッグの際に非常に便利な機能なので、コンソールが使用できなくなることについては予めご認識ください。
5. おわりに
ATF を使用することで GPL ライセンスを避けることができることと、ATF のビルドフローについてご紹介しました。
ATF を使用することでコンソールが使用できなくなる注意点もありますが、GPL ライセンスを避けたい場合には ATF の使用もご検討いただければと思います。