« 真贋判定装置子基板の設計再開 | トップページ | JTAG出力基板 »

2022.11.25

ZCU111でUbuntu Linuxの起動に成功

大学の研究室で使っているZCU111用にLinuxをコンパイルし、Ubuntu Linuxを起動させることができました。

Zcu111linux

といっても、これはそんなに難しくはありませんでした。

なぜかというと、XILINXはXILINXのボード用のボード定義ファイルを用意してくれているからです。

ご存じのとおり、Linuxカーネルの構築は

make ARCH=arm64 xilinx_zynqmp_defconfig

でUltraScale用のデフォルトのコンフィグを作り、ネットワークの有効化などを適当に行ったのち、

make ARCH=arm64
mkimage -A arm64 -O linux -C none -T kernel -a 0x3000000 -e 0x3000000 -d arch/arm64/boot/Image uImage

を行います。

カーネルの構築で一番わけがわからないのはデバイスツリーだと思いますが、さすがはXILINXの標準ボードだけあって、linux-xlnx/arch/arm64/boot/dts/xilinxにデバイスツリー・ソースも入っていて一緒にビルドされます。そのディレクトリには出来上がったzynqmp-zcu111-revA.dtbがあるので、適当に改名してSDカードの第一パーティションに入れておけばよいのです。

標準ボードだとデバイスツリーがあらかじめ用意されているというのが、非常にありがたいことです。

 

なお、SDカードの第一パーティションはFSBLが入るためのFAT32にして、第二パーティションにEXT4でLinuxのファイルシステムを入れるというやり方をするのであれば、デバイスツリーのchosenを、

chosen {
bootargs = "console=ttyPS0,115200, root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1 earlycon";
stdout-path = "serial0:115200n8";
};

にします。

 

また、SDカードの第一パーティションに存在する謎のファイルboot.scrとboot.scriptですが、boot.scriptをコンパイルするとboot.scrになります。

これは作らなくても構いません。従来はuEnv.txtでやっていたことをif文やwhile文や環境変数を使って、さまざまな起動メディアに柔軟に対応できるようにしようとした結果boot.scrになったようです。

SDカードから起動すると決めているのであれば、従来どおりのuEnv.txtを置いておけば全く問題ありません。

つまり、ZYNQ UltraScale+であっても、SDカードの第一パーティションには、

  • boot.bin
  • bl31.elf
  • u-boot.elf
  • devicetree.dtb
  • uImage

があればよいのです。増えたのはbl31.elfだけです。

|

« 真贋判定装置子基板の設計再開 | トップページ | JTAG出力基板 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 真贋判定装置子基板の設計再開 | トップページ | JTAG出力基板 »