Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

UltraZed 向け Debian GNU/Linux (v2017.3版) ブートイメージの提供

はじめに

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
  • 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 のフォーマット

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

フォーマット方法の詳細は省略します。

SD-Card への書き込み

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

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?