在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™ 存储卡 16GB SDSDUNB-016G-ZN3IN 通过
SanDisk Ultra,闪迪至尊高速™ SD™ 存储卡 32GB SDSDUNB-032G-ZN3IN 通过
SanDisk Extreme,闪迪至尊极速™ SD™ UHS-I 存储卡 64GB SDSDXV6-064G-ZNCIN 通过
SanDisk Ultra,闪迪至尊高速™ microSD 16GB SDSQUNC-016G-ZN3MN 未通过
SanDisk Extreme,闪迪至尊极速移动™ microSDXC™ UHS-I 存储卡 32GB SDSQXNE-032G-ZN6MA 未通过
SanDisk Extreme PRO,闪迪至尊超极速移动™ microSDXC™ UHS-I 存储卡 32GB SDSDQXP-032G-Z46A 通过
SanDisk HIGH ENDURANCE,闪迪® 高耐用 microSD™ 存储卡 32GB SDSQQNR-032G-ZN6IA 通过
SanDisk MAX ENDURANCE,闪迪™专业级高耐用 microSD™ 存储卡 32GB SDSQQVR-032G-ZN6IA 通过

PetaLinux @ Ubuntu20.04相关推荐

  1. 【无标题】ubuntu20.04 开机引导后黑屏 光标闪现 无法进入图形桌面的解决方案_Denis.Zzzzzzzz?的博客-CSDN博客_ubuntu20黑屏光标闪烁

    ubuntu20.04 开机引导后黑屏 光标闪现 无法进入图形桌面的解决方案_Denis.Zzzzzzzz?的博客-CSDN博客_ubuntu20黑屏光标闪烁

  2. 用UltraISO制作Ubuntu20.04 U盘启动盘

    用UltraISO制作Ubuntu20.04 U盘启动盘 下载ubuntu系统 首先到官网下载新版系统 https://cn.ubuntu.com/download/desktop 制作启动盘 下载U ...

  3. 13.在Ubuntu20.04下,chromium无法输入中文以及如何卸载chromium浏览器

    因为chromium安装比较简单,所以在Ubuntu20.04下直接安装了chromium,但是最近发现,无法在chromium中输入中文了,经过一顿折腾,最终也没搞定,解决办法就是安装Chrome ...

  4. linux 卸载 rtx,Ubuntu20.04系统卸载软件及清理系统垃圾缓存以及新力得

    我们用Windows乃至手机Android系统用多了,都知道定时清理系统垃圾这种必修课.那么在Ubuntu这样的Linux系统下,我们应该怎么清理系统删除垃圾缓存呢?其实Ubuntu和Windows是 ...

  5. ubuntu20.04安装noetic版本ros

    文章目录 1. ubuntu设置为中文界面 2.配置Ubuntu软件仓库 3.设置sources.list 4.设置密钥 5. 安装ros 6. 设置环境 7. 测试ROS安装是否成功 8. 初始化r ...

  6. ROS知识 【6】Ubuntu20.04下安装ROS-noetic

    背景知识 SLAM技术严重依赖于ROS操作系统,因此,必须高度熟悉ROS才能进行SLAM编程. Ubuntu20.04是最新的Ubuntu操作系统,而ROS-Noetic是ROS1.0的最后一个版本. ...

  7. Ubuntu20.04中安装shutter

    目录 事情起因 快速安装(命令行安装) 详细描述 官网截屏(使用shutter) 事情起因 从18.04 换成了20.04,但是自带的截屏实在太难用了.于是按照之前的方法安装了shutter,然而发现 ...

  8. [How TO]-图解virtualbox下安装ubuntu20.04虚拟机

    文章目录 1.在virtualbox下安装ubuntu20.04 2.安装增强功能 1.在virtualbox下安装ubuntu20.04 注意:这里是将虚拟机安装到了C:\Users\zhhh8\V ...

  9. Ubuntu20.04上安装部署Elasticsearch

    一.背景 在我们开发ElasticSearch相关功能的时候,想要本机部署一个ElasticSearch服务.想采用apt-get install 的方式来安装.本文在Ubuntu20.04上安装部署 ...

最新文章

  1. 基于点云方式的6D姿态识别
  2. getRunningTasks和getRunningAppProcesses失效
  3. GitHub上传本地代码到仓库[Windows]
  4. 用最少数量的箭引爆气球
  5. java 有选择的查询_如何在Java中将准备好的语句用于选择查询?
  6. Android NFC开发-理论篇
  7. 如何在本地管理和切换多个 github 账号?
  8. spark yarn 提交作业
  9. 详细说明手工创建oracle数据库实例
  10. 吉比特无源光纤说明书_光纤上网是如何实现的?
  11. spring cloud 项目打包时,有一个数据库配置的是现场的库,所以一直不成功,怎么办?
  12. java实现冒泡算法
  13. pip卸载安装的所有python包
  14. python 视频剪辑_视频剪辑什么鬼?Python 带你高效创作短视频
  15. MongoDB聚合操作MongoDB常用聚合管道聚合$project$match$count$group$unwind$limit$skip$sort$lookup用法及操作案例
  16. 概率统计学习笔记(9)——连续型:均匀分布、指数分布
  17. U盘中快捷方式病毒的解决方法
  18. css3之BFC、IFC、GFC和FFC
  19. 基于nginx搭建在线播放mp4
  20. 洛谷算法题单:模拟与高精度例题(下)

热门文章

  1. 京东商品提高点击率,批量添加主图水印
  2. selenium跳过webdriver检测并爬取天猫商品数据
  3. 阿里云盘 15MB/s!(附下载链接+邀请码)
  4. 阿里云 EDAS Java服务日志中打印调用链TraceId
  5. Linux 01:环境准备
  6. Fedora9安装mplayer支持rm,rmvb格式
  7. 将rmvb下载的电影转换成可用家庭dvd播放的dvd格式
  8. 【JVM进阶之路】二:Java内存区域
  9. String总结,自己在麦库记事 学习笔记的整理
  10. 【协同任务】蚁群算法多组群UAV协同任务路径规划【含Matlab源码 1578期】