PetaLinux @ Ubuntu20.04

在Ubuntu20.04下安装、测试PetaLinux

PetaLinux是Xilinx公司推出的嵌入式Linux开发套件,包括了Linux Kernel、u-boot、device-tree、rootfs等源码、库,以及Yocto recipes,可以让客户很方便的生成、配置、编译及自定义。PetaLinux支持Zynq UltraScale+ MPSoC、Zynq-7000全可编程SoC,以及MicroBlaze,可与Xilinx硬件设计工具Vivado协同工作,简化了Linux系统的开发工作。

使用PetaLinux工具,开发人员可以定制u-boot、Linux内核或Linux应用,开发者还可以通过网络或JTAG在随附的全系统仿真器 (QEMU) 或物理硬件上添加新的内核、器件驱动程序、应用和库,以及启动并测试软件协议栈,完成从系统启动到执行的所有操作。在主机端提供的PetaLinux工具包括:

  • 命令行界面
  • 应用、器件驱动程序、库生成器以及开发模板
  • 可引导的系统镜像生成器
  • 调试代理程序
  • GCC工具集
  • 集成的QEMU全系统仿真器
  • 自动化工具
  • 支持Xilinx系统调试器

参考文档:ug1144-petalinux-tools-reference-guide

  1. 安装必要的库和程序

    Xilinx网站页面最下方的“2021.2_PetaLinux_Package_List.xlsx”文件内说明了针对不同Linux发行版所需库及其版本。

    sudo apt-get 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

    sudo dpkg-reconfigure dash
    

    选择No

  3. TFTP安装(非必须),参考https://www.cnblogs.com/5201351/p/4934625.html

    sudo mkdir -p /tftpboot
    sudo chown -R $(whoami):$(whoami) /tftpboot
    
  4. PetaLinux可在Xilinx官网免费下载,这里以2021.2为例,注意这里安装的版本要和Vivado的版本一致(包括子版本号)。

    sudo mkdir -p /opt/xilinx/petalinux/2021.2
    sudo chown -R $(whoami):$(whoami) /opt/xilinx/petalinux/2021.2/
    ./petalinux-v2021.2-final-installer.run --dir /opt/xilinx/petalinux/2021.2
    

    注意安装不需要管理员权限。

  5. 配置PetaLinux 工作环境,在~/.bashrc中加入

    source /opt/xilinx/petalinux/2021.2/settings.sh
    

    最后通过

    echo $PETALINUX
    

    验证安装。

使用PetaLinux进行离线编译

由于PetaLinux编译时需要下载很多依赖文件,由于网络的原因很容易导致失败,以2021.2为例整理了一下如何离线编译。

  1. 官网下载aarch64 sstate-cache和downloads文件并解压。

  2. 配置本地downloads
    在使用petalinux-config命令进入配置界面时,进入菜单“Yocto Settings ->Add pre-mirror url” 里,以file://格式提供上述download目录,比如“file:///opt/xilinx/petalinux/2021.2/downloads"

  3. 配置sstate
    选择Yocto Settings -> Local sstate feeds settings,填入aarch64 sstate-cache解压后的所在目录<your path>/aarch64,这里不需要使用file://格式。

  4. 设置离线编译(非必须)
    进入菜单“Yocto Settings -> [] BB NO NETWORK”,按空格键,选择“BB NO NETWORK”。
    设置后,可以到build/conf/plnxtool.conf文件检查配置参数。

  5. 补充(非必须)
    本地download也可以通过在文件project-spec/meta-user/conf/petalinuxbsp.conf里添加下列行设置。

    PREMIRRORS_prepend = "\
    git://.*/.*  file://<your path>/downloads/ \
    ftp://.*/.* file://<your path>/downloads/ \
    http://.*/.* file://<your path>/downloads/ \
    https://.*/.* file://<your path>/downloads/ \
    "
    

使用PetaLinux

  1. 新建PetaLinux工程,这里以ZCU102开发板为例,这里使用板级支持包BSP创建工程zcu102。

    petalinux-create -t project -s <your path>/xilinx-zcu102-v2021.2-final.bsp -n zcu102
    cd zcu102
    
  2. 导入硬件信息
    注意:2019 年前的版本使用system.hdf 文件,而以后的版本使用system.xsa 文件,这需要将老版本的项目转换称为新版本的项目,或者重新建立一个vivado工程,File- ->Export–>Export Hardware,产生xsa 文件。

    petalinux-config --get-hw-description <PATH-TO-XSA-FILE>
    

    出现system configuration menu,可参考前文配置离线编译

  3. 构建Image

    cd build
    petalinux-build
    

    经过较长时间等待后,images/linux文件夹产生bl31.elf,Image,pmufw.elf,u-boot.bin,zynqmp_fsbl.elf等文件。

  4. 产生Boot Image

    cd ..
    petalinux-package --boot --u-boot --force
    
  5. 复制文件到SD卡
    如需格式化SD,划分出两个分区,boot分区(500MB~1GB)和root分区。boot分区使用FAT32格式化,root使用ext4格式化,流程参考这里,SD卡在我的电脑上SD卡被识别到/dev/mmcblk0。

    • 复制images/linux或pre-built/linux/images/文件夹下的BOOT.BIN,image.ub,boot.scr文件到boot分区根目录。其中pre-built/linux/images是来自Xilinx BSP的测试过的文件. images/linux是根据用户自定义,经过petalinux编译过的文件。
    • 复制文件系统到root分区
      dd if=.images/linux/rootfs.ext4 of=/dev/mmcblk0p2
      
  6. 开发板插入SD,检查拨码开关SW6(On,Off,Off,Off),连接USB串口,上位机打开串口工具(如Putty),设置115200波特率。开发板上电后,查看串口输出。

关于SD卡

如遇如下报错:

blk_update_request: I/O error, dev mmcblk0, sector 4210690 op 0x1: (WRITE) flags 0x800 phys_seg 1 prio class 0
Buffer I/O error on dev mmcblk0p2, logical block 0, lost sync page write
EXT4-fs (mmcblk0p2): I/O error while writing superblock
EXT4-fs (mmcblk0p2): mount failed
VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2): error -5

可能是读写超时,需要更换其他SD卡,解释参考这个网站

这里对市面上常见的SD和TF卡(microSD+卡套)在zcu102上进行了测试,结果如下:

名称型号测试
SanDisk Ultra,闪迪至尊高速™ SD™ 存储卡 16GBSDSDUNB-016G-ZN3IN通过
SanDisk Ultra,闪迪至尊高速™ SD™ 存储卡 32GBSDSDUNB-032G-ZN3IN通过
SanDisk Extreme,闪迪至尊极速™ SD™ UHS-I 存储卡 64GBSDSDXV6-064G-ZNCIN通过
SanDisk Ultra,闪迪至尊高速™ microSD 16GBSDSQUNC-016G-ZN3MN未通过
SanDisk Extreme,闪迪至尊极速移动™ microSDXC™ UHS-I 存储卡 32GBSDSQXNE-032G-ZN6MA未通过
SanDisk Extreme PRO,闪迪至尊超极速移动™ microSDXC™ UHS-I 存储卡 32GBSDSDQXP-032G-Z46A通过
SanDisk HIGH ENDURANCE,闪迪® 高耐用 microSD™ 存储卡 32GBSDSQQNR-032G-ZN6IA通过
SanDisk MAX ENDURANCE,闪迪™专业级高耐用 microSD™ 存储卡 32GBSDSQQVR-032G-ZN6IA通过
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值