使用PetaLinux在Xilinx ZYNQ-7000 AP SoC上安装Ubuntu

参考博客
参考网站
有许多关于在ZYNQ处理系统上安装Ubuntu或Linaro发行版的教程,但是其中大部分已经过时,其中一些使用交叉编译工具来构建内核和内核模块,大多数初学者都觉得很难。大多数教程在FPGA部分中使用特定硬件,我们无法更改。当我第一次开始在ZYNQ ZC702上安装Ubuntu时,我不得不通过所有这些方法来确定每个工具链的任务。因此,下面将介绍使用ZC702评估套件在ZYNQ-7000 AP SoC上安装Ubuntu的最简单快捷的方法。

PetaLinux

PetaLinux是由Xilinx提供的工具链,用于为ZYNQ生成Linux内核镜像、root file system和内核模块,例如具有可编译硬件的嵌入式系统(适用于FPGA部分中不同硬件设计)。
使用PetaLinux工具链,我们可以轻松地为ZYNQ PS构建内核和模块,而无需使用交叉编译工具。使用PetaLinux一个缺点是每个PetaLinux版本都附带特定的Linux内核版本。例如,PetaLinux2016.4附带一个4.6.0的默认内核版本。但是Xilinx提供了一种改变PetaLinux默认内核版本的方法。
Note PetaLinux工具可以为特定硬件设计生成U-Boot files、First Stage Boot Loader(FSBL)和BOOT.BIN。使用Xilinx SDK可以完成同样的事。

Prerequisites

  • PC with Linux installed (Preferably Ubuntu 16.04 or later)
  • SD card ( 8 GB or bigger)
  • SD card reader
  • Xilinx ZYNQ ZC702 Evaluation Kit
  • PC with Vivado 2014.4 or later installed

Start

将主要介绍如何安装PetaLinux,并准备SD卡以启动Linux。更关注只用PetaLinux。

Step 1:Install PetaLinux

PetaLinux Tools Documentation: Reference Guide (UG1144)

Step 2:Prepare SD card for booting Linux

这可以通过Linux gparted轻松完成。在Ubuntu中,打开终端:

sudo gparted

如果没有安装:

sudo apt install gparted

使用SD卡读卡器将SD卡连接到PC,然后使用上面的命令启动gparted。按一下步骤准备SD卡。

  • gparted选择SD
  • 确定卸载并删除SD卡分区,以便在gparted中显示‘unallocated’。
  • 右键单击未分配的空间,并使用以下设置创建新分区:
    可用空间进程(Free Space Proceeding):4
    新的大小(New Size):512
    文件系统(File System):FAT32
    标签(Label):BOOT
    请勿更改其它设置,然后单击“添加(Add)完成。
  • 右键单击剩余的未分配空间,并使用以下设置创建新分区:
    Free Space Proceeding: 0
    Free Space Following: 0
    File System: ext4
    Label: rootfs.
    请勿更改其它设置,然后单击Add完成。
  • 运用所有更改,创建分区。

Step 3:Create the Hardware Design

此步骤中,我们将使用最基本的硬件设计启动Linux。根据PetaLinux Workflow Tutorial,在ZYNQ-7000中运行Linux的硬件要求很少。如下:

  • 至少一个三重定时计数器(Triple Timer Counter(TTC))
  • 具有至少32MB内存的外部存储控制器
  • UART用于串行控制台
  • 可选:Non-volatile memory(QSPI Flash,SD/MMC)
  • 可选:以太网(网络访问需要)

以下步骤创建基本硬件设计:

  • 打开Vivado,创建一个新的ZYNQ-7 ZC702评估开发板RTL项目
  • 在“Project Manager”窗口单击“Create Block Design”
  • 在“Add IP”窗口添加“ZYNQ7 Processing System ” IP
  • 连接“ZYNQ7 Processing System”上的FCLK_CLK0输出pin和M_AXI_GP0_ACLK输入pin,如下图:

这里写图片描述

  • 在designer assistance中单击“Run Block Automation”,结果如下:

这里写图片描述

Note “Run Block Automation”将电路板的预设添加到设计中,通常会自动设置ZYNQ PS上运行Linux所需的所有功能。但是为了确保,我们将在下一步中检查这些功能。

  • 双击“ZYNQ PS IP”,打开“Re-customize IP”窗口,然后选择“Peripheral I/O Pins” tab。然后使用下图检查配置。

这里写图片描述
这里写图片描述

  • 确定配置后,单击“OK”关闭窗口。
  • 右键单击“block design file”,如下图所示,然后选择“Create HDL Wrapper”。勾选“Let Vivado manage wrapper and auto-update”,然后单击“OK”。

这里写图片描述

  • Synthesize the design,生成比特流。
  • 生成比特流后,转到File->Export->Export Hardware, 勾选“Include bitstream”,然后单击“OK”。

根据上面的步骤,创建设计的硬件描述文件(.hdf)将保存在项目目录的”project_name.sdk”文件夹中。记住这一步骤,下一步需要。
注意 对于下一步,上面的“project_name.sdk”文件夹必须与您安装PetaLinux的操作系统位于同一操作系统中。如果在不同操作系统中完成上述步骤,只需要将该文件夹复制到相关的操作系统即可。

Step 4:Generating Kernel images for the designed hardware using PetaLinux

在安装PetaLinux的Linux中打开一个Terminal,然后转到要创建PetaLinux项目的目录。将PetaLinux项目命名为“test_boot”。

  • 创建项目“test_boot”,然后进入“test_boot”目录
petalinux-create --type project --template zynq --name test_boot
cd test_boot
  • 如果之前产生的.hdf文件在“/home/user/basic/basic.sdk/”目录:
petalinux-config --get-hw-description=/home/user/basic/basic.sdk/
  • 执行以下命令配置项目:
petalinux-config

这将跳出一个窗口(如下图所示)来配置项目。在此窗口下,为了将内核指向自定义根文件系统,需要进行配置。
这里写图片描述

  1. 转到“Subsystem AUTO Hardware Settings” –> “Advanced bootable images storage Settings” –> “boot image settings”, 将“image storage media”选项设置为“primary sd”
  2. 转到“Subsystem AUTO Hardware Settings” –> “Advanced bootable images storage Settings” –> “kernel image settings”,将“image storage media”选项设置为“primary sd”
  3. 转到“Subsystem AUTO Hardware Settings” –> “Advanced bootable images storage Settings” –> “dtb image settings”, 将“image storage media”选项设为“primary sd”
  4. 转到“Image Packaging Configuration”,将“Root filesystem type”选项设为“SD card”

选择“Exit”,并保存新的配置。

  • 运行以下命令,build the project,生成引导文件
petalinux-build
  • 成功build the project后,运行以下命令生成BOOT.BIN文件(这是条单命令):
petalinux-package --boot --format BIN --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/download.bit --u-boot

Note 以上命令中,使用“download.bit”作为文件名。根据自己的文件名更改命令。

Step 5:Downloading Ubuntu 16.04 LTS Root File System for ZYNQ

提取:

tar xf ubuntu...

如果SD卡的“rootfs”分区安装在“/media/rootfs”,执行下面命令解压Ubuntu root file system,并复制到“rootfs”分区,设置权限:

sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/
sync
sudo chown root:root /media/rootfs/
sudo chmod 755 /media/rootfs/

Step 6: Booting Linux on ZC702

将准备好的SD卡连接到PC,并将“/images/linux/”目录的文件复制到SD卡的BOOT分区

  • 从Petalinux project 目录中,运行以下命令将kernel boot files复制到BOOT 分区(如果BOOT分区安装在/media/BOOT)
sudo cp ./images/linux/* /meida/BOOT/
  • 复制完成后,从PC中弹出SD卡的两个分区并将其插入ZC702板。
  • 将mini-USB连接到电路板的UART端口和PC
  • 将ZC702的交换配置设置为从SD卡引导(如下图所示):

这里写图片描述

  • 在PC(Minicom in Linux,putty in Windows)中设置串行端口运用程序,并打开电路板
  • 如果所有的事情成功了,会在ZC702电路板上启动,默认用户名为Ubuntu,密码为temppwd

All done, Enjoy Ubuntu on ZYNQ

猜你喜欢

转载自blog.csdn.net/XingpengLu/article/details/82658361