datasheet

Xilinx 赛灵思

文章数:420 被阅读:277449

账号入驻

技术文章:PetaLinux 第一部分 - 简介

2019-07-09
    阅读数:

点击蓝字关注我们

此博客面向想要开始使用 PetaLinux、了解其关键工具、概念和功能的任何人。在第一篇博客文章中,我们将介绍如何针对 ZCU102 开发板创建PetaLinux 工程,以及如何修改镜像。 


我会完成本教程中所需的基本步骤,但博客的范围有限。您可以在赛灵思网站找到有关 PetaLinux 的更多信息。 



什么是 PetaLinux? 

PetaLinux 是构建于Yocto Linux 发行版的一组高级命令。PetaLinux 工具让您能够为赛灵思处理器系统定制、构建和部署嵌入式 Linux 解决方案/Linux 镜像。此工具专为提高设计效率而量身定制,并可与赛灵思硬件设计工具(如 Vivado)一起使用,以便于轻松地开发面向 Zynq® UltraScale+™ MPSoC、Zynq®-7000 SoC 和 MicroBlaze™ 的 Linux 系统。


简单说来,它是一组简化的命令,可用于快速轻松地为赛灵思开发板制作定制的 Linux 系统/镜像!



PetaLinux 设计流程

PetaLinux 设计流程如下所示。本教程主要讲解图中所示的 1-4 部分内容。我假设您已在系统上安装并设置了 PetaLinux 工具,但如果还没有安装和设置,则可以进行 Xilinx WiKi 寻找和下载“入门指南”。


在此博客中,我就不对通常在 SDK 中完成的“软件设置和启动程序”部分做详细介绍了。在运行此博客提供的 Tcl 脚本时,该部分会自动完成。

步骤 1:创建硬件平台

注意:您可以使用此博客文章提供的预先构建的 HDF 文件跳过此步骤。

背景:

本节主要介绍使用 Vivado 2018.3 为电路板创建定制硬件时需遵循的步骤。从 Vivado,我们将输出硬件描述文件 (HDF)。 


为了为电路板构建目标 PetaLinux 工程,PetaLinux 工具需要了解电路板上的底层硬件系统。HDF 文件对电路板的硬件架构进行了描述。如果要构建 PetaLinux 工程,则必须执行此操作,以便生成的镜像可以在打开电源启动时正确地配置电路板


为了加快设计进程,本博客附带了一个 Tcl 脚本。在 Vivado 中运行时,Tcl 脚本将执行以下操作:

  • 为原理图创建输出产品

  • 创建硬件描述语言 (HDL) 封装器

  • 生成比特流

  • 将硬件导出到 SDK 以创建硬件描述语言 (HDF) 文件

下载此博客附带的 Tcl 脚本。该脚本提供有用于在 Vivado 2018.3 中创建和构建硬件的指令列表。


启动 Vivado 2018.3。


使用 GUI 底部 Tcl 提示符中的 cd 命令将目录变更为保存 Tcl 脚本的目录:

接下来使用 source 命令运行脚本:

这随即会创建如下所示的硬件原理图。


该原理图展示了我们的 Zynq UltraScale+ 电路板上的底层架构:

另外,如果您不想使用 Tcl 脚本并且对 Vivado 很熟悉,则可以参考上面的原理图手动创建设计。如果要使用早于 2018.3 的 Vivado 版本,则必须手动创建原理图。 


步骤 2:创建 PetaLinux 项目

背景:

在此步骤中,我们将使用上一步中创建的 HDF 文件来创建基本的 PetaLinux 工程。


这些步骤在使用 Linux OS 的计算机上运行。由于我用的是 Windows 系统,我用的是安装了 Linux OS 和 PetaLinux 2018.3 的虚拟机。

有两个源可用来创建 PetaLinux 工程、BSP 和模板工程。

BSP

BSP 包含一些预先构建的文件,可用来加快开发过程。它只能与标准的赛灵思开发板一起使用,因为它包含对电路板底层架构进行描述的 HDF文件。


因为它包含 HDF 文件,所以,如果使用此方法,即可跳过上面提到的步骤 1。总的来说,它包含以下内容:

  • PetaLinux 工程和工作区

  • 硬件工程、HDF 和比特流

  • FS-BOOT(如果使用的是 MicroBlaze)、ATF(在使用 Zynq UltraScale+ 的情况下为 bl31)、Linux、U-Boot、pmufw (Zynq UltraScale+)、rootfs、dtb(设备树 blob)、BOOT.bin 等的预建镜像。

要使用 BSP 创建 PetaLinux 工程,请在运行 PetaLinux 的 Linux 终端使用以下命令:

petalinux-create -t project -s <path to BSP>

模板工程

在本教程中,我们将使用 ZynqMP 的模板工程来创建 PetaLinux 工程。如果您有定制的赛灵思电路板,则必须使用模板工程,但也可以与标准的赛灵思开发板一起使用。BSP 不能与定制电路板一起使用,因为它包含仅描述标准赛灵思开发板架构的 HDF。 


在运行 PetaLinux 的 Linux 中打开终端。 


在 Linux 终端中键入以下命令。此操作将为 zynqMP 创建名为 first_linux 的工程模板。

petalinux-create --type project --template zynqMP --name first_linux

接下来,您可以将刚创建的模板与步骤 1 中在 Vivado 中创建的硬件信息组合在一起。


从 Vivado 导出的 HDF 文件中有一个硬件描述文件 (HDF)。PetaLinux 通过 HSI 实用程序从该文件中提取有关硬件的信息,以及诸如 devicetree生成器等其他工具中使用的 IP、网络端口和接口等信息。它还将用来填充有关硬件系统的一些系统级工程信息。 


要提取硬件信息,请使用以下命令:


cd first_linux

petalinux-config --get-hw-description=<path to HDF>

系统配置窗口随即会出现。这是用户可以对 PetaLinux 工程进行系统级更改的地方。


也可以使用 petalinux-config 命令打开此配置。由于不需要更改系统级别,您可以退出窗口然后保存。



步骤 3:编辑镜像

背景:

在此步骤中,我们将尝试修改上一步中由 PetaLinux 工具创建的标准 PetaLinux 工程。 


PetaLinux 使用配方 (recipe) 来执行任务。例如,如果您想生成一个 devicetree,通常需要完成一系列不同的步骤(下载源代码、导入 HDF 文件......等)。这些步骤可以组合在一起,并作为 PetaLinux 中的单个‘devicetree’配方来运行。


这些配方是通过 Bitbake 构建的。它会检查各个配方是否相互依赖或依赖于其他任务、是否能恰当地分配构建任务。用户可以通过 conf 文件夹中local.conf 文件将信息传递给 Bitbake。


PetaLinux 配方还会被组织成图层 (layer)。 


许多标准配方用于在 PetaLinux 中创建镜像。但是,如果要自定义镜像,则无法直接修改配方或 PetaLinux 构建目录。


这是因为,由于工具流程,在每次重建工程时都会覆盖配方和目录,因此任何更改都会丢失。相反,您必须创建一个叫作‘recipe append’的东西。这只是一个文件(内含对标准配方的所有修改请求)。系统会在构建时检查‘recipe appends’并用它们来修改镜像,如下图所示:

现在您已经了解了背景信息,那我们来尝试修改我们的镜像的一部分,Bootloader (FSBL) 的第一阶段。


1.在下方创建文件结构。在上一步中构建 PetaLinux 工程后,应该已经在根文件夹中创建了 project-spec、meta-user 和 recipies-bsp 文件夹。

注意:meta-user 层是所有用户特定更改的占位符。您可以在此层中添加自己的 bbappend 和配置文件


 2.  将 fsbl_%.bbappend 附加文件(在“<ptlx-proj-root>\project-spec\meta-plnx-generated\recipes-bsp\fsbl”)复制到新创建的‘fsbl’文件夹中。如下所示,‘fsbl’文件夹现在包含一个 files 文件夹和 fsbl_%.bbappend 文件。 

注意:包含原始 fsbl_%.bbappend 文件的 meta-plnx-generated 的层包含所有组件的所有 bbappend 和配置片段 (cgf)。该层中的所有文件均由基于 HDF 和用户配置生成的工具。由于每次构建时都会覆盖此文件夹中的所有文件,因此我们无法直接对此图层进行任何更改。这就是我们将 meta-user 文件移动到 meta-user 层的原因。



3.使用以下内容更新 fsbl_%.bbappend 文件。 

注意:需要通过将补丁文件名添加到 SRC_URI_append 变量的方式来提示 fsbl_%.bbappend 使用补丁文件。补丁文件的位置由 FILESEXTRAPATH_prepend 变量给出。您可以通过使用以下值更新 YAML_COMPILER_FLAGS_append 变量的方式来打开调试。

#Force to use embeddedsw repo
EXTERNALXSCTsrc=""
EXTERNALXSCTSRC_BUILD = ""

#Patch FSBL
SRC_URI_append += " file://0001_fsbl_patch.patch"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

#Enable FSBL DEBUG
YAML_COMPILER_FLAGS_append = " -DFSBL_DEBUG_INFO -DXPS_BOARD_ZCU102"

4.将 0001_fsbl_patch.patch 从 fsbl_patch 文件夹(从附加到此博客的 zip 文件)添加到‘files’文件夹,这样它就是 fsbl_%.bbappend 文件下的一层了。它会用“Hello Linux PDC” printf 语句更新源代码。 


5.创建 FSBL 时,bbappend 文件中的内容将被用来修改构建目录中的 FSBL 配方。要创建 FSBL 并应用修改,可以使用以下命令:

petalinux-config -c bootloader

6.要验证是否已正确应用修补程序:


在 2018.3 及以上的版本中:

将对 tmp 文件夹中的文件进行更改。这是您的“Build Directory”。要查找 tmp 文件夹的位置,请打开配置窗口: 

petalinux-config

菜单选项卡打开后,转到 Yocto Settings -> TMPDIR 目录,然后复制显示的位置。 

退出设置。您需要在 TMPDIR 中搜索名为 xfsbl_hooks.c 的文件,然后打开这个文件:

find /tmp/<TMPDIR> -name xfsbl_hooks.c

复制终端中显示的位置。您可以使用‘gedit’命令打开文件:

gedit /tmp/<TMPDIR>/<xfsbl_hooks.c Location>

然后在第 96 行,您应该会看到一个 print 语句。


在 2018.2 和更早版本中:

打开 <plnx-projroot>/components/plnx_workspace/fsbl/src/xfsbl_hooks.c。这是 2018.2 及更早版本的 FSBL 的“Build Directory”。然后在xfsbl_hooks.c 的第 96 行,您应该会看到那个 print 语句。



如果您看到那个 print 语句,那么干得漂亮,您已经成功地为 FSBL 创建了一个追加配方!


注意:如果要对 FSBL 进行进一步更改,建议您首先使用以下命令清除构建目录中现有的 FSBL (如果有的话)。


只有 2018.2 及更早的版本才需要先使用 rm 命令删除 plnx_workspace 目录。  

rm -rf components/plnx_workspace

petalinux-build -x mrproper

THE

END


点击“阅读原文”,下载本文代码

右边给我一朵小花花

赛灵思公众号

打造灵活应变,万物智能的世界

长按二维码关注我们


最新有关xilinx_inc的文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved