概要
AMDのKria KR260 Robotics Starter Kitは、Kria K26 SOMを搭載するFPGAボードのキットです。 産業ロボットをはじめとするリアルタイム処理に関連した機能に加え、10GbpsのSFP+ポートも搭載している点が魅力的です。
筆者はこのKR260キットを昨年10月にMouserから購入してから放置していました。 いい加減この積みKriaを使い始めるべく、そのファームウェアをアップデートします。
作業
基本的な内容はAMDのGetting StartedおよびWikiに準じます。
電源投入
まずは火入れです。 起動中の様子がわかるように、PCとKR260を付属のUSBケーブルで接続し、PC側のシリアルコンソールを115200BAUDで待機させます。 また、KR260の4つあるRJ45ポートのうち、右上のポートにLANケーブルを接続し、ネットワークアクセスができる状態にします。 ここで、念のため、Micro SDは外しておきます。 そして電源ケーブルを接続します。
すると、Zynq MPのFSBLが起動し、シリアルコンソールにログが表示されます。
Xilinx Zynq MP First Stage Boot Loader Release 2022.1 Jun 3 2022 - 09:06:13 MultiBootOffset: 0x40 Reset Mode : System Reset Platform: Silicon (4.0), Running on A53-0 (64-bit) Processor, Device Name: XCZUUNKNEG QSPI 32 bit Boot Mode FlashID=0x20 0xBB 0x20 Pr▒NOTICE: BL31: v2.6(release):145c616 NOTICE: BL31: Built : 09:08:18, Jun 3 2022 U-Boot 2022.01-g14ce5558-dirty (Jun 03 2022 - 03:10:32 -0600), Build: jenkins-BUILDS-2022.1-som_qspi_generation-12 CPU: ZynqMP Silicon: v3 Detected name: zynqmp-smk-k26-xcl2g-rev1-sck-kr-g-rev1 Model: ZynqMP SMK-K26 Rev1/B/A Board: Xilinx ZynqMP DRAM: 4 GiB PMUFW: v1.1 ...
なんか文字化けしてますが、気にせず続けます。 また、途中でPXEブートを試みていますが、PXEに非対応の環境では失敗します。
Micro SDを外した状態では、FSBLのコンソールが表示されます。
TFTP server died; starting again libfdt fdt_check_header(): FDT_ERR_BADMAGIC Found 0 disks No EFI system partition tpm_tis_spi_probe: missing reset GPIO DFU alt info setting: done SF: Detected mt25qu512a with page size 256 Bytes, erase size 64 KiB, total 64 MiB No UEFI binary known at 0x18000000 ZynqMP> 82;126R
無事に起動したようです。
Ubuntu 22.04のインストール
インストールといっても、ビルド済みのOSイメージをMicro SDに焼くだけです。
ダウンロードページからK26 SoM用のイメージをダウンロードして、お好みのツールでMicro SDに書き込みます。
ファイルはXZで圧縮されているためunxz
コマンドなどで事前に展開しておき、その後書き込みます。
筆者はGetting Startedに倣ってbalenaEtcherを利用してMicro SDに書き込みました。
※balenaEtcherは圧縮ファイルを読んでフラッシュメモリに書き込むことができるようですが、筆者の環境ではエラーが出たため、おとなしく展開してから書き込みました。
Ubuntuのイメージを書き込めたら、一旦KR260の電源を切り、Micro SDを挿入して、再度電源を入れます。
Ubuntu起動ウェイ pic.twitter.com/Je87Cmq6VM
— Y.M.D オフライン (@YMD_Glasses) July 12, 2024
ユーザ名、パスワードともにubuntu
と入力してログインします。
新しくパスワードを設定するよう求められるので、適切に設定します。
そうして、やっとログインが完了します。
ファームウェアのアップデート
Wikiの表から最新のファームウェア (Yocto版) をダウンロードします。
筆者はK26 Boot FW 1.02
をダウンロードしました。
なお、リンクではAMD/Xilinxのログインページへと飛ぶため、wget
などで直接ダウンロードできない点に注意しましょう。
ダウンロードしたら、SCPなどでKR26にそのファイルを転送します。 K26 SoM向けUbuntuイメージにはあらかじめSSHサーバがインストールされており、Ubuntuの起動直後からSSHでKR26へのアクセスが可能です。 (今後を見据えて、筆者はSSHの公開鍵認証の設定も行っておきました。)
どうやらK26用Ubuntuイメージは最初からMDNSに対応しているようなので、宛先ホスト名をkria.local
することでKR260と通信できるようです。
なお、この手法は同一ネットワーク内に同様のK26が2つ以上存在すると使えないと思われます。
# On the host machine scp .\K26-BootFW-01.02-06140626.bin ubuntu@kria.local:~/
転送が完了したら、xmutil
を用いてファームウェアの書き込みを行います。
$ sudo xmutil bootfw_update -i K26-BootFW-01.02-06140626.bin Marking last booted image as bootable Reading Image file Updating Image B Marking target image as non bootable Writing Image to Image B partition Marking target image as non bootable and requested image Clearing multiboot register value K26-BootFW-01.02-06140626.bin successfully updated to Image B partition
すると、ファームウェアのBスロットに新しいファームウェアがインストールされます。
xmutil
コマンドでこれを確認します。
$ sudo xmutil bootfw_status Image A: Bootable Image B: Non Bootable Requested Boot Image: Image B Last Booted Image: Image A XilinxSom_QspiImage_v2.0_06030313 ImageA Revision Info: XilinxSOM_BootFW_20220603 ImageB Revision Info: K26-BootFW-01.02-06140626
大丈夫ですね。 次回起動時はスロットBのイメージで起動することもわかります。
KR26のボードについているRESETボタンを押下し再起動します。 その後、再度ステータスを見て新しいファームウェアで起動していることを確認します。
$ sudo xmutil bootfw_status Image A: Bootable Image B: Non Bootable Requested Boot Image: Image B Last Booted Image: Image B XilinxSom_QspiImage_v2.0_06030313 ImageA Revision Info: XilinxSOM_BootFW_20220603 ImageB Revision Info: K26-BootFW-01.02-06140626
Last Booted Image
がAからBに変わりました。
大丈夫そうですね。
ところで、ステータスではImage A: Bootable
およびImage B: Non Bootable
となっています。
実は、ファームウェアアップデート直後は新しいファームウェアで起動するものの、それ以降は古いファームウェアにフォールバックしてしまうようです。
そこで、新しいファームウェアで永続的に起動するよう設定します。
※当然ですが、この操作はファームウェアアップデート直後1回目の再起動後に行う必要があります。
$ sudo xmutil bootfw_update -v Marking last booted image as bootable
これで完了のようです。
実際、ステータスと確認するとImage B: Bootable
となっています。
$ sudo xmutil bootfw_status Image A: Bootable Image B: Bootable Requested Boot Image: Image B Last Booted Image: Image B XilinxSom_QspiImage_v2.0_06030313 ImageA Revision Info: XilinxSOM_BootFW_20220603 ImageB Revision Info: K26-BootFW-01.02-06140626
RESETボタンを再度押して再起動し、新しいファームウェアで起動していることを確認できたら完了です。
まとめ
本記事ではKria KR260にUbuntu 22.04をインストールし、ファームウェアのアップデートを行いました。 ファームウェアの永続化などは見落とす可能性が高いため、注意して作業する必要があると感じました。
次回以降はKR260でアプリケーションを動かしてみようと思います。