提供适用于Ultra96的Debian GNU/Linux(v2018.2版)启动镜像

请注意(2019年7月26日更新)

这篇文章是在2018年发布的,包含了一些过时的内容。请参考我于2019年7月26日发布的以下文章。

    「UltraZed/Ultra96/Ultra96-V2 向け Debian GNU/Linux (v2019.1版) ブートイメージの提供」 @Qiita

首先

Ultra96是一款96boards兼容的开发板,搭载了Xilinx公司的Zynq Ultrascale+ MPSoC。为了Ultra96的安装,我们已经在以下网址上准备好了引导加载器(如U-Boot)、Linux内核和Debian根文件系统,本文将说明安装方法。

    https://github.com/ikwzm/ZynqMP-FPGA-Linux

如果你觉得烦恼的话,请随意选择跳过引导程序和Linux内核的构建步骤。

简述

    • 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.

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-v2018.2 (customized)

Linux Kernel Version v4.14.0

linux-xlnx tag=xilinx-v2018.2
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

fclkcfg (FPGA Clock Configuration Device Driver)
udmabuf (User space mappable DMA Buffer)

安装

下载

请从Github上下载以下内容。目前最新版本为v2018.2.1。请注意,一些图像文件非常大,因此使用了Git LFS(大文件存储)。您的环境中必须安装了git-lfs。

shell$ git clone -b v2018.2.1 git://github.com/ikwzm/ZynqMP-FPGA-Linux
shell$ cd ZynqMP-FPGA-Linux
shell$ git lfs pull

文件说明

    • target/Ultra96

boot/

boot.bin : Stage 1 Boot Loader
uEnv.txt : U-Boot environment variables for linux boot
image-4.14.0-xlnx-v2018.2-zynqmp-fpga : Linux Kernel Image (use Git LFS)
devicetree-4.14.0-xlnx-v2018.2-zynqmp-fpga-ultra96.dtb : Linux Device Tree Blob

devicetree-4.14.0-xlnx-v2018.2-zynqmp-fpga-ultra96.dts : Linux Device Tree Source

debian9-rootfs-vanilla.tgz : Debian9 Root File System (use Git LFS)
linux-image-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb : Linux Image Package (use Git LFS)
linux-headers-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb : Linux Headers Package (use Git LFS)
fclkcfg-4.14.0-xlnx-v2018.2-zynqmp-fpga_1.1.0-1_arm64.deb : fclkcfg Device Driver and Services Package
udmabuf-4.14.0-xlnx-v2018.2-zynqmp-fpga_1.3.2-1_arm64.deb : udmabuf Device Driver and Services Package

SD卡的格式化

    1. 在 SD 卡的分区 1 上创建一个 VFAT 文件系统。

 

    在 SD 卡的分区 2 上创建一个 ext4 文件系统。

请参考以下 URL 以了解在 Linux 下格式化 SD 卡的方法。

    https://github.com/ikwzm/ZynqMP-FPGA-Linux/blob/master/doc/install/format-disk-zynq.md

对SD卡的写入

0. SD卡的挂载

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

1. 引导分区的复制

将 target/Ultra96/boot/ 目录下的文件复制到 SD-Card 的分区1(例如,/dev/sdc1)。

shell# cp target/Ultra96/boot/*                                           /mnt/usb1

2. 生成 RootFS 分区

将debian9-rootfs-vanilla.tgz的内容解压到SD卡的第二个分区(在下面的例子中为/dev/sdc2)。最好将设备驱动程序的Debian软件包预先复制到已解压的根文件系统的home/fpga目录中。之后也可以通过网络进行复制。

shell# tar xfz debian9-rootfs-vanilla.tgz -C                              /mnt/usb2
shell# mkdir                                                              /mnt/usb2/home/fpga/debian
shell# cp linux-image-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb   /mnt/usb2/home/fpga/debian
shell# cp linux-headers-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb /mnt/usb2/home/fpga/debian
shell# cp fclkcfg-4.14.0-xlnx-v2018.2-zynqmp-fpga_0.0.1-1_arm64.deb       /mnt/usb2/home/fpga/debian
shell# cp udmabuf-4.14.0-xlnx-v2018.2-zynqmp-fpga_0.0.1-1_arm64.deb       /mnt/usb2/home/fpga/debian

将 fstab 设置为使引导分区可见。

将 Boot Partition 从 Linux 系统中始终可见会很方便。在这种情况下,最好事先在 fstab 中设置挂载引导分区。请注意,fstab 已经设置了 configfs 的挂载选项。

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

余談:如果将这段描述事先写在debian9-rootfs-vanilla.tgz中,可能会让人们觉得为什么要特意在之后进行设置。原因是debian9-rootfs-vanilla.tgz是Ultra96和UltraZed共用的。Ultra96的SD卡启动分区是/dev/mmcblk0p1,而UltraZed的SD卡启动分区是/dev/mmcblk1p1。此外,UltraZed还存在/dev/mmcblk0p1,如果事先写在debian9-rootfs-vanilla.tgz中,UltraZed会错误地访问到另一个设备。因此,虽然麻烦,但我们选择在之后进行设置。

4. 网络的设置

Ultra96可以通过WiFi连接到网络。在主机端提前创建并写入配置文件可能会更好。当然,也可以在后来启动Ultra96后在其上进行配置。

在这里,将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)中。


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。


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

将SSID和加密后的访问密钥写入WiFi配置文件(/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。

ctrl_interface=/run/wpa_supplicant
update_config=1

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

如果想要连接没有密码的SSID,可以设置key_mgmt=NONE(大写)来进行连接。

ctrl_interface=/run/wpa_supplicant
update_config=1

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

5. 解除 SD 卡

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

安装设备驱动程序包。

用Ultra96启动并以root身份登录

root的密码是”admin”。

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

安装Linux镜像包。

Linux镜像包(linux-image-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb)已预先安装在debian9-rootfs-vanilla.tgz中。在这里无需再次安装。如果需要重新安装,请使用dpkg来安装linux-image-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb。

root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:~# sudo dpkg -i linux-image-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb
(Reading database ... 24872 files and directories currently installed.)
Preparing to unpack linux-image-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb ...
Unpacking linux-image-4.14.0-xlnx-v2018.2-zynqmp-fpga (4.14.0-xlnx-v2018.2-zynqmp-fpga-1) over (4.14.0-xlnx-v2018.2-zynqmp-fpga-1) ...
Setting up linux-image-4.14.0-xlnx-v2018.2-zynqmp-fpga (4.14.0-xlnx-v2018.2-zynqmp-fpga-1) ...

安装Linux头文件包。

使用dpkg命令安装linux-headers-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb文件。

root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:~# sudo dpkg -i linux-headers-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb
Selecting previously unselected package linux-headers-4.14.0-xlnx-v2018.2-zynqmp-fpga.
(Reading database ... 24821 files and directories currently installed.)
Preparing to unpack linux-headers-4.14.0-xlnx-v2018.2-zynqmp-fpga_4.14.0-xlnx-v2018.2-zynqmp-fpga-1_arm64.deb ...
Unpacking linux-headers-4.14.0-xlnx-v2018.2-zynqmp-fpga (4.14.0-xlnx-v2018.2-zynqmp-fpga-1) ...
Setting up linux-headers-4.14.0-xlnx-v2018.2-zynqmp-fpga (4.14.0-xlnx-v2018.2-zynqmp-fpga-1) ...
make: Entering directory '/usr/src/linux-headers-4.14.0-xlnx-v2018.2-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
  CHK     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.14.0-xlnx-v2018.2-zynqmp-fpga'

安装 fclkcfg 设备驱动程序和服务。

使用dpkg来安装fclkcfg-4.14.0-xlnx-v2018.2-zynqmp-fpga_1.1.0-1_arm64.deb。

root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:~# dpkg -i fclkcfg-4.14.0-xlnx-v2018.2-zynqmp-fpga_1.1.0-1_arm64.deb
Selecting previously unselected package fclkcfg-4.14.0-xlnx-v2018.2-zynqmp-fpga.
(Reading database ... 44216 files and directories currently installed.)
Preparing to unpack fclkcfg-4.14.0-xlnx-v2018.2-zynqmp-fpga_1.1.0-1_arm64.deb ...
Unpacking fclkcfg-4.14.0-xlnx-v2018.2-zynqmp-fpga (1.1.0-1) ...
Setting up fclkcfg-4.14.0-xlnx-v2018.2-zynqmp-fpga (1.1.0-1) ...

安装 udmabuf 设备驱动程序和服务。

使用dpkg安装udmabuf-4.14.0-xlnx-v2018.2-zynqmp-fpga_1.3.2-1_arm64.deb。

root@debian-fpga:~# cd /home/fpga/debian
root@debian-fpga:~# dpkg -i udmabuf-4.14.0-xlnx-v2018.2-zynqmp-fpga_1.3.2-1_arm64.deb
Selecting previously unselected package udmabuf-4.14.0-xlnx-v2018.2-zynqmp-fpga.
(Reading database ... 44222 files and directories currently installed.)
Preparing to unpack udmabuf-4.14.0-xlnx-v2018.2-zynqmp-fpga_1.3.2-1_arm64.deb ...
Unpacking udmabuf-4.14.0-xlnx-v2018.2-zynqmp-fpga (1.3.2-1) ...
Setting up udmabuf-4.14.0-xlnx-v2018.2-zynqmp-fpga (1.3.2-1) ...

请问您需要哪方面的参考?

    https://github.com/ikwzm/ZynqMP-FPGA-Linux
bannerAds