はじめに
UltraZed-EG スターターキットに Debian GNU/Linux (v2017.3版) を構築する方法について、次の記事で説明しました。
上の記事はビルド方法の説明だけでしたが、実際に動作する環境もあった方が良いかと思い、以下の URL にビルド済みの Boot Loader、Linux Kernel、Debian9-rootfs、デバイスドライバ(fclkcfg)のパッケージを用意しました。
Boot Loader や Linux Kernel のビルドが面倒くさいという方はどうぞ。
概要
- Hardware
- UltraZed-EG-IOCC : Xilinx Zynq UltraScale+ MPSoC Starter Kit by Avnet.
- Boot Loader
- FSBL(First Stage Boot Loader for ZynqMP)
- PMU Firmware(Platform Management Unit Firmware)
- BL31(ARM Trusted Firmware Boot Loader stage 3-1)
- U-Boot v2017.01 (customized)
- Linux Kernel Version v4.9.0
- linux-xlnx tag=xilinx-v2017.3
- Enable Device Tree Overlay with Configuration File System
- Enable FPGA Manager
- Enable FPGA Bridge
- Enable FPGA Reagion
- Debian9(stretch) Root File System
- Installed build-essential
- Installed device-tree-compiler
- Installed ruby ruby-msgpack ruby-serialport
- Installed python python3 msgpack-rpc-python
- Installed u-boot-tools
- FPGA Device Drivers and Services
インストール
ダウンロード
github から次のようにダウンロードしてください。現時点の最新バージョンは v2017.3.0 です。なお、いくつかのイメージファイルはかなり大きいので、Git LFS(Large File Storage)を使っています。お使いの環境に git-lfs がインストールされている必要があります。
shell$ git clone --depth=1 -b v2017.3.0 git://github.com/ikwzm/ZynqMP-FPGA-Linux
shell$ cd ZynqMP-FPGA-Linux
shell$ git lfs pull
ファイルの説明
- tareget/UltraZed-EG-IOCC/
- boot/
- boot.bin : Stage 1 Boot Loader
- uEnv.txt : U-Boot environment variables for linux boot
- image-4.9.0-xlnx-v2017.3-fpga : Linux Kernel Image (use Git LFS)
- devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dtb : Linux Device Tree Blob
- devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts : Linux Device Tree Source
- boot/
- debian9-rootfs-vanilla.tgz : Debian9 Root File System (use Git LFS)
- linux-image-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-2_arm64.deb : Linux Image Package (use Git LFS)
- linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-2_arm64.deb : Linux Headers Package (use Git LFS)
- fclkcfg-4.9.0-xlnx-v2017.3-zynqmp-fpga_1.0.0-1_arm64.deb : fclkcfg Device Driver and Services Package
- udmabuf-4.9.0-xlnx-v2017.3-zynqmp-fpga_1.1.0-1_arm64.deb : udmabuf Device Driver and Services Package
SD-Card のフォーマット
- SD-Card のパーティション1を VFAT File System でファイルシステムを作ります。
- SD-Card のパーティション2を ext4 File System でファイルシステムを作ります。
フォーマット方法の詳細は省略します。
SD-Card への書き込み
- SD-Card のパーティション1(下の例では/dev/sdc1)に target/UltraZed-EG-IOCC/boot/ 下のファイルをコピーします。
- SD-Card のパーティション2(下の例では/dev/sdc2)に debian9-rootfs-vanilla.tgz の中身を展開します。
展開したルートファイルシステムの home/fpga にデバイスドライバの Debian パッケージをあらかじめコピーしておくと良いでしょう。後から network 経由でコピーしてもかまいません。
shell# mount /dev/sdc1 /mnt/usb1
shell# mount /dev/sdc2 /mnt/usb2
shell# cp target/UltraZed-EG-IOCC/boot/* /mnt/usb1
shell# tar xfz debian9-rootfs-vanilla.tgz -C /mnt/usb2
shell# mkdir /mnt/usb2/home/fpga/debian
shell# cp linux-image-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-1_arm64.deb /mnt/usb2/home/fpga/debian
shell# cp linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-1_arm64.deb /mnt/usb2/home/fpga/debian
shell# cp fclkcfg-4.9.0-xlnx-v2017.3-zynqmp-fpga_0.0.1-1_arm64.deb /mnt/usb2/home/fpga/debian
shell# cp udmabuf-4.9.0-xlnx-v2017.3-zynqmp-fpga_0.0.2-1_arm64.deb /mnt/usb2/home/fpga/debian
shell# umount mnt/usb1
shell# umount mnt/usb2
デバイスドライバ パッケージのインストール
UltraZed-EG-IOCC をブートして root でログイン
root'password is "admin".
debian-fpga login: root
Password:
root@debian-fpga:~#
Linux Image Package のインストール
dpkg を使って linux-image-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-2_arm64.deb をインストールします。
root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:~# dpkg -i linux-image-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-2_arm64.deb
Selecting previously unselected package linux-image-4.9.0-xlnx-v2017.3-zynqmp-fpga.
(Reading database ... 24759 files and directories currently installed.)
Preparing to unpack linux-image-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-2_arm64.deb ...
Unpacking linux-image-4.9.0-xlnx-v2017.3-zynqmp-fpga (4.9.0-xlnx-v2017.3-zynqmp-fpga-2) ...
Setting up linux-image-4.9.0-xlnx-v2017.3-zynqmp-fpga (4.9.0-xlnx-v2017.3-zynqmp-fpga-2) ...
Linux Header Package のインストール
dpkg を使って linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-2_arm64.deb をインストールします。
root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:~# dpkg -i linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-2_arm64.deb
Selecting previously unselected package linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga.
(Reading database ... 24872 files and directories currently installed.)
Preparing to unpack linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga_4.9.0-xlnx-v2017.3-zynqmp-fpga-2_arm64.deb ...
Unpacking linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga (4.9.0-xlnx-v2017.3-zynqmp-fpga-2) ...
Setting up linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga (4.9.0-xlnx-v2017.3-zynqmp-fpga-2) ...
make: Entering directory '/usr/src/linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga'
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/bin2c
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --silentoldconfig Kconfig
HOSTCC scripts/dtc/dtc.o
HOSTCC scripts/dtc/flattree.o
HOSTCC scripts/dtc/fstree.o
HOSTCC scripts/dtc/data.o
HOSTCC scripts/dtc/livetree.o
HOSTCC scripts/dtc/treesource.o
HOSTCC scripts/dtc/srcpos.o
HOSTCC scripts/dtc/checks.o
HOSTCC scripts/dtc/util.o
HOSTCC scripts/dtc/dtc-lexer.lex.o
HOSTCC scripts/dtc/dtc-parser.tab.o
HOSTLD scripts/dtc/dtc
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/modpost.o
CC scripts/mod/devicetable-offsets.s
GEN scripts/mod/devicetable-offsets.h
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/sumversion.o
HOSTLD scripts/mod/modpost
HOSTCC scripts/kallsyms
HOSTCC scripts/conmakehash
HOSTCC scripts/sortextable
make: Leaving directory '/usr/src/linux-headers-4.9.0-xlnx-v2017.3-zynqmp-fpga'
fclkcfg デバイスドライバ&サービスのインストール
dpkg を使って fclkcfg-4.9.0-xlnx-v2017.3-zynqmp-fpga_1.0.0-1_arm64.deb をインストールします。
root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:~# dpkg -i fclkcfg-4.9.0-xlnx-v2017.3-zynqmp-fpga_1.0.0-1_arm64.deb
Selecting previously unselected package fclkcfg-4.9.0-xlnx-v2017.3-zynqmp-fpga.
(Reading database ... 43515 files and directories currently installed.)
Preparing to unpack fclkcfg-4.9.0-xlnx-v2017.3-zynqmp-fpga_1.0.0-1_arm64.deb ...
Unpacking fclkcfg-4.9.0-xlnx-v2017.3-zynqmp-fpga (1.0.0-1) ...
Setting up fclkcfg-4.9.0-xlnx-v2017.3-zynqmp-fpga (1.0.0-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/fpga-clock.service → /etc/systemd/system/fpga-clock.service.
udmabuf デバイスドライバ&サービスのインストール
dpkg を使って udmabuf-4.9.0-xlnx-v2017.3-zynqmp-fpga_1.1.0-1_arm64.deb をインストールします。
root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:~# dpkg -i udmabuf-4.9.0-xlnx-v2017.3-zynqmp-fpga_0.0.2-1_arm64.deb
Selecting previously unselected package udmabuf-4.9.0-xlnx-v2017.3-zynqmp-fpga.
(Reading database ... 43522 files and directories currently installed.)
Preparing to unpack udmabuf-4.9.0-xlnx-v2017.3-zynqmp-fpga_1.1.0-1_arm64.deb ...
Unpacking udmabuf-4.9.0-xlnx-v2017.3-zynqmp-fpga (1.1.0-1) ...
Setting up udmabuf-4.9.0-xlnx-v2017.3-zynqmp-fpga (1.1.0-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/udmabuf.service → /etc/systemd/system/udmabuf.service.