嵌入式Linux_Petalinux一——FPGA学习笔记<?>
目录
1.Zynq UltraScale+ MPSoC
嵌入式软件栈概述
2、Platform Management Unit (PMU)
Firmware
前置学习:Linux系统——OS学习笔记<1>
参考资料:正点原子《DFZU2EG_4EV MPSoC 之 Linux 驱动开发指南》
“PetaLinux 工具提供在 Xilinx 处理系统上定制、构建和调配嵌入式 Linux 解决方案所需的所有组件。该解决方案旨在提升设计生产力,可与 Xilinx 硬件设计工具配合使用,以简化针对 Versal、Zynq UltraScale MPSoC、Zynq 7000 SoC 和 MicroBlaze 的 Linux 系统开发。”
一.开发环境搭建
要进行 ZYNQ MPSoC 开发肯定要先搭建好开发环境,我们在开始学习 STM32 的时候肯
定需要安装一堆的软件,比如 MDK、IAR、串口调试助手等等,这个就是 STM32 的开发环境
搭建。同样的,要想在 Ubuntu 下进行 ZYNQ MPSoC 开发也需要安装一些软件,也就是网上
说的开发环境搭建,环境搭建好以后我们就可以进行开发了。环境搭建分为 Ubuntu 和 Windows,
因为我们最熟悉 Windows,所以代码编写、查找资料啥的肯定是在 Windows 下进行的。但是
Linux 开发又必须在 Ubuntu 下进行,所以还需要搭建 Ubuntu 下的开发环境。本章我们就分为
Ubuntu 和 Windows,讲解这两种操作系统下的环境搭建。
1.Ubuntu 和 Windows 文件互传
Windows 和 Ubuntu 下的文件互传我们需要使用 FTP 服务,设置方法如下:
1、开启 Ubuntu 下的 FTP 服务
打开 Ubuntu 的终端窗口,然后执行如下命令来安装 FTP 服务:
sudo apt-get install vsftpd
等待软件自动安装,安装完成以后使用如下 VI 命令打开/etc/vsftpd.conf,命令如下:
sudo vi /etc/vsftpd.conf
打开以后 vsftpd.conf 文件以后找到如下两行:
local_enable=YES
write_enable=YES
确保上面两行前面没有“#”,有的话就取消掉
2、Windows 下 FTP 客户端安装
Windows 下 FTP 客户端我们使用 FileZilla。打开站点管理器,点击:文件->站点管理器。点击“新站点(N)”按钮来创建站点,新建站点以后就会在“我的站点”下出现新建的这个站点,站点的名称可以自行修改,比如我将新的站点命名为“Ubuntu”。选中新创建的“Ubuntu”站点,然后对站点的“常规”进行设置:


如果要将 Windows 下的文件或文件夹拷贝到 Ubuntu 中,只需要在左侧的 Windows 区域选中要拷贝的文件或者文件夹,然后**直接拖到右侧** 的 Ubuntu 中指定的目录即可。 将 Ubuntu 中的文件或者文件夹拷贝到 Windows 中也是**直接拖放** 。
2.Ubuntu 和 Windows 文件本地共享
Ubuntu 和 Windows 文件互传可以使用本地共享的方式。这种共享的方式极大的免除了不同系统文件 之间的文件复制和磁盘空间的双重占用。下面笔者将介绍如何使用 Vmware 虚拟机来实现 Ubuntu 和 Windows 文件之间的共享。
在 Vmware 的菜单栏中,选择“设置(S)”,在弹出的菜单中,选择“选项”,在该界面中,单击“共享文件夹”,在右边界面中选择 “总是启用(E)”,添加共享的文件夹,默认勾选“启用此共享”。
该文件夹在 Ubuntu 系统中对应的是**/mnt/hgfs/share/目录** ,我们在终端中输入命令:
ll /mnt/hgfs/share/
可以看到该文件夹为空。如果需要从 Ubuntu 系统向 Windows 传递文件,可 以用 cp 命令或 mv 命令文件到该目录。
3.Ubuntu 系统搭建 tftp 服务器
TFTP 作为一种**简单的文件传输协议** ,在嵌入式开发中会经常使用到,而且后面我们在**安装 Petalinux 工具时也会提示需要 tftp 服务** ,所以我们需要**在 Ubuntu 上搭建 TFTP 服务器** 。需要**安装 tftp-hpa(客户端软件包,如果不用可不装)和 tftpd-hpa 软件包** ,命令如下:
sudo apt install tftp-hpa tftpd-hpa
TFTP 需要一个文件夹来存放文件,我们在根目录下新建一个/tftpboot 目录做为 TFTP 文 件存储目录,之所以使用该目录是因为后面使用的 Petalinux 工具默认使用该目录,省得我们 每次建 Petalinux 工程的时候手动修改。创建/tftpboot 目录命令如下:
sudo mkdir -p /tftpboot
sudo chmod 777 /tftpboot
这样笔者就在电脑上创建了一个名为 tftpboot 的目录(文件夹),路径为/tftpboot。需要注意 的是我们要**给 tftpboot 文件夹权限,否则的话后面在使用过程中会遇到问题,所以使用了 chmod 777 命令** 。 最后配置 tftp。打开/etc/default/tftpd-hpa 文件,将其内容修改如下:
# /etc/default/tftpd-hp
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpbo
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
最后输入如下命令,重启 tftp 服务器:
sudo service tftpd-hpa restart
4.Ubuntu 下 NFS 和 SSH 服务开启
后面进行 **Linux 驱动开发** 的时候**需要 NFS 启动** ,因此要先安装并开启 Ubuntu 中的 NFS 服务,使用如下命令安装 NFS 服务:
sudo apt install nfs-kernel-server
等待安装完成。安装完成以后在用户根目录 下创建一个名为“workspace/nfs”的文件夹, 命令如下:
cd
mkdir -p workspace/nfs
cd workspace/nfs
pwd
以后所有需要使用 nfs 的东西都放到这个“nfs”文件夹里面。
上面创建的 nfs 文件夹供 nfs 服务器使用,以后我们可以在开发板上**通过网络文件系统来访问 nfs 文件夹** 。
使用前需要先**配置 nfs** 。NFS 允许挂载的目录及权限**在文件/etc/exports 中进行定义** ,使用 如下命令打开 nfs 配置文件/etc/exports,打开/etc/exports 以后在后面添加如下所示内容:
/home/<用户名>/workspace/nfs *(rw,sync,no_root_squash)
* 代表允许所有的网络段访问,rw 是可读写权限,sync 是文件同步写入存储器,no_root_squash 是 nfs 客户端分享目录使用者的权限。如果客户端使用的是 root 用户,那么对于该共享目录而 言,该客户端就具有 root 权限。
重启 NFS 服务,使用如下命令:
sudo systemctl start nfs-kernel-server.service
此时可以运行以下命令来显示共享的目录:
showmount -e
在 nfs 运行的过程中,修改了/etc/exports 配置文件,可以使用 exportfs 命令使改动生效, 具体命令:
sudo exportfs -rv
开启 Ubuntu 的 SSH 服务以后我们就可以在 Windwos 下使用终端软件登陆到 Ubuntu,比 如使用 SecureCRT,**Ubuntu 下使用如下命令开启 SSH 服务** :
sudo apt install openssh-server
上述命令安装 ssh 服务,ssh 的配置文件为/etc/ssh/sshd_config,使用默认配置即可。
5.Source Insight 软件安装和使用
Source Insight 是一款功能强大的代码编辑、阅读工具,工作在 Windows 下,我们可以用 Source Insight 来进行代码编写和阅读,编写完成以后将代码拷贝到 Ubuntu 中去编译即可。
6.Visual Studio Code 软件的安装和使用
Visual Stuio Code 和 Source Insight 一样,都是编辑器,Visual Studio Sode 本教程以后就简 称为 VSCode,VSCode 是微软出的一款编辑器,但是免费的。VSCode 有 Windows、Linux 和 macOS三个版本的,是一个跨平台的编辑器。
我们需要按照的插件有下面几个:
1)、C/C++。
2)、C/C++ Snippets,即 C/C++重用代码块。
3)、C/C++ Advanced Lint,即 C/C++静态检测。
4)、Code Runner,即代码运行。
5)、Include AutoComplete,即自动头文件包含。
6)、Rainbow Brackets,彩虹花括号,有助于阅读代码。
7)、One Dark Pro,VSCode 的主题。
8)、GBKtoUTF8,将 GBK 转换为 UTF8。
9)、ARM,即支持 ARM 汇编语法高亮显示。
10)、Chinese(Simplified),即中文环境。
11)、vscode-icons,VSCode 图标插件,主要是资源管理器下各个文件夹的图标。
12)、compareit,比较插件,可以用于比较两个文件的差异。
13)、DeviceTree,设备树语法插件。
新建文件后,按下“Ctrl+Shift+P”打开搜索框,然后**输入“Edit configurations”, 选择“C/C++:Edit configurations…”。C/C++的配置文件是个 json 文件** ,json 中的变量“includePath”用于指定工程中的头文件路径,但是“stdio.h” 是 C 语言库文件,而**VSCode 只是个编辑器,没有编译器** ,所以肯定是没有 stdio.h 的,除非 我们自行安装一个编译器,比如 CygWin,然后**在 includePath 中添加编译器的头文件** 。这里我 们就不添加了,因为我们不会使用 VSCode 来编译程序,这里主要知道如何指定头文件路径就 可以了,后面有实际需要的时候再来讲。
7.SecureCRT 软件安装和使用
在后续的开发过程中我们需要在Windows下使用串口终端,用来查看信息以及进行操作。 常用的串口终端有 SecureCRT、Putty 和 MobaXterm。
SecureCRT 功能很强大,支持 SSH,可以用来远程登陆;支持串口,可以用来作为 Linux 开发板的串口终端。我们用的最多的就是将 **SecureCRT 作为串口终端来使用** 。
我们以串口连接为例讲解如何使用 SecureCRT,我们需要准备好一个能进行**串口通信** 的设 备,我们的 DFZU2EG_4EV MPSoC 开发板就可以。DFZU2EG_4EV MPSoC 开发板出厂已经 烧写了 Linux 系统,Linux 系统在运行的过程中会通过串口输出信息,**通过串口可以实现 Linux 命令行交互操作** ,就和 Ubuntu 里面的终端一样,使用方法如下:
打开 SecureCRT,然 后点击 File->Quick Connect…,按照下图所示进行设置:

左侧是会话列表,保存着历史会话,会显示出所有曾经连接的串口,这个在关闭 SecureCRT 以后会被保存起来,下次重新打开 SecureCRT 就可以直接使用这个串口会话连接进行快速连接。比如我们关闭 SecureCRT,在关闭 SecureCRT 之前要先关闭所有的会话(串口),重新打开 SecureCRT。上图中重新打开的 SecureCRT 保存这上次关闭之前建立的会话(串口)“serial-com8”,通 过双击“serial-com8”可以重新连接会话(串口),不需要再使用快速连接对话框进行连接设置。 开发板默认出厂烧写了 Linux 系统,所以如果连接上 SecureCRT 以后会将串口作为终端, 会输出 Linux 系统启动信息,并且可以通过 SecureCRT 来操作开发板中的 Linux 系统,此时 SecureCRT 就是开发板的终端,和 Ubuntu 中的终端一样。
8.Putty 软件的安装和使用
Putty 和 SecureCRT 是类似的软件,都是用来作为 SSH 或者串口终端的,区别在于 SecureCRT 是付费软件,而 Putty 是免费的。虽然 Putty 没有 SecureCRT 功能强大,但是 Putty 用来作为嵌入式 Linux 的串口终端是绰绰有余的,而且**在 Ubuntu 下安装 Putty 十分方便** ,只需 一条命令即可:
sudo apt install putty
使用 USB 线将开发板串口和电脑连接起来,打开 Putty 软件,打开以后是配置界面,如下 图所示:


二.Petalinux 的安装
安装 Petalinux 开发工具在 Ubuntu 操作系统中,在虚拟机中安装了 Ubuntu 18.04 64 位操作系统,这也是官方推荐的版本。
1.Petalinux 简介
Petalinux 工具是 Xilinx 公司推出的嵌入式 Linux 开发套件,包括了 **u-boot、Linux Kernel、 device-tree、rootfs 等源码和库** ,以及 **Yocto recipes** ,可以让客户很方便的生成、配置、编译及 自定义 Linux 系统。Petalinux 支持 Versal 、Zynq UltraScale+ MPSoC、Zynq-7000 SoC 以及 MicroBlaze,可与 Xilinx 硬件设计工具 Vivado 协同工作,大大简化了 Linux 系统的开发工作。
官方网站:[PetaLinux 工具 (xilinx.com)](https://china.xilinx.com/products/design-
tools/embedded-software/petalinux-sdk.html "PetaLinux 工具 (xilinx.com)")
下载途径:[下载
(xilinx.com)](https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/embedded-
design-tools/2023-1.html "下载 (xilinx.com)")
注意 Petalinux 的版本 要求与 Vivado 的版本一致
2.安装 Petalinux
首先将 petalinux 安装包文件 petalinux-v2019.2-final-installer.run 拷贝到 share 共享目录,,在 Ubuntu 系统中,打开终端,切换到 /mnt/hgfs/share/目录,可以看到 petalinux 的安装文件 petalinux-v2019.2-final-installer.run 已在该目录,可直接访问。
1、安装依赖库以及软件
Xilinx 提供了安装脚本 plnx-env-setup.sh。将下载后的脚本拷贝到 Ubuntu 虚拟机中,打开 Ubuntu Terminal 终端执行输入如下命令以 执行此脚本:
sudo ./plnx-env-setup.sh
如果上面的命令不行,可以使用下面的方式替代,对与 Ubuntu 而言,两种方式是等效的。
sudo apt install iproute2 gawk python3 python build-essential gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git-core diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib automake zlib1g:i386 screen pax gzip cpio python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3
2、修改 bash
Petalinux 工具需要主机系统的/bin/sh 是 bash,而 Ubuntu 默认的/bin/sh 是 dash,所以这里 需要进行更改,运行 sudo dpkg-reconfigure dash 命令,如下:
sudo dpkg-reconfigure dash

**选择“No”按下回车即可。 **
3、安装 Petalinux
安装 Petalinux 就要考虑安装位置了,对于 Petalinux 这种体积庞大的工具,我们将其放在 /opt 目录下。在/opt 目录下新建专门存放 Petalinux 的文件夹,如/opt/pkg/petalinux/2019.2,在 终端输入以下命令即可:
sudo chown -R $USER:$USER /opt
mkdir -p /opt/pkg/petalinux/2023.1
**chown命令将/opt 目录的属主和属组更改为当前的用户名** ,如笔者的 Ubuntu 用户名为 cx, 执行的 chown 命令就相当于“sudo chown -R cx:cx /opt”,然后通过 mkdir 创建安装目录。现在我们将 petalinux 安装在/opt/pkg/petalinux/2023.1 目录下,在终端中输入如下命令:
./petalinux-v2023.1-05012318-installer.run -d /opt/pkg/petalinux/2023.1
运行上述命令后,需要等待一段时间,当出现“Press Enter to display the license agreements”
字样的时候,从显示的意思可以知道,让我们按下回车键显示软件许可协议,按下键盘上的回车键
Enter,这些内容如果你感兴趣可以看看,此处我们就不详细看了,直接按下键盘上的 Q 键退出, 回到之前的界面之后会出现一个选择项,询问我们是否接受
xilinx 最终用户协议。这个显然是没得选,必须接受,否则无法进行下面的安装;输入 y 按回车接受。除了 xilinx
最终用户协议之外,还有两个协议也需要大家接受,会依次显示在终端上,同理也是输入 Y 按下回车接受。接受所有协议之后 Petalinux
安装工具便会继续安装,直到安装完成。
4、设置 Petalinux 环境变量
在正式使用 petalinux 工具之前,需要先运行 petalinux 安装目录下的 settings.sh 脚本文件 设置 petalinux 工作环境,settings.sh 脚本用于 bash,还有一个 settings.csh 用于 C shell。
一般默认情况下,我们使用 bash作为登录 shell,所以 source 脚本文件 settings.sh对 petalinux 所需的运行环境进行配置,命令如下:
source settings.sh
需要注意的是该命令**只对当前终端有效** ,重新打开终端后需要重新执行这一步。执行结果 如下图所示:

我们来验证下工作环境是否已设置,在终端输入如下命令:
echo $PETALINUX
显示 Petalinux 的安装目录,表明工作环境已设置。现在可以使用 Petalinux 工具了。
鉴于每次打开终端使用 Petalinux 都需要设置相应的环境变量,我们为了方便,**将设置 Petalinux 环境变量的命令设置成别名**,这样我们使用起来就方便些。设置别名方法的很简单, 在终端输入如下命令:
echo "alias sptl='source $PETALINUX/settings.sh'" >> ~/.bashrc
以后我们打开终端后,**输入 sptl** 就可以设置 Petalinux 的环境变量了,无需输入长长的路 径。sptl 的记忆法是 Source PeTaLinux 的环境变量。提醒:在使用 linux 的时候要善用别名但不要滥用别名。
5、Linux 系统安装 JTAG cable 驱动
在嵌入式开发中,我们都是通过在线 jtag 进行调试的,这种调试方式方便快捷,在使用 Petalinux 进行 Linux 开发中,其实也是可以使用 JTAG 的,不过对于 Linux 系统,**由于安装驱动程序需要 root 或 sudo 访问权限,因此从 Vivado 2015.4 版本开始,默认不安装 jtag 驱动。这 样 Vivado 安装程序和 Petalinux 安装程序可以在没有 root 或 sudo 特权的 Linux 系统上运行。** 这也导致了在 linux 系统中,jtag 驱动需要手动安装。
下面我们介绍如何在 Ubuntu 主机中(其 他 Linux 系统同样适用)安装 jtag 驱动。 需要注意的是在安装 jtag 驱动之前,请**不要将 jtag 下载器连接到电脑** ,已经接到电脑的, 最好先拔掉。下面开始安装。
在 Ubuntu 系统中,打开终端,以普通用户运行即可。进入到 petalinux 安装目录。可以看到有一个名为“tools”的目录,jtag 驱动程序在该目录下,我们输入以下命令进入 到 jtag 驱动程序所在位置:
cd tools/xsct/data/xicom/cable_drivers/lin64/install_script/install_drivers
可以看到该目录下有一个名为“install_drivers”的文件,输入如下命令,以 root 权限执行该文件,安装 jtag 驱动程序:
sudo ./install_drivers
可以看到 jtag 驱动安装成功。对于最下面一行的警告,如果已经拔掉 jtag 下载器与电脑的 连接就可以不用看。至此 jtag 驱动程序就安装完成了。
下面说下在遇到 jtag 驱动问题时,**如何删除 jtag 驱动。注意如无特需情况,请不要执行下 面的命令:**
sudo rm -f /etc/udev/rules.d/52-xilinx-digilent-usb.rules
sudo rm -f /etc/udev/rules.d/52-xilinx-ftdi-usb.rules
sudo rm -f /etc/udev/rules.d/52-xilinx-pcusb.rules
三.Petalinux 设计流程实战
PetaLinux 工具提供了**在 Xilinx 处理系统上自定义、构建和部署嵌入式 Linux 解决方案** 所需的一切。该解决方案旨在提高设计生产力,可**与 Xilinx 硬件设计工具一起使用** ,以**简化针对 Zynq SoC 的 Linux 系统的开发** 。本章我们以使用 Petalinux 定制 Linux 系统为例,实战 Petalinux 的设计流程,看下 Petalinux 如何简化 Linux 系统的开发。
1.Zynq UltraScale+ MPSoC 嵌入式软件栈概述

在 Zynq UltraScale+ MPSoC 设备中,有一个 **BootROM** 用于设备的初始启动。配置和安全 部件 CSU(Configuration and Security Unit)处理器使用 BootROM 中的代码。在这个配置阶段, BootROM(CSU ROM 代码的一部分)**解释引导头部(boot header)来配置系统** ,并以安全或者非安全引导模式将处理系统(PS,processing system)的第一阶段**引导加载程序(FSBL,first-stage boot loader)** 代码加载到**片上 RAM(OCM,on-chip RAM)**中。引导头部定义了许多引导参数,包 括安全模式和应该执行 FSBL 的处理器。引导头部参数可以在 Zynq UltraScale+器件手册 [UG1085](https://docs.xilinx.com/r/en-US/ug1085-zynq-ultrascale-trm/Fallback "UG1085") 中找到。在启动过程中,CSU 还将 **PMU** 用户固件(PMU FW)加载到 PMU RAM 中, 与 PMU ROM 一起提供平台管理服务。对于基于 xilinx 的 FSBL 和系统软件,大多数系统中都 必须有 PMU FW。在 PMU 固件加载前加载 FBSL 是默认配置。有些系统会切换顺序,首先加 载 PMU 固件。
在[Vitis开发二——FPGA学习笔记——二程序固化实验](https://blog.csdn.net/qq_32971095/article/details/136352300?spm=1001.2014.3001.5501 "Vitis开发二——FPGA学习笔记——二程序固化实验")中也涉及到相关内容,不过产生的BOOT文件不涉及linux操作系统。

Boot Image Format with FSBL and PMU Firmware


可以参考《xilinx zynq soc与嵌入式Linux设计实战指南》——第三章 zynq启动流程及镜像制作
及[PMU Processor • Zynq UltraScale+ Device Technical Reference Manual
(UG1085)](https://docs.xilinx.com/r/en-US/ug1085-zynq-ultrascale-trm/PMU-
Processor "PMU Processor • Zynq UltraScale+ Device Technical Reference Manual
(UG1085)")
1、FSBL
FSBL 是 Zynq UltraScale + MPSoC 的**第一阶段引导加载程序** ,由 BootROM 引导加载到片上 RAM 中并启动,用于**配置 FPGA** (使用 bitstream,如果存在的话)和**从非易失性 Flash(SD/eMMC/NAND/QSPI)加载裸机镜像或者操作系统的第二阶段引导加载程序镜像到内存(DDR/OCM)。**
2、Platform Management Unit (PMU) Firmware
PMU 控制系统的上电、复位和监控系统内的资源。Zynq MPSoC 中的平台管理单元(PMU) 有一个带有 32KB ROM 和 128 KB RAM 的 Microblaze。启动时,ROM 被 PMU Boot ROM (PBR)预加载,PBR 用于执行预启动任务,进入服务模式。有关 **PMU、PBR 和 PMUFW 加载顺序** 的更多细节,请参阅 Zynq UltraScale+器件手册 UG1085 中的平台管理单元(第 6 章)。PMU RAM 可以在运行时加载固件(PMU Firmware),并可用于扩展或定制 PMU 的功能。
PMU System Diagram

官方给出PMU的用处:

3、ARM Trusted Firmware
ARM Trusted Firmware(ATF)为 ARMv8-A 架构的安全软件提供了参考,它提供了各种接 口标准的实现,如 PSCI(Power State Coordination Interface,电源状态协调接口)和用于与 Normal world software 接口的安全监控代码。
4、U-Boot
U-Boot 是 **Universal Boot Loader** 的简称,是一个开源的、主要的引导加载程序,**用于嵌入 式设备中引导设备的操作系统内核** ,在 Linux 社区中经常使用。**Xilinx 在 Zynq Ultrascale+设备 中使用 U-Boot 作为 第二阶段引导加载程序**。
5、Hypervisor (Optional,可选)
**在 Zynq UltraScale+设备上** ,可以**使用 hypervisor 运行多个虚拟机** 。Zynq UltraScale+设备 上支持几种 hypervisor,该榜单可在 [Embedded Software EcoSystem](https://www.xilinx.com/products/design-tools/embedded-software.html#rtos "Embedded Software EcoSystem") 上找到。
6、Linux
Linux,全称 GNU/Linux,是一种免费使用和自由传播的类 UNIX 操作系统,是我们本开发指南的重点。
Zynq UltraScale+ MPSoC 上电后,**首先由 BootROM 对 zynq 设备进行初始启动,然后引导加载 fsbl 到 OCM 并启动 fsbl;fsbl 启动后加载 PMU Firmware,然后加载 ARM Trusted Firmware,配置 DDR,最后将 uboot 加载到 DDR 并启动 uboot;uboot 启动后可选的加 载 hypervisor,并在 hypervisor 上运行 linux 系统,一般我们不使用 hypervisor,而是直接使用 uboot 加载 linux 系统镜像到 DDR 并启动 linux,至此整个 linux 系统启动完成。**
综上,就是需要在 Zynq UltraScale+ MPSoC 运行 linux 系统所需要搭建的软件栈。如果这 些软件栈由我们一个个手工搭建,任务量极其庞大,所幸的是,**Xilinx 推出了 Petalinux 开发工 具,可以让我们方便快捷的完成这些软件栈的搭建,从而加快 linux 的使用和开发** 。
注:上面介绍了那么多软件栈,并不需要我们全部了解。以 uboot 为分界线,uboot 以下 的是跟 zynq 芯片密切相关的,是很底层的内容,一般不需要额外配置,让 Petalinux 工具自动 适配即可。**从 uboot 开始,跟 zynq 芯片的关联就弱了很多,uboot 和 linux 内核可以适用与其 他芯片平台,其知识点是通用的,也是我们需要关注的。**
2.使用 Petalinux 定制 Linux 系统
1、创建 Vivado 硬件平台
system_wrapper.xsa 文件,该文件包含着 Vivado 工程所对应的硬件平台信 息,Petalinux 根据这些信息来配置 fsbl、uboot、内核等。 将该文件拷贝到 Ubuntu 系统下。在 share 文件夹下创建一个 xsa 文 件夹,并将 system_wrapper.xsa 文件复制到该文件夹下。
2、设置 Petalinux 环境变量
source /opt/pkg/petalinux/2019.2/settings.sh
#或者
sptl
3、创建 petalinux 工程
为了方便工程的管理,我们在使用的用户的家目录下新建一个 workspace/petalinux 目录, 作为 petalinux 的工程目录。在终端中输入如下命令新建 workspace/petalinux 目录并切换到该目 录:
cd
mkdir -p workspace/petalinux/
cd workspace/petalinux/
现在我们创建一个名为“ALIENTEK-ZYNQ”的 Petalinux 工程,在终端中输入如下命令:
petalinux-create -t project --template zynqMP -n ALIENTEK-ZYNQ
template 参数表明创建的 petalinux 工程使用的平台模板,此处的 zynqMP 表明使用的是 zynqMP Soc 平台模板的 petalinux 工程,用于 Zynq UltraScale+ MPSoC 系列的芯片。name 参数 (此处简写为“-n”)后接的是 petalinux 工程名,如此处的“ALIENTEK-ZYNQ”
4、配置 petalinux 工程
首次配置 Petalinux 工程是将 xsa 文件导入到 Petalinux 工程中,Petalinux 工具会解析 xsa 文件并弹出配置窗口。在终端中输入如下命令配置 Petalinux 工程:
cd ALIENTEK-ZYNQ
petalinux-config --get-hw-description /mnt/hgfs/shared_folder/xsa/
弹出 petalinux 工程配置窗口,如下图所示:

需要注意的是该窗口不可以使用鼠标操作,只能通过键盘操作,界面上方的英文就是简单 的操作说明,操作方法如下:
通过键盘上的**“↑”和“↓”键来选择要配置的菜单** ,**按下“Enter”键进入子菜单** 。菜单中高亮的字母就是此菜单的**热键** ,在键盘上按下此高亮字母对应的键可以快速选中对应的菜单。选中子菜单以后**按下“Y”键就会将相应的配置选项写入配置文件中,菜单前面变为“ < * >”**。 **按下“N”键不编译相应的代码,按下“M”键就会将相应的代码编译为模块,菜单前面变为“ < M >”**。按两下“Esc”键退出,也就是返回到上一级,按下“?”键查看此菜单的帮助信 息,按下“/”键打开搜索框,可以在搜索框输入要搜索的内容。
在配置界面下方会有五个按钮,这五个按钮的功能如下:
posted on 2025-02-08 17:48 switch_swq 阅读(13) 评论(0) 收藏 举报
浙公网安备 33010602011771号