ZYNQ FPGA PetaLinux构建操作系统

ZYNQ FPGA PetaLinux构建操作系统

版本:2019.1
开发板:ZCU102

PetaLinux是一套嵌入式Linux软件开发包,针对的是Xilinx的基于FPGA的SoC设计。PetaLinux工具包括:

  • Yocoto Extensible SDK (eSDK)
  • Minimal downloads
  • XSCT and toolchains
  • PetaLinux Command Line Interface(CLI) tools

Xilinx软件开发包(XSDK)是用于在Xilinx微处理器上创建嵌入式应用程序的IDE;PetaLinux SDK是Xilinx的一套开发工具,包含构建、开发、测试和部署嵌入式Linux系统所需的一切。

安装PetaLinux

(见文档 [ug1144]: PetaLinux Tools Documentation )

  • 在Linux主机上为PetaLinux安装其所需的标准开发工具和库文件

  • PetaLinux工具需要主机的/bin/sh为bash,Ubuntu默认为dash,运行sudo dpkg-reconfigure dash将其修改为bash

  • PetaLinux需要一些标准的开发工具和依赖库。对于Ubuntu系统,执行以下命令安装依赖库

    $ sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev zlib1g:i386 screen pax gzip
    
  • PetaLinux安装包下载地址

  • 执行以下命令安装PetaLinux

    $ mkdir -p /opt/pkg/petalinux/2019.1
    $ sudo chown -R xxm:xxm /opt/pkg/petalinux #递归地修改petalinux目录下所有文件的属主及组
    $ ./petalinux-v2018.3-final-installer.run /opt/pkg/petalinux/2019.1
    
    • 因PetaLinux不能安装在root用户下,而创建的/opt/pkg/petalinux/2018.3目录默认只有属主具有写权限,而属主是root,通过将属主修改为普通用户,就可以在该目录下以普通用户的身份安装PetaLinux了。
    • 安装完成后,不能移动或拷贝已安装的目录,因为在Yocto e-SDK环境文件中已存储了工具的全路径。
    • 安装过程中,会显示license信息,要先输入‘q’退出后,才能输入y同意license
  • 设置PetaLinux的工作环境

    $ source /opt/pkg/petalinux/2019.1/settings.sh
    
  • 检验工作环境

    echo $PETALINUX
    
  • 补充: 若安装过程中出现awk: read error (Bad address)错误,请确保*/usr/bin/awk指向的是/usr/bin/gawk*,而不是/usr/bin/mawk,若没有gwak,则需要安装gawk,运行sudo apt install gawk

设计流程

Design Flow StepTool /Workflow
Hardware Platform Creation (for custom hardware only)Vivado
Create PetaLinux Projectpetalinux-create -t project
Initialize PetaLinux Project (for custom hardware only)petalinux-config --get-hw-description
Configure System-Level Optionspetalinux-config
Create User Componentspetalinux-create -t COMPONENT
Configure the Linux Kernelpetalinux-config -c kernel
Configure the Root Filesystempetalinux-config -c rootfs
Build the Systempetalinux-build
Package for Deploying the Systempetalinux-package
Boot the System for Testingpetalinux-boot

基于BSP

  • PetaLiux BSPs:板级支持包是对所支持开发板的参考设计,可以用作自己创建的工程的基线,它包含了所有必需的设计和配置文件、pre-built和已测试的硬件、软件映像,可以直接下载到开发板中,或者在QEMU仿真环境中启动。

  • PetaLinux Downloads下载BSPs,此处下载ZCU102 ZU9 ES2 Rev 1.0 BSP并将其移到*/opt/pkg/petalinux/2019.1/bsp*目录中。

  • 执行以下命令创建工程

    $ cd ~
    $ petalinux-create -t project -s /opt/pkg/petalinux/2019.1/bsp/xilinx-zcu102-v2019.1-final.bsp
    

从头开始

  • 使用Vivado创建自己的硬件平台。以下是Zynq UltraScale+ MPSoC启动Linux的硬件需求:

    • 至少有64MB的外部存储器(必需)
    • 用作serial console的UART(必需)
    • 非易失性存储器(可选),如QSPI Flash和SD/MMC
    • 以太网(可选)
    • 若soft IP或外部PHY设备使用了中断,要确保中断信号被连接到PS
  • 导出硬件平台:在配置完硬件工程并构建硬件bitstream之后,PetaLinux工程需要一个硬件描述文件(.hdf/.dsa文件),可以通过Vivado中的Export Hardware得到。在工程初始化(或更新)期间,PetaLinux会基于该硬件描述文件生成一个设备树源文件、U-Boot配置头文件并使能Linux内核驱动。对于Zynq UltraScale+ MPSoC平台,启动还需要PMU固件和ATF启动,参考附录C构建PMU和ATF。

  • 创建PetaLinux工程:

    petalinux-create --type project --template <PLATFORM> --name <PROJECT_NAME>
    
    • PLATFORM可以是zynqMP(用于UltraScale+ MPSoC)、zynq(用于Zynq-7000)、microblaze(用于MicroBlaze CPUs)
    • 该命令会从一个默认的模板创建一个新的PetaLinux工程文件夹

配置并构建

  • 进入自己的工程目录:cd <plnx-proj-root>

  • 导入硬件描述文件(若DSA和HDF文件同时存在,DSA(Device Support Archive)文件优先):

petalinux-config --get-hw-description=<path-to-hdf/dsa-directory>
-*- ZYNQMP Configuration
Linux Components Selection --->
Auto Config Settings --->
-*- Subsystem AUTO Hardware Settings --->
DTG Settings --->
ARM Trusted Firmware Compilation Configuration --->
PMU FIRMWARE Configuration --->
FPGA Manager --->
u-boot Configuration --->
Image Packaging Configuration --->
Firmware Version Configuration --->
Yocto Settings --->
  • 确保Subsystem AUTO Hardware Settings被选择,该菜单允许定制系统范围的硬件设置,进入该菜单:

       Subsystem AUTO Hardware Settings
       System Processor (psu_cortexa53_0) --->
       Memory Settings --->
       Serial Settings --->
       Ethernet Settings --->
       Flash Settings --->
       SD/SDIO Settings --->
       RTC Settings --->
    [*]Advanced bootable images storage Settings --->
    

    这一步中工具会分析硬件描述文件,得到所需要的硬件描述信息来更新设备树PetaLinux U-Boot配置文件内核配置文件,基于“Auto Config Settings”和“Subsystem AUTO Hardware Settings”设置。例如,当ps7_ethernet_0被选作Primary Ethernet时,并且对kernel config和U-Boot config开启了自动更新时,工具会自动使能其内核驱动并更新U-Boot配置头文件以使用选择的以太网控制器。

  • 选择“Exit”后,工具开始执行构建过程
    在这里插入图片描述

    经测试,硬件描述文件真的只需要hdf文件即可,测试时使用petalinux-create创建的工程,将基于BSP创建的工程xilinx-zcu102-v2019.1中的硬件描述文件xilinx-zcu102-v2019.1.hdf拷贝到自己创建的工程的hardware目录中,并在自己创建的工程的根目录执行:

    petalinux-config --get-hw-description=./hardware
    

    此步生成的文件在project-spec/meta-plnx-generated目录下

  • 构建PetaLinux系统映像

    petalinux-build
    

在这里插入图片描述

生成文件在images/linux目录中,其中image.ub是FIT映像、Image是包含了RootFS的内核映像

  • 生成uImage

    petalinux-package --image -c kernel --format uImage
    
  • 生成启动映像BOOT.BIN,它常包括FSBL、FPGA bitstream(可选)、PMU固件、ATF和U-boot

    petalinux-package --boot --format BIN --fsbl images/linux/zynqmp_fsbl.elf --u-boot images/linux/u-boot.elf --pmufw images/linux/pmufw.elf --fpga images/linux/*.bit --force
    

    在这里插入图片描述

    --format: 要生成的映像文件的格式

    --force: 覆盖已存在的文件

–atf: 用于指定ATF固件的位置,此处使用了默认值*/images/linux/bl31.elf*

Booting and Packaging

本节描述如何将新建的映像打包到一个prebuilt目录中,当需要将项目以BSP方式发布给其他用户时,通常会执行该步骤。

petalinux-package --prebuilt --fpga images/linux/system.bit

在QEMU上引导PetaLinux映像

petalinux-boot --qemu --prebuilt 3
  • 为了成功运行该指令,通过petalinux-package得到的pre-built/linux/images目录中还差2个文件:pmufw.elf和pmu_rom_qemu_sha3.elf,前者在当前工程的images/linux目录中拷贝,后者在xilinx-zcu102-v2019.1/pre-built/linux/images目录(基于BSP创建的工程)中拷贝
  • 因主机OS使用的不是英语,需要在执行上述该指令前,执行LANG=C将环境变量LANG设置为C,否则会报qemu-system-aarch64: Unable to get size, of device tree file '/tmp/tmp.cA9TX5ccQ0'的错误
  • 登入PetaLinux的用户名和密码均为root;退出QEMU,先按下Ctrl+A,再按下X

在硬件上使用SD卡引导PetaLinux映像

  • 将SD卡挂载到主机上
  • pre-built/linux/images目录下的BOOT.BIN和image.ub拷贝到SD卡(FAT32格式)的第一个分区的根目录
  • 在主机上连接板子上的串口
  • 在主机上打开一个控制台并启动串口通信程序(如kermit、minicom、gtkterm),波特率设置为115200
  • 将板子断电
  • 将板子的启动模式设置为SD卡启动
  • 将SD卡插到板子上
  • 给板子上电
  • 通过串口控制台观察启动消息

BSP打包

定制的PetaLinux工程可以通过BSPs分发给下一级团队或外部客户。

petalinux-package --bsp -p `pwd` --output MY.BSP
  • 以上是在工程根目录下执行该命令,也可以在其他地方执行该命令,-p的参数为工程根目录。

  • 若要将硬件相关的文件也打包到BSP中,可以通过增加--hwsource选项实现

    petalinux-package --bsp -p <plnx-proj-root> --hwsource <hw-projectroot> --output MY.BSP
    
  • 也可以将外部源添加到BSP包中,需要将外部源拷贝到component/ext_sources目录下

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Petalinux是一款由Xilinx开发的Linux嵌入式开发工具,它可以用于构建、配置和定制嵌入式Linux系统。Petalinux主要用于Xilinx的Zynq系列片上系统(SoC)平台,使开发者能够轻松地将Linux操作系统和自定义应用程序部署到嵌入式系统中。 Petalinux具有很多强大的功能和特点。首先,Petalinux支持快速创建和构建基于Yocto Project的Linux嵌入式系统,用户可以通过命令行或图形界面进行系统的配置和定制,包括选择硬件配置、添加组件、进行软件包管理等。其次,Petalinux提供了一系列工具和功能,如设备树生成器、内核配置工具、文件系统生成器等,使开发者可以方便地管理和配置底层硬件和软件。 此外,Petalinux还提供了一些高级功能,如快速启动、动态更新和远程调试等。快速启动功能可以极大地减少系统启动时间,提高嵌入式系统的响应性能。动态更新功能可以实现在线更新系统的应用程序和驱动,而不需要重新启动整个系统。远程调试功能可以通过网络连接实现远程调试和访问目标设备上的日志信息。 总结来说,Petalinux是一种功能强大的嵌入式Linux开发工具,可以帮助开发者快速构建、配置和定制嵌入式Linux系统。无论是在嵌入式系统的原型设计阶段还是在产品发布后的维护和更新阶段,Petalinux都能提供方便和高效的开发环境和工具,以满足不同开发需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值