嵌入式Linux_Petalinux一——FPGA学习笔记<?>

目录

一.开发环境搭建

1.Ubuntu 和 Windows 文件互传

1、开启 Ubuntu 下的 FTP 服务

2、Windows 下 FTP 客户端安装

2.Ubuntu 和 Windows 文件本地共享

3.Ubuntu 系统搭建 tftp 服务器

4.Ubuntu 下 NFS 和 SSH 服务开启

5.Source Insight 软件安装和使用

6.Visual Studio Code 软件的安装和使用

7.SecureCRT 软件安装和使用

8.Putty 软件的安装和使用

二.Petalinux 的安装

1.Petalinux 简介

2.安装 Petalinux

1、安装依赖库以及软件

2、修改 bash

3、安装 Petalinux

4、设置 Petalinux 环境变量

5、Linux 系统安装 JTAG cable 驱动

三.Petalinux 设计流程实战

1.Zynq UltraScale+ MPSoC 嵌入式软件栈概述

1、FSBL

2、Platform Management Unit (PMU) Firmware

3、ARM Trusted Firmware

4、U-Boot

5、Hypervisor (Optional,可选)

6、Linux

2.使用 Petalinux 定制 Linux 系统

1、创建 Vivado 硬件平台

2、设置 Petalinux 环境变量

3、创建 petalinux 工程

4、配置 petalinux 工程

5、配置 Linux 内核

6、配置 Linux 根文件系统

7、配置设备树文件

8、编译 Petalinux 工程

9、制作 BOOT.BIN 启动文件

10、制作 SD 启动卡

11、开发板启动模式设置


前置学习: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”站点,然后对站点的“常规”进行设置:

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第1张图片

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第2张图片

        如果要将 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…,按照下图所示进行设置:

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第3张图片

        左侧是会话列表,保存着历史会话,会显示出所有曾经连接的串口,这个在关闭 SecureCRT 以后会被保存起来,下次重新打开 SecureCRT 就可以直接使用这个串口会话连接进行快速连接。比如我们关闭 SecureCRT,在关闭 SecureCRT 之前要先关闭所有的会话(串口),重新打开 SecureCRT。上图中重新打开的 SecureCRT 保存这上次关闭之前建立的会话(串口)“serial-com8”,通 过双击“serial-com8”可以重新连接会话(串口),不需要再使用快速连接对话框进行连接设置。 开发板默认出厂烧写了 Linux 系统,所以如果连接上 SecureCRT 以后会将串口作为终端, 会输出 Linux 系统启动信息,并且可以通过 SecureCRT 来操作开发板中的 Linux 系统,此时 SecureCRT 就是开发板的终端,和 Ubuntu 中的终端一样。

关于:SecureCRT 中如何配置颜色

8.Putty 软件的安装和使用

        Putty 和 SecureCRT 是类似的软件,都是用来作为 SSH 或者串口终端的,区别在于 SecureCRT 是付费软件,而 Putty 是免费的。虽然 Putty 没有 SecureCRT 功能强大,但是 Putty 用来作为嵌入式 Linux 的串口终端是绰绰有余的,而且在 Ubuntu 下安装 Putty 十分方便,只需 一条命令即可:

sudo apt install putty

        使用 USB 线将开发板串口和电脑连接起来,打开 Putty 软件,打开以后是配置界面,如下 图所示:

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第4张图片

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第5张图片

二.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)

下载途径:下载 (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

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第6张图片

选择“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

        需要注意的是该命令只对当前终端有效,重新打开终端后需要重新执行这一步。执行结果 如下图所示:

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第7张图片

 我们来验证下工作环境是否已设置,在终端输入如下命令:

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 嵌入式软件栈概述

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第8张图片

        在 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 中找到。在启动过程中,CSU 还将 PMU 用户固件(PMU FW)加载到 PMU RAM 中, 与 PMU ROM 一起提供平台管理服务。对于基于 xilinx 的 FSBL 和系统软件,大多数系统中都 必须有 PMU FW。在 PMU 固件加载前加载 FBSL 是默认配置。有些系统会切换顺序,首先加 载 PMU 固件。

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第9张图片

Boot Image Format with FSBL and PMU Firmware

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第10张图片

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第11张图片

可以参考《xilinx zynq soc与嵌入式Linux设计实战指南》——第三章 zynq启动流程及镜像制作

及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

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第12张图片

官方给出PMU的用处:

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第13张图片

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 上找到。

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 工程配置窗口,如下图所示:

嵌入式Linux_Petalinux一——FPGA学习笔记<?>_第14张图片

        需要注意的是该窗口不可以使用鼠标操作,只能通过键盘操作,界面上方的英文就是简单 的操作说明,操作方法如下:

        通过键盘上的“↑”和“↓”键来选择要配置的菜单按下“Enter”键进入子菜单。菜单中高亮的字母就是此菜单的热键,在键盘上按下此高亮字母对应的键可以快速选中对应的菜单。选中子菜单以后按下“Y”键就会将相应的配置选项写入配置文件中,菜单前面变为“< * >”按下“N”键不编译相应的代码,按下“M”键就会将相应的代码编译为模块,菜单前面变为“< M >”。按两下“Esc”键退出,也就是返回到上一级,按下“?”键查看此菜单的帮助信 息,按下“/”键打开搜索框,可以在搜索框输入要搜索的内容。

在配置界面下方会有五个按钮,这五个按钮的功能如下: