三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Petalinux环境搭建与工程实践入门

Petalinux环境搭建与工程实践入门

1. Petalinux环境搭建全攻略

第一次接触Petalinux的开发者经常会遇到各种环境配置问题。作为Xilinx官方推荐的嵌入式Linux开发套件,Petalinux确实能极大简化Zynq和MicroBlaze平台的开发流程。但安装过程需要特别注意依赖项和系统配置,否则很容易踩坑。

我在多个项目中使用过Petalinux 2018.3到2023.1版本,实测Ubuntu 18.04 LTS和20.04 LTS是最稳定的宿主系统。安装前需要确认三点:至少100GB的可用磁盘空间、稳定的网络连接、以及正确的软件源配置。以下是经过验证的完整安装流程:

1.1 系统依赖安装

Petalinux对系统依赖有严格要求,缺少任何一个包都可能导致后续编译失败。建议直接复制以下命令块到终端执行:

sudo apt-get update sudo apt-get install -y tofrodos iproute2 gawk xvfb git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 lib32z1 lib32stdc++6 lib32ncurses5 libc6-dev-i386 chrpath socat autoconf libtool texinfo gcc-multilib libsdl1.2-dev libglib2.0-dev screen pax gzip

这里有几个关键点需要注意:

  • lib32* 系列库是32位兼容层,缺少它们会导致工具链无法运行
  • tftpd服务用于后续的TFTP文件传输,必须正确配置
  • gcc-multilib支持交叉编译不同架构的代码

安装完成后建议重启系统,确保所有依赖项生效。我曾经遇到过未重启导致环境变量不生效的问题,白白浪费两小时排查。

1.2 TFTP服务配置

嵌入式开发经常需要通过TFTP传输内核镜像和设备树文件。配置步骤如下:

sudo mkdir /tftproot sudo chmod 777 /tftproot echo 'tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftproot' | sudo tee -a /etc/inetd.conf sudo service tftpd-hpa restart

验证服务是否正常运行:

netstat -an | grep udp | grep 69

应该能看到udp 0 0 0.0.0.0:69 0.0.0.0:*的输出。如果端口未监听,检查/etc/default/tftpd-hpa中的TFTP_OPTIONS是否包含-l -c -s /tftproot参数。

2. Petalinux安装与验证

2.1 安装包准备

从Xilinx官网下载Petalinux安装包时,务必注意版本匹配:

  • Vivado版本必须与Petalinux版本完全一致
  • 推荐使用浏览器直接下载,避免wget等工具可能导致的文件损坏

我习惯将安装包放在~/Downloads目录,然后执行:

chmod +x petalinux-v2023.1-final-installer.run ./petalinux-v2023.1-final-installer.run --dir /opt/pkg/petalinux/2023.1

安装过程会提示阅读许可协议,按Enter翻页,输入q退出阅读后选择y同意。整个安装需要30-60分钟,取决于磁盘速度。

2.2 环境验证

安装完成后需要配置环境变量:

source /opt/pkg/petalinux/2023.1/settings.sh

验证安装成功的三个方法:

  1. 检查$PETALINUX变量:

    echo $PETALINUX

    应该输出安装路径

  2. 运行版本检查:

    petalinux-version
  3. 测试工具链:

    arm-linux-gnueabihf-gcc --version

如果遇到command not found错误,很可能是环境变量未正确加载。可以尝试重新打开终端或检查.bashrc中的配置。

3. 创建第一个嵌入式工程

3.1 工程初始化

让我们从经典的Hello World开始:

mkdir -p ~/petalinux_projects cd ~/petalinux_projects petalinux-create -t project --template zynq --name hello_world cd hello_world

这里有几个实用技巧:

  • --template参数根据硬件平台选择:zynq、zynqMP或microblaze
  • 工程名不要包含空格和特殊字符
  • 建议为每个硬件平台创建独立目录

3.2 配置与编译

生成默认配置:

petalinux-config --get-hw-description=<Vivado导出目录>

如果暂时没有硬件描述文件,可以使用预置配置:

petalinux-config --silentconfig

编译整个系统:

petalinux-build

第一次编译可能需要1-2小时,过程中会下载各种源码包。建议保持网络畅通,如果中断可以重新执行build命令,Petalinux会自动继续未完成的编译。

3.3 QEMU测试

Petalinux内置了QEMU模拟器,无需真实硬件即可测试:

petalinux-boot --qemu --kernel

成功启动后会看到Linux登录提示,输入root即可进入系统。测试Hello World程序:

echo "print('Hello PetaLinux')" > /home/root/test.py python test.py

4. 常见问题排查

4.1 安装失败处理

如果安装过程中断,需要完全清理后重试:

rm -rf /opt/pkg/petalinux sudo apt-get purge libssl-dev libncurses5-dev

特别注意检查/tmp目录下的临时文件,有时残留文件会导致重新安装失败。

4.2 编译错误解决

最常见的两个编译错误:

  1. 许可证错误:确认Xilinx许可证服务器设置正确

    export XILINXD_LICENSE_FILE=<license路径>
  2. 内存不足:建议系统至少有16GB内存,可以设置交换分区:

    sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

4.3 工程管理建议

对于长期项目,建议:

  • 使用petalinux-package打包完整镜像
  • 定期备份project-spec配置目录
  • 为不同硬件版本创建分支

我在实际项目中发现,合理使用petalinux-upgrade可以平滑过渡到新版本,但要注意检查所有自定义模块的兼容性。

← 返回列表