読者です 読者をやめる 読者になる 読者になる

zynqでlinuxをブートするために必要なファイルは何か

FPGA zynq

はじめに

zyboやzedboardに載ったzynq上でlinuxを動かす際に必要なファイルについて,各ファイルがどんな意味を持つのか簡単にまとめていこうと思います。

zynqでlinuxを動かす

zynqでlinuxを動かす方法についてはいろいろなサイトで紹介されているのでそちらを参考にしてください。
1. Zynq LinuxからFPGAを利用するって? – yuki-sato.com
zybo でlinux - ippeiの日記

必要なファイルについて

zynqでlinuxを動かすためには,
・boot.bin
・devicetree.dtb
・uimage
・uramdisk.image.gz
の4つが最低限必要なようです。
今回はこれらの4つをSDカードに入れて,zynq上でlinuxを起動するとします。

ブートプロセス

zynqをSDカードからのブートモードにした場合,まずPS側でSDカードを読み込みboot.binを探すようです。boot.binにはSDKで作成したFSBL(First Stage Boot Loader)とvivadoやISEなどで作成したbitstream,ブートローダu-boot.elf入っています。PS側でFSBLを読み込み,その後PS側がPL側をコンフィギュレーションします。

次にu-boot.elfが読み込まれ,Linuxカーネルイメージ,デバイスツリーが読み込まれます。

バイスツリー(devicetree.dtb)

devicetree.debはARM Linux向けにデバイスのアドレスやクロックなどの設定が書かれたファイルのことです。AXIバスを通して自作のデバイスを接続した場合にはアドレスやデバイス名を書き加える必要があります。CPUのクロックなども設定することができます。

Linuxカーネル(uimage)

uimageはLinuxカーネルで,第2ステージでu-bootが起動したあとに起動します。

RAMディスク(uramdisk.image.gz)

Linuxカーネル起動後,uramdisk.image.gzがRAMに展開されマウントされます。uramdiskにはLinuxファイルシステムが入っています。