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通过
### 配置和控制 Ubuntu 20.04 上的 Robotics 环境 #### 1. ROS Noetic 的安装与配置 为了在 Ubuntu 20.04 上构建机器人开发环境,通常会依赖于 Robot Operating System (ROS)。以下是针对 ROS Noetic 的具体安装步骤: - 设置源列表并更新密钥环: ```bash sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 ``` - 更新包管理器索引并安装桌面版本: ```bash sudo apt update sudo apt install ros-noetic-desktop-full ``` 此命令将安装完整的 ROS Noetic 版本[^2]。 - 初始化 `rosdep` 并配置环境变量: ```bash sudo rosdep init rosdep update echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` #### 2. 编译 FUEL 和 RACER 多机探索代码 对于涉及无人机快速探索的任务,可以参考已有的开源项目如 **FUEL** 或 **RACER** 进行编译和调试。以下是一些常见错误及其解决方案: - 如果遇到链接库缺失问题,可能需要手动安装额外的支持工具链: ```bash sudo apt-get install python-catkin-tools python-rosinstall-generator ``` - 对于特定算法实现中的编译失败情况(例如 STL 文件解析),可以通过调整 CMakeLists.txt 中的选项来规避兼容性问题。例如,在某些情况下增加 `-DUSE_OPENMP=OFF` 参数可能会解决问题[^1]。 #### 3. MATLAB 工具箱集成 部分高级功能可能需要用到 MATLAB 提供的功能模块。可以在 Docker 容器内部通过非交互模式完成静默部署过程: - 添加必要的环境变量到 shell profile 文件中去: ```bash export DEBIAN_FRONTEND=noninteractive apt-get install -y matlab-support ``` 上述脚本片段展示了如何利用 Debian 前端设置禁用图形界面提示框从而简化自动化流程[^4]。 #### 4. FPGA 开发支持 如果目标硬件平台还包含了可编程逻辑器件,则需进一步扩展至 Xilinx SDK 生态圈内工作流当中。这一步骤涉及到 Vivado Design Suite 及其配套软件栈 PetaLinux Tools 的联合运用场景分析说明文档指出至少预留超过三十吉字节磁盘空间才能顺利完成全部组件下载动作[^3]。 ```bash wget https://www.xilinx.com/bin/public/openDownload?filename=vitis-petalinux-2021.2-final-installer.run \ -O vitis_petalinux_installer.run && chmod +x ./vitis_petalinux_installer.run ./vitis_petalinux_installer.run ``` 执行完毕之后记得按照向导指示填写许可证序列号等相关信息字段即可激活对应授权许可状态。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值