注意:下面所有文件保持英文路径;安装过程需联网操作
注:如出现未找到命令的错误,请重新执行步骤8
ZYNQ-7000系列芯片运行Linux操作系统需要BOOT.BIN文件、image.ub文件和rootfs。
BOOT.BIN文件由fsbl.elf、bitstream和u-boot.elf(裸机elf程序)文件组成。fsbl.elf是由xilinx设计的,由OCM加载执行,有两个主要功能。第一是用于加载bitstream到PL,第二是根据BOOT.BIN文件组成,执行u-boot或是裸机elf程序。bitstream文件是FPGA的配置文件。裸机elf程序用于在不启动操作系统的情况下运行一些软件。u-boot.elf是一种bootloader程序,可以根据不同的硬件情况,在不同的场景下引导操作系统镜像的执行。
image.ub文件是由操作系统的镜像文件uImage和设备树文件dtb组成。uImage由压缩过的操作系统镜像zImage和一段由u-boot在引导时会读取的头image_header_t(64B)组成,这个头用于储存u-boot在引导系统时所要获取的一些信息。zImage由未压缩的内核镜像vmlinux和解压代码组成。在u-boot引导内核时,会解压zImage到内存中执行。
rootfs是linux的根文件系统,在linux系统启动过程中,必须要挂载这样一个根文件系统。我们的可执行程序以及所用到的库文件、linux系统的配置文件等,都会存储在这样一个根文件系统中。
Qspi型号:w25q256fvei
一、SD卡启动
- 安装ubuntu20.04虚拟机(至少配备200GB存储,建议250GB),安装过程及更换清华源操作略去
- 安装相应的库文件:
sudo apt-get install tofrodos gawk xvfb git libncurses5-dev tftpd zlib1g-dev zlib1g-dev:i386 \
libssl-dev flex bison chrpath socat autoconf libtool texinfo gcc-multilib \
libsdl1.2-dev libglib2.0-dev screen pax xterm build-essential net-tools libtinfo5 tftpd tftp openbsd-inetd vim
- 配置TFTP server: sudo chmod 755 /etc/inetd.conf
sudo vim /etc/inetd.conf
单击i,在最后键入以下内容:
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftproot
单击Esc,输入 :wq 保存退出
sudo mkdir /tftproot
sudo chmod 777 /tftproot
/etc/init.d/openbsd-inetd restart
netstat -an | more | grep udp
看到输出udp 0 0 0.0.0.0:69 0.0.0.0:* 即成功
reboot
- 以root权限启动新的shell: sudo -s
创建文件放置的文件夹: mkdir -p /opt/pkg/petalinux
指定目录所有权: chown chengfei /opt/pkg/
将目录所属组更改为指定的组: chgrp chengfei /opt/pkg/
chown chengfei /opt/pkg/petalinux/
chgrp chengfei /opt/pkg/petalinux/
exit
注:蓝色内容根据自己的虚拟机名称修改
- 将安装文件复制到创建的文件夹中,并进入对应文件夹。
- 给安装的文件赋予权限: chmod 755 ./petalinux-v2022.1-04191534-installer.run
注: 切勿将安装程序权限更改为 CHMOD 775,否则将产生 BitBake 错误
- 开始安装: ./petalinux-v2022.1-04191534-installer.run
注:回车查看协议后单击Q退出,Y确认
显示界面如下即为安装完成:
- 设置petalinux环境变量: source /opt/pkg/petalinux/settings.sh
注:如出现图示报错,按顺序输入命令: sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh
ls -l /bin/sh
再次运行source指令
- 在documents下创建工作目录,命令如图所示:(勿在安装路径下创建工程文件)
- 进入刚刚创建的文件夹后,运行下面指令创建petalinux工程,并进入该工程文件。
petalinux-create --type project --template zynq --name petalinux_prj
- 将SDK文件复制进虚拟机中,导入vivado的硬件描述语言到petalinux内,确保文件路径保证正确
petalinux-config --get-hw-description <此处填写工程对应的SDK文件完整路径>
在弹窗内进行如下操作:
Subsystem AUTO Hardware Settings -> SD/SDIO Settings -> Primary SD/SDIO 选择为ps7_sd_0 (这里可以选择优先哪个SD卡启动)
Subsystem AUTO Hardware Settings -> Flash Settings 中确定是否包含有bootenv分区
Image Packaging Configuration -> Root filesystem type 选择EXT4(SD/eMMC/SATA/USB)
注意:2019版本后的petalinux移除了Advanced bootable images选项,如需更改启动配置,如primary sd->primary flash,需在步骤12中进行修改。
- 输入 petalinux-config -c u-boot ;配置u-boot内核启动方式。
选择Boot options -> Boot media -> Support for booting from SD/EMMC;
boot options->boot media->support for booting from qspiflash
device drivers->pci support/nvm express device support
device drivers->pci support->Xilinx AXI Bridge for pci express
退出并保存
- 安装kernel,配置linux内核: petalinux-config -c kernel
找到Device Drivers->NVME Support->NVM Express block device,
device drivers->pci support->pci express port bus support
然后save,exit
- (如已有现成文件系统,可直接进行步骤15)
配置根文件系统: petalinux-config -c rootfs
同上操作勾选 Filesystem Packages->base->util-linux->util-linux/ util-linux-blkid/ util-linux-fdisk/ util-linux-mount/ util-linux-mkfs (5个)
以及Filesystem Packages->base->e2fsprogs/e2fsprogs-mke2fs (2个)
以及Filesystem Packages->console->utils->pciutils->pciutils/ pciutils-ids/ pciutils-dev/libpci
以及Filesystem Packages->console->utils->vim->vim
以及Filesystem Packages->console->tools->parted->parted
以及Filesystem Packages->utils->dosfstools->dosfstools
- 编译等: petalinux-build
等待一段时间后出现下图所示即为完成编译。
- 打包信息,生成对应boot文件: petalinux-package --boot --u-boot --fpga --force
- 插入SD卡读卡器,将SD卡连接到linux系统中,./linux/images中的BOOT.BIN/image.ub
/boot.scr文件复制到FAT32格式的BOOT分区;(如未进行步骤14,可直接跳过后续,进行步骤18)在rootfs分区,打开终端,输入
sudo rm -r ./*
sudo cp -r ./images/linux/rootfs.tar.gz /media/chengfei/rootfs/ ./
sudo tar -xzvf ./rootfs.tar.gz
sudo rm -r rootfs.tar.gz
sudo chown root:root /media/chengfei/rootfs/usr/bin/sudo
sudo chmod 4755 /media/chengfei/rootfs/usr/bin/sudo
- 在赛灵思官网下载vivado Linux自解压Web安装程序2022.1版本,在终端输入以下命令
sudo chmod +x Xilinx_Unified_2022.1_1014_8888_Lin64.bin
sudo sh ./Xilinx_Unified_2022.1_1014_8888_Lin64.bin
根据步骤安装vivado ML standard
安装完成后,在安装目录下打开终端,输入以下命令
vim ~/.bashrc
在页面最下方单击i,复制以下命令:
source ./Vivado/2022.1/settings64.sh
source ./Vitis_HLS/2022.1/settings64.sh
单击ESC,输入 :wq 并回车。继续在终端输入指令 source .bashrc
cd ./Vivado/2022.2/data/xicom/cable_drivers/lin64/install_script/install_drivers
sudo ./install_drivers
安装JTAG驱动完成
- 连接串口,波特率设置为115200;板子模式设置为SD卡启动,插入SD卡,开启板子电源。
- 若rootfs做了修改,第一次启动需要设置密码,账号默认为petalinux,按提示设置密码即可。