【思わぬ落とし穴も?!】Kria™ K26 SOMおよびスターターキットの起動から操作可能になるまでの流れを紹介!
今回はAIではなく、主旨を少し変え、
Kria™ K26 SOMおよびスターターキットの起動から操作可能になるまでの流れを紹介します。
Kria™ KV260 ビジョン AI スターター キットとKria™ KR260 ロボティクス スターター キット(以下Kria™ K26 スターター キットと呼びます)は、AMD社が提供している適応型SoCを搭載したKria™ K26 システム オン モジュール(SOM)の評価ボードになります。
- ※
- Kria™ KV260 ビジョン AI スターター キットに関する詳細は こちら
- ※
- Kria™ KR260 ロボティクス スターター キットに関する詳細は こちら
- ※
- Kria™ K26 システム オン モジュール(SOM)に関する詳細は こちら
Kria™ K26 スターター キットをはじめ、適応型SoCではスイッチを入れてから操作ができるようになるまで、どのような工程を踏んでいるのでしょうか?
今回は、Kria™ K26 スターター キットに加え、AMD社が提供する適応型SoCの起動の流れもあわせて紹介します。
特にKria™ K26 スターター キットは起動の流れを把握できていないまま操作を誤ると、二度とブートができなくなってしまうことも・・?!
TEPPE-AIはソフトウェア専門になりますが、今回頑張って勉強して調査しましたので、是非最後まで見てください!温かい目で見てもらえると嬉しいです(笑)
それでは参りましょう!
目次
組み込みデバイス(Linux)の起動の流れ
AMD社製適応型SoCでは、OSは主にLinuxが採用されています。
適応型SoCの起動の流れを理解する前に、組み込みデバイス上でLinuxが起動する流れについて概要を把握しておきたいと思います。
主な登場人物としては、以下の通りです。
- 1stブートローダー:2ndブートローダーの読み込み
- 2ndブートローダー:Linuxカーネルの読み込み
- Linuxカーネル:CPU・メモリリソースの管理、デバイスドライバの読み込み、初期化
- デバイスツリー:デバイスの構成や接続関係を階層的に表現したファイル
- ルートファイルシステム:initシステムやLinuxのファイル格納構造および管理
スイッチを入れてからLinuxが起動するまでの流れは以下の通りです。
- ①
- 1stブートローダーが起動し、ストレージ(今回で言うとSD)から2ndブートローダーを読み込み、実行準備。
- ②
- 2ndブートローダーが起動し、Linuxカーネルを読み込み、実行準備。
- ③
- Linuxカーネルが起動し、デバイスツリー情報を読み取り、デバイスドライバのロード、ルートファイルシステム内にあるinitシステム(systemedなど)を起動。
- ④
- systemed起動し、サービスの設定や起動を行ったのち、Linuxが起動。
ディストリビューションなどで少々異なる部分があると思いますが、大枠としては上記のような流れとなります。
認識したうえで、AMD社製適応型SoCではどのような起動の流れになるのか見てみましょう。
AMD社製 適応型SoCの起動の流れ
今回は、Zynq® UltraScale+™ MPSoC(以下、MPSoC)を例に紹介していきます。
なんと!実は弊社TECHブログにて有識者の方が詳細を記事にしています!
※記事 Zynq® UltraScale+™ MPSoC PetaLinux®でQSPI起動データの作成(前編)
ここでは少しかみ砕いて、先ほどの組み込みデバイスでのLinuxの起動の流れと比較しながら紹介します。
主な登場人物としては、以下の通りです。
- Platform Management Firmware:pmufw.elf
- ARM Trusted Firmware:bl31.elf
- Programmable Logic bitstream:system.bit
- ブートローダー(1st/2nd):fsbl.elf / uboot.elf
- デバイスツリー:system.dtb
- Linuxカーネル:image.ub
- ルートファイルシステム:rootfs
組み込みLinuxでの相違点は赤字の箇所です!それぞれ解説します。
・Platform Management Firmware(以下、PMU)
電源管理や周辺デバイスの初期化、電源シーケンス制御などの低レベルのシステム管理タスクを実行します。
1stブートローダーにより読み込まれ、実行します。
・ARM Trusted Firmware(以下、ATF)
ARM TrustZoneセキュリティ拡張をサポートする、セキュアなブートプロセスとセキュリティ関連のタスクを担当します。※いわゆるarmプロセッサの信頼性とセキュリティの強化が目的です。
MPSoCでは、armのCPUが搭載されており、Linuxを実装する上で必須のファイルです。
こちらも1stブートローダーにより読み込まれ、実行します。
・Programmable Logic bitstream(以下、bitstream)
MPSoCのProgrammable Logic部(PL)に配置されるFPGAのビットストリームファイルです。
いわゆる、FPGA上に実装される回路データになります。
こちらも1stブートローダーにより読み込まれ、PL部に実装されます。
MPSoCについて、起動するために必要なファイルの格納先に応じて起動方法の名称が異なります。
主には、以下があります。
- JTAGブート:PCとJTAGケーブルを接続。必要なファイルはPCに格納。主にデバッグが目的。
- SDブート:SDカードに必要なファイルを格納し、スタンドアロンで起動。
- eMMCブート:eMMCに必要なファイルを格納し、スタンドアロンで起動。
- QSPIブート:QSPI-Flashに必要なファイルを格納し、スタンドアロンで起動。
MPSoCの端子でブートモードを選択できます。
ブートの選択については、基板上に実装されているブート切り替えスイッチにて変更することが多いです。
今回は、SDブートを例に、電源を入れてから操作可能になるまでの流れを示すと、以下の通りになります。
- ①
- 1stブートローダーがSDカードから読み込まれ実行。PMU・ATF・bitstreamを起動し、MPSoCのコンポーネントを初期化。最後に2ndブートローダーを読み込み。
- ②
- 2ndブートローダーが起動し、Linuxカーネルを起動、デバイスツリー情報読み込み、デバイスドライバのロードを実行。
- ③
- Linuxカーネルにて、ルートファイルシステム内にあるinitシステム(systemedなど)を起動。
- ④
- systemed起動し、サービスの設定や起動を行ったのち、Linuxが起動。
このように、FPGA特有のPL部に搭載される回路データ(bitstream)の格納など、デバイス特有の違いがあり、今回を機に改めてFPGAについて知ることができました。
さあ続いては、同じ適応型SoCである、KV260の起動の流れを見てみましょう。
Kria™ KV260 ビジョン AI スターター キットの起動の流れ
今回ビジョンAI向けであるKria™ KV260 ビジョン AI スターター キットを例に紹介していきます。
起動の流れはMPSoCと変わりませんが、起動に必要なファイルの格納先に大きな違いがあります。
上記のように、「1stブートローダー」「2ndブートローダー」「PMF」「ATF」がKV260上に搭載されているQSPI-Flash上に格納されています!※出荷時点で格納
AMD社製適応型SoCでの中では、上記4つをブートファームウェア(boot.bin)とよんでいます。
※bitstreamは、ブートファームウェアに含まれていません。
起動の流れとしてQSPI-Flash→SDカードの2STEP構成になっており、QSPI-FlashをPrimary Boot Device、SDカードをSecondary Boot Deviceという名称がつけられています。
AMD社公式WEBサイトに詳細が記載されています。※ こちら からどうぞ!
このような構成により、起動関連で修正を行いたいときに、誤った操作をしてしまうと取り返しのつかないことが起きてしまいます。
Kria™ KV260 ビジョン AI スターター キット起動方法に伴う注意点
※確認必須
注意すべき点、結論から申し上げますとQSPI-Flashの上書きです。
QSPI-Flashのほぼロックされていますが、唯一ユーザーにて上書きできる箇所があります。
以下は、AMD社公式WEBサイトにて公開しているブートの概要図です。
QSPI-Flashには2つのブートファームウェア(image AとimageB)が用意されています。
image Aとimage Bが唯一上書き可能な箇所です。
本来、ブートファームウェアをアップデートしたい際に上書きをしますが、こちらを誤って上書きしてしまうと、二度と修復が不可能になり、Kria™ KV260 ビジョン AI スターター キットが起動できなくなります。
上書き用のツール(Boot Image Recovery Tool)がQSPI-Flash上に格納されており、こちらを用いることで正しく上書きが行えます。※詳しくは こちら から!
QSPI-Flashのデータも開示されていないので、上書き用のツール以外での強引な書き換えは控えておきましょう・・・
- ※
- ご注意 これはKria™ K26 スターター キットのみで起きる現象です
別途Kria™ K26 システム オン モジュール(SOM)ではQSPI-Flashには何も格納されていません。
かつeMMCも搭載されているので、本来のMPSoCのように起動シーケンスをユーザーで設定することが可能です。
おわりに
最後まで閲覧いただきありがとうございました!
今回は、AIから離れて、Kria™ K26デバイス周辺を紹介しました。
次回は、AI関連のネタを考えていますので、是非次回も見ていただけると嬉しいです!
それではまた!TEPPE-AIでした~