保姆级教程:在Ubuntu 20.04上为ZYNQ-7000配置Petalinux 2022.1的SD卡启动(含常见报错解决)

张开发
2026/5/4 19:30:18 15 分钟阅读

分享文章

保姆级教程:在Ubuntu 20.04上为ZYNQ-7000配置Petalinux 2022.1的SD卡启动(含常见报错解决)
从零构建ZYNQ-7000的Linux系统Petalinux 2022.1 SD卡启动全指南刚拿到ZYNQ-7000开发板时面对FPGAARM的异构架构很多开发者会困惑如何快速搭建可运行的Linux系统。本文将用最直白的语言带你完成从虚拟机环境配置到SD卡启动的全流程特别针对Petalinux 2022.1版本中的典型问题提供解决方案。1. 环境准备搭建可靠的开发基础在开始之前我们需要一个稳定的Ubuntu 20.04环境。建议使用物理机安装而非虚拟机因为Petalinux编译过程对磁盘I/O要求较高。如果必须使用虚拟机请确保分配至少250GB磁盘空间实际编译后占用约180GB内存建议8GB以上启用CPU虚拟化加速技术必备工具链安装sudo apt update sudo apt install -y \ tofrodos gawk xvfb git libncurses5-dev \ tftpd zlib1g-dev flex bison chrpath \ socat autoconf libtool texinfo gcc-multilib \ libsdl1.2-dev libglib2.0-dev screen pax \ xterm build-essential net-tools libtinfo5注意Ubuntu默认使用dash作为/bin/sh的链接这会导致Petalinux脚本报错。修正方法sudo rm /bin/sh sudo ln -s /bin/bash /bin/sh2. Petalinux 2022.1安装详解下载官方安装包后需要特别注意权限设置chmod 755 petalinux-v2022.1-installer.run # 必须使用755权限 ./petalinux-v2022.1-installer.run /opt/pkg/petalinux安装完成后环境变量配置是第一个容易出错的地方。建议将以下内容加入~/.bashrcsource /opt/pkg/petalinux/settings.sh export PATH$PATH:/opt/pkg/petalinux/tools/xsct/bin常见安装问题排查错误现象解决方案command not found重新source环境变量BitBake报错检查安装包权限是否为755磁盘空间不足清理/temp目录或扩容3. 工程创建与硬件配置创建工程时务必避开安装目录petalinux-create --type project --template zynq --name zynq_linux cd zynq_linux导入Vivado生成的硬件描述文件.hdf时路径中不要包含中文或空格petalinux-config --get-hw-description /path/to/hdf_file关键配置项说明SD/SDIO Settings选择ps7_sd_0作为主启动设备Root filesystem type选择EXT4格式Flash Settings根据实际Flash型号配置如W25Q256提示2022.1版本移除了Advanced bootable images选项启动介质配置需在uboot中完成4. 系统组件定制与编译4.1 U-Boot配置petalinux-config -c u-boot需要确保以下选项启用Boot from SD/EMMCPCI Express支持如需NVMe设备Xilinx AXI Bridge for PCI Express4.2 内核配置petalinux-config -c kernel关键模块NVM Express block devicePCI Express Port Bus supportSD卡驱动相关模块4.3 根文件系统定制petalinux-config -c rootfs推荐添加的实用工具包包分类必备组件Filesysteme2fsprogs, dosfstoolsUtilitiesparted, pciutilsDevelopmentvim, gdb5. 系统构建与镜像打包完整编译命令petalinux-build编译完成后生成的关键文件images/linux/BOOT.BIN包含FSBL、比特流和U-Bootimages/linux/image.ub内核镜像和设备树images/linux/rootfs.tar.gz根文件系统打包启动镜像petalinux-package --boot --u-boot --fpga --force6. SD卡部署实战准备至少8GB的SD卡通过fdisk分为两个分区BOOT分区FAT32100MB存放BOOT.BIN和image.ubROOTFS分区EXT4剩余空间存放根文件系统部署命令示例# 复制启动文件 cp BOOT.BIN image.ub /media/BOOT/ # 解压根文件系统 sudo tar -xzf rootfs.tar.gz -C /media/ROOTFS/ sudo chown -R root:root /media/ROOTFS/7. 上电调试与问题排查开发板设置启动模式跳线设为SD卡启动串口波特率115200确保供电充足常见启动问题现象1卡在Starting kernel...检查image.ub是否包含正确的设备树确认内核配置匹配硬件现象2无法挂载rootfs检查EXT4分区是否完好确认内核已启用EXT4支持现象3uboot无法加载镜像检查SD卡分区是否为MBR格式确认BOOT.BIN包含正确的FSBL我在实际项目中发现使用质量较差的SD卡会导致随机启动失败。建议选择工业级存储卡并在uboot中启用文件系统校验功能。

更多文章