3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UltraZed/Ultra96/Ultra96-V2/KV260 向け Debian GNU/Linux (v2021.1版) ブートイメージの提供

Last updated at Posted at 2021-11-25

2024年1月15日追記

この記事は2021年11月25日に投稿(2023年5月10日追記)したものであり、古い内容が含まれています。2024年1月15日に以下の記事を投稿しましたので参照してください。

2023年5月10日追記

この記事は2021年11月25日に投稿(2022年7月27日追記)したものであり、古い内容が含まれています。2023年5月10に以下の記事を投稿しましたので参照してください。

2022年7月27日追記

v2021.1.2 以降からは GitHub LFS を使わないようにしました。それに伴い、v2021.1.1 以前よりインストール方法が少し異なっています。ご注意ください。

はじめに

この記事は、UltraZed/Ultra96/Ultra96-V2/KV260 用に Boot Loader(U-Boot等)、Linux Kernel、Debian11.1(bullseye) Root File System を以下の URL に用意したので、そのインストール方法を説明します。Boot Loader や Linux Kernel のビルドが面倒くさいという方はどうぞ。

概要

  • Hardware
    • UltraZed-EG-IOCC : Xilinx Zynq UltraScale+ MPSoC Starter Kit by Avnet.
    • Ultra96 : Xilinx Zynq UltraScale+ MPSoC development board based on the Linaro 96Boards specification.
    • Ultra96-V2 : updates and refreshes the Ultra96 product that was released in 2018.
    • KV260 : Kria KV260 Vision AI Startar Kit.
  • 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 xilinx-v2019.2 (customized)
  • Linux Kernel Version v5.10.0
    • linux-xlnx tag=xilinx-v2021.1
    • Enable Device Tree Overlay with Configuration File System
    • Enable FPGA Manager
    • Enable FPGA Bridge
    • Enable FPGA Reagion
    • Enable ATWILC3000 Linux Driver for Ultra96-V2
    • Enable CIFS (Common Internet File System)
    • Enable Xilinx APF Accelerator driver
    • Enable Xilinx APF DMA engines support
  • Debian11.1(bullseye) 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
    • Installed Other package list -> files/debian11-dpkg-list.txt
  • FPGA Device Drivers and Services

インストール

ダウンロード

v2021.1.2 以降

github から次のようにダウンロードしてください。

shell$ wget https://github.com/ikwzm/ZynqMP-FPGA-Linux/archive/refs/tags/v2021.1.2.tar.gz
shell$ tar xfz v2021.1.2.tar.gz
shell$ cd ZynqMP-FPGA-Linux-2021.1.2

v2021.1.1 以前

注意: このバージョンはなるべく使わないでください。v2021.1.2 をダウンロードしてください。

github から次のようにダウンロードしてください。なお、いくつかのイメージファイルはかなり大きいので、Git LFS(Large File Storage)を使っています。お使いの環境に git-lfs がインストールされている必要があります。また、リポジトリ全部をダウンロードするのはディスク容量と時間 (と私の GitHub LFS Bandwidth) の無駄ですので、--depth=1 を指定してください。

shell$ git clone --depth=1 --branch v2021.1.1 git://github.com/ikwzm/ZynqMP-FPGA-Linux
shell$ cd ZynqMP-FPGA-Linux
shell$ git lfs pull

ファイルの説明

  • target/Kv260/
    • boot/
      • boot.scr : Stage Script file
      • uEnv.txt : U-Boot environment variables for linux boot
      • uEnv-linux-5.10.0-xlnx-v2021.1-zynqmp-fpga.txt : U-Boot environment variables for boot menu
      • devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-kv260-revB.dtb : Linux Device Tree Blob
      • devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-kv260-revB.dts : Linux Device Tree Source
  • target/Ultra96
    • boot/
      • boot.bin : Stage 1 Boot Loader
      • uEnv.txt : U-Boot environment variables for linux boot
      • devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-ultra96.dtb : Linux Device Tree Blob
      • devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-ultra96.dts : Linux Device Tree Source
  • target/Ultra96-V2
    • boot/
      • boot.bin : Stage 1 Boot Loader
      • uEnv.txt : U-Boot environment variables for linux boot
      • devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-ultra96v2.dtb : Linux Device Tree Blob
      • devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-ultra96v2.dts : Linux Device Tree Source
  • target/UltraZed-EG-IOCC/
    • boot/
      • boot.bin : Stage 1 Boot Loader
      • uEnv.txt : U-Boot environment variables for linux boot
      • devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-uz3eg-iocc.dtb : Linux Device Tree Blob
      • devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-uz3eg-iocc.dts : Linux Device Tree Source
  • image-5.10.0-xlnx-v2021.1-zynqmp-fpga : Linux Kernel Image
  • debian11-rootfs-vanilla.tgz.files/ : Debian11 Root File System
    • x00 .. x08 : (splited files)
  • linux-image-5.10.0-xlnx-v2021.1-zynqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb : Linux Image Package (use Git LFS)
  • linux-headers-5.10.0-xlnx-v2021.1-zynqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb : Linux Headers Package (use Git LFS)
  • fclkcfg-5.10.0-xlnx-v2021.1-zynqmp-fpga_1.7.2-1_arm64.deb : fclkcfg(1.7.2) Device Driver and Services Package
  • u-dma-buf-5.10.0-xlnx-v2021.1-zynqmp-fpga_3.2.4-0_arm64.deb : u-dma-buf(3.2.4) Device Driver and Services Package

SD-Card のフォーマット

  1. SD-Card のパーティション1を VFAT File System でファイルシステムを作ります。
  2. SD-Card のパーティション2を ext4 File System でファイルシステムを作ります。

Linux での SD-Card のフォーマット方法は次の URL を参照してください。

SD-Card への書き込み

0. SD-Card のマウント

shell# mount /dev/sdc1 /mnt/usb1
shell# mount /dev/sdc2 /mnt/usb2

1. Boot Partition のコピー

KV260 の場合

SD-Card のパーティション1(下の例では/dev/sdc1)に target/Kv260/boot/ 下のファイルをコピーします。

shell# cp target/Kv260/boot/*                                             /mnt/usb1
shell# cp image-5.10.0-xlnx-v2021.1-zynqmp-fpga                           /mnt/usb1
Ultra96 の場合

SD-Card のパーティション1(下の例では/dev/sdc1)に target/Ultra96/boot/ 下のファイルをコピーします。

shell# cp target/Ultra96/boot/*                                           /mnt/usb1
shell# cp image-5.10.0-xlnx-v2021.1-zynqmp-fpga                           /mnt/usb1
Ultra96-V2 の場合

SD-Card のパーティション1(下の例では/dev/sdc1)に target/Ultra96-V2/boot/ 下のファイルをコピーします。

shell# cp target/Ultra96-V2/boot/*                                        /mnt/usb1
shell# cp image-5.10.0-xlnx-v2021.1-zynqmp-fpga                           /mnt/usb1
UltraZed の場合

SD-Card のパーティション1(下の例では/dev/sdc1)に target/UltraZed-EG-IOCC/boot/ 下のファイルをコピーします。

shell# cp target/UltraZed-EG-IOCC/boot/*                                  /mnt/usb1
shell# cp image-5.10.0-xlnx-v2021.1-zynqmp-fpga                           /mnt/usb1

2. RootFS Partition の生成

SD-Card のパーティション2(下の例では/dev/sdc2)に debian11-rootfs-vanilla.tgz.files の中身を展開します。展開したルートファイルシステムの home/fpga にデバイスドライバの Debian パッケージをあらかじめコピーしておくと良いでしょう。後から network 経由でコピーしてもかまいません。

shell# cat debian11-rootfs-vanilla.tgz.files/* | tar xfz - -C             /mnt/usb2
shell# mkdir                                                              /mnt/usb2/home/fpga/debian
shell# cp linux-image-5.10.0-xlnx-v2021.1-zynqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb   /mnt/usb2/home/fpga/debian
shell# cp linux-headers-5.10.0-xlnx-v2021.1-zynqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb /mnt/usb2/home/fpga/debian
shell# cp fclkcfg-5.10.0-xlnx-v2021.1-zynqmp-fpga_1.7.2-1_arm64.deb       /mnt/usb2/home/fpga/debian
shell# cp u-dma-buf-5.10.0-xlnx-v2021.1-zynqmp-fpga_3.2.4-0_arm64.deb     /mnt/usb2/home/fpga/debian

3. Boot Partition を見えるように fstab を設定

Boot Partition を Linux 側から常時見えるようにしておくと便利です。その場合は、あらかじめ fstab にブートパーティションをマウントするように設定しておくと良いでしょう。すでに fstab には configfs のマウントが設定されているので注意してください。

Ultra96/Ultra96-V2 のブートパーティションは /dev/mmcblk0p1 です。

shell# mkdir /mnt/usb2/mnt/boot
shell# cat <<EOT >> /mnt/usb2/etc/fstab
/dev/mmcblk0p1	/mnt/boot	auto	defaults	0	0
EOT

Kv260/UltraZed のブートパーティションは /dev/mmcblk1p1 です。

shell# mkdir /mnt/usb2/mnt/boot
shell# cat <<EOT >> /mnt/usb2/etc/fstab
/dev/mmcblk1p1	/mnt/boot	auto	defaults	0	0
EOT

余談: このくらいの記述ならあらかじめ debian11-rootfs-vanilla.tgz に書いておけば良いのに、何故わざわざ後で設定するのか疑問に思われるかもしれません。その理由は、debian11-rootfs-vanilla.tgz が Ultra96/Ultra96V2/UltraZed/KV260 と共用だからです。Ultra96/Ultra96-V2 の SD-Card のブートパーティションは /dev/mmcblk0p1 ですが、UltraZed/KV260 の SD-Card のブートパーティションは /dev/mmcblk1p1 です。しかも UltraZed には /dev/mmcblk0p1 というのも存在していて、あらかじめ debian11-rootfs-vanilla.tgz に書いてしまっていると UltraZed では間違えて別のデバイスにアクセスしてしまいます。そこで、面倒ですが後で設定するようにしました。

4. network の設定

Ultra96/Ultra96-V2 は WiFi を通じてネットワークに接続します。あらかじめホスト側で設定ファイルを作って RootFS に書いておくと良いかもしれません。もちろん、後で Ultra96/Ultra96-V2 を起動してそちらで設定してもかまいません。

ここでは SSID を ssssssssに、パスフレーズを ppppppppp に、暗号化したアクセスキーを xxxx とします。

まずは wpa_passphrase に SSID とパスフレーズを入力して暗号化したアクセスキーを作ります。

shell# wpa_passphrase ssssssss ppppppppp
network={
	ssid="ssssssss"
	#psk="ppppppppp"
	psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}
4.1 /etc/network/interfaces.d/wlan0 に直接記述

SSID と暗号化したアクセスキーをネットワーク設定ファイル(/etc/network/interfaces.d/wlan0)に直接記述します。

/mnt/usb2/etc/network/interfaces.d/wlan0

auto  wlan0
iface wlan0 inet dhcp
	wpa-ssid ssssssss
	wpa-psk  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4.2 /etc/wpa_supplicant/wpa_supplicant.conf に記述

ネットワーク設定ファイル(/etc/network/interfaces.d/wlan0)に、次のように、ブート時に wpa_supplicant.conf を読み込んで Wifi を設定するように記述します。

/mnt/usb2/etc/network/interfaces.d/wlan0

auto  wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

SSID と暗号化したアクセスキーをWifi設定ファイル(/etc/wpa_supplicant/wpa_supplicant.conf)に記述します。

/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/run/wpa_supplicant
update_config=1

network={
	ssid="ssssssss"
	psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}

なお、ステルス SSID の場合、スキャンを強制的に行う必要があります。この場合は、/etc/wpa_supplicant/wpa_supplicant.conf に scan_ssid=1 を追加します。

/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/run/wpa_supplicant
update_config=1

network={
	ssid="ssssssss"
	scan_ssid=1
	key_mgmt=WPA-PSK
	psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}

パスフレーズ無し の SSID に接続する場合は、key_mgmt=NONE(NONE は大文字) にすると良いようです。

/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/run/wpa_supplicant
update_config=1

network={
	ssid="ssssssss"
	scan_ssid=1
	key_mgmt=NONE
}

5. SD-Card のアンマウント

shell# umount /mnt/usb1
shell# umount /mnt/usb2

デバイスドライバ パッケージのインストール

Ultra96/Ultra96-V2/UltraZed/KV260 をブートして root でログイン

root'password is "admin".

debian-fpga login: root
Password:
root@debian-fpga:~#

Linux Image Package のインストール

debian11-rootfs-vanilla.tgz にはすでに Linux Image Package(linux-image-5.10.0-xlnx-v2021.1-zynqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb) がインストールされています。ですので、以下の作業は不要ですが、なんらかの事情で再インストールする際の参考にしてください。

root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:/home/fpga/debian# dpkg -i linux-image-5.10.0-xlnx-v2021.1-zynqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb
Selecting previously unselected package linux-image-5.10.0-xlnx-v2021.1-zynqmp-fpga.
(Reading database ... 117342 files and directories currently installed.)
Preparing to unpack linux-image-5.10.0-xlnx-v2021.1-zynqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb ...
Unpacking linux-image-5.10.0-xlnx-v2021.1-zynqmp-fpga (5.10.0-xlnx-v2021.1-zynqmp-fpga-4) ...
Setting up linux-image-5.10.0-xlnx-v2021.1-zynqmp-fpga (5.10.0-xlnx-v2021.1-zynqmp-fpga-4) ...

Linux Header Package のインストール

dpkg を使って linux-headers-5.10.0-xlnx-v2021.1-zynqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb をインストールします。途中で何故か ARM64_MTE と KASAN についてどうするか聞かれますが、かまわず ENTER キーを押してください。

root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:/home/fpga/debian# dpkg -i linux-headers-5.10.0-xlnx-v2021.1-zy
nqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb
Selecting previously unselected package linux-headers-5.10.0-xlnx-v2021.1-zynqmp-fpga.
(Reading database ... 117624 files and directories currently installed.)
Preparing to unpack linux-headers-5.10.0-xlnx-v2021.1-zynqmp-fpga_5.10.0-xlnx-v2021.1-zynqmp-fpga-4_arm64.deb ...
Unpacking linux-headers-5.10.0-xlnx-v2021.1-zynqmp-fpga (5.10.0-xlnx-v2021.1-zynqmp-fpga-4) ...
Setting up linux-headers-5.10.0-xlnx-v2021.1-zynqmp-fpga (5.10.0-xlnx-v2021.1-zynqmp-fpga-4) ...
make: Entering directory '/usr/src/linux-headers-5.10.0-xlnx-v2021.1-zynqmp-fpga'
  SYNC    include/config/auto.conf.cmd
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/conf
*
* Restart config...
*
*
* ARMv8.5 architectural features
*
Branch Target Identification support (ARM64_BTI) [Y/n/?] y
Enable support for E0PD (ARM64_E0PD) [Y/n/?] y
Enable support for random number generation (ARCH_RANDOM) [Y/n/?] y
Memory Tagging Extension support (ARM64_MTE) [Y/n/?] (NEW)
*
* KASAN: runtime memory debugger
*
KASAN: runtime memory debugger (KASAN) [N/y/?] (NEW)
  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
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/sorttable
  HOSTCC  scripts/asn1_compiler
  HOSTCC  scripts/extract-cert
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  MKELF   scripts/mod/elfconfig.h
  CC      scripts/mod/devicetable-offsets.s
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTLD  scripts/mod/modpost
scripts/Makefile.build:414: warning: overriding recipe for target 'modules.order'
Makefile:1405: warning: ignoring old recipe for target 'modules.order'
make: Leaving directory '/usr/src/linux-headers-5.10.0-xlnx-v2021.1-zynqmp-fpga'

fclkcfg デバイスドライバのインストール

dpkg を使って fclkcfg-5.10.0-xlnx-v2021.1-zynqmp-fpga_1.7.2-1_arm64.deb をインストールします。

root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:/home/fpga/debian# dpkg -i fclkcfg-5.10.0-xlnx-v2021.1-zynqmp-fpga_1.7.2-1_arm64.deb
Selecting previously unselected package fclkcfg-5.10.0-xlnx-v2021.1-zynqmp-fpga.
(Reading database ... 134025 files and directories currently installed.)
Preparing to unpack fclkcfg-5.10.0-xlnx-v2021.1-zynqmp-fpga_1.7.2-1_arm64.deb ...
Unpacking fclkcfg-5.10.0-xlnx-v2021.1-zynqmp-fpga (1.7.2-1) ...
Setting up fclkcfg-5.10.0-xlnx-v2021.1-zynqmp-fpga (1.7.2-1) ...

udmabuf デバイスドライバのインストール

dpkg を使って u-dma-buf-5.10.0-xlnx-v2021.1-zynqmp-fpga_3.2.4-0_arm64.deb をインストールします。

root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:/home/fpga/debian# dpkg -i u-dma-buf-5.10.0-xlnx-v2021.1-zynqmp-fpga_3.2.4-0_arm64.deb
Selecting previously unselected package u-dma-buf-5.10.0-xlnx-v2021.1-zynqmp-fpga.
(Reading database ... 134031 files and directories currently installed.)
Preparing to unpack u-dma-buf-5.10.0-xlnx-v2021.1-zynqmp-fpga_3.2.4-0_arm64.deb ...
Unpacking u-dma-buf-5.10.0-xlnx-v2021.1-zynqmp-fpga (3.2.4-0) ...
Setting up u-dma-buf-5.10.0-xlnx-v2021.1-zynqmp-fpga (3.2.4-0) ...

参考

現時点の最新バージョンは v2021.1.2 ですが、それ以前のバージョンをインストールする際は以下の記事を参照してください。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?