ZYNQ - 嵌入式Linux开发 -04- 从零搭建Petalinux 2018.3与Vivado SDK一体化环境
1. 环境准备Ubuntu系统与虚拟机配置在开始搭建ZYNQ嵌入式Linux开发环境之前我们需要一个稳定的Ubuntu系统作为基础。我推荐使用Ubuntu 16.04 LTS或18.04 LTS版本这两个版本在Petalinux 2018.3的兼容性测试中表现最好。如果你使用的是Windows或Mac系统可以通过虚拟机来运行Ubuntu。我比较喜欢使用VMware Workstation Player它是免费的而且性能不错。安装时建议分配至少4GB内存和100GB硬盘空间因为后续的编译工作会占用大量资源。记得在虚拟机设置中开启CPU虚拟化支持这能显著提升编译速度。安装完Ubuntu后有几个必做的系统配置更新软件源sudo apt update sudo apt upgrade -y安装基础工具链sudo apt install build-essential git curl -y设置共享文件夹如果你需要在主机和虚拟机之间传输文件共享文件夹的设置有个小技巧先在VMware设置中添加共享目录然后在Ubuntu中安装VMware Toolssudo apt install open-vm-tools open-vm-tools-desktop sudo mount -t fuse.vmhgfs .host:/ /mnt/hgfs这样你就能在/mnt/hgfs下看到主机共享的文件夹了。2. 安装必备依赖与服务Petalinux和Xilinx SDK需要一大堆依赖包少装一个就可能导致各种奇怪的错误。我整理了一个完整的安装清单这些都是我踩过坑后总结出来的sudo apt install -y \ tofrodos iproute2 gawk xvfb gcc git make net-tools libncurses5-dev \ tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat \ chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib \ build-essential libsdl1.2-dev libglib2.0-dev screen pax gzip cpio python \ python3 python3-pip python3-pexpect python3-git python3-jinja2 xz-utils \ debianutils iputils-ping libegl1-mesa libsdl1.2-dev pylint3这里有几个容易忽略的点tftpd是TFTP服务器用于后续的嵌入式系统网络启动libncurses5-dev是menuconfig配置界面必需的库python3-pexpect和python3-jinja2是Petalinux的Python依赖安装完这些后建议设置TFTP和NFS服务器这在嵌入式开发中非常有用。TFTP用于快速传输小型文件如内核镜像NFS则适合开发阶段挂载根文件系统。配置TFTP服务器sudo mkdir /tftpboot sudo chmod -R 777 /tftpboot sudo chown -R nobody /tftpboot echo TFTP_DIRECTORY/tftpboot | sudo tee -a /etc/default/tftpd-hpa echo TFTP_OPTIONS--secure --create | sudo tee -a /etc/default/tftpd-hpa sudo systemctl restart tftpd-hpa3. 安装Petalinux 2018.3工具链Xilinx的Petalinux工具链是构建嵌入式Linux系统的核心工具。首先需要从Xilinx官网下载Petalinux 2018.3安装包注意选择与你的Ubuntu版本匹配的安装包。安装前有几个重要准备步骤创建一个专用用户推荐sudo adduser petalinux检查bash是否为默认shellls -l /bin/sh如果不是bash需要修改确保安装目录有足够空间至少50GB安装过程如下mkdir -p ~/petalinux cd ~/petalinux # 假设安装包已经下载到当前目录 chmod x petalinux-v2018.3-final-installer.run ./petalinux-v2018.3-final-installer.run ~/petalinux/2018.3安装过程中可能会遇到一些错误最常见的是权限问题确保使用普通用户安装不要用root依赖缺失回头检查第二节的依赖是否全部安装空间不足df -h检查磁盘空间安装完成后需要设置环境变量echo source ~/petalinux/2018.3/settings.sh ~/.bashrc source ~/.bashrc验证安装是否成功petalinux-util --webtalk off petalinux-config --get-hw-description./ --silentconfig4. 安装Vivado SDK 2018.3Vivado SDK是Xilinx提供的完整开发环境包含硬件设计工具和软件开发工具。安装前需要下载Xilinx Unified Installer 2018.3这个安装包比较大约20GB建议使用下载工具。安装步骤chmod x Xilinx_Unified_2018.3_1207_2324_Lin64.bin ./Xilinx_Unified_2018.3_1207_2324_Lin64.bin安装界面启动后选择Vivado HL Design Edition和SDK组件。我建议选择以下配置安装目录/opt/Xilinx需要sudo权限勾选Install Cable Drivers选择Full Installation以确保所有工具都安装安装完成后同样需要设置环境变量echo source /opt/Xilinx/Vivado/2018.3/settings64.sh ~/.bashrc source ~/.bashrc验证Vivado安装vivado -version5. 配置一体化开发环境现在我们已经安装了Petalinux和Vivado SDK接下来要让它们协同工作。这里有几个关键配置点硬件描述文件同步 在Vivado中完成硬件设计后需要导出硬件描述文件vivado -mode batch -source export_hardware.tcl然后在Petalinux项目中导入petalinux-config --get-hw-description/path/to/hdf_file共享编译配置 创建一个通用的Petalinux项目配置petalinux-create -t project --template zynq --name base_project cd base_project petalinux-config在配置界面中设置Subsystem AUTO Hardware Settings → Memory Settings → 根据你的板子调整Image Packaging Configuration → Root filesystem type → EXT4 (SD card)交叉编译工具链集成 Petalinux自带交叉编译工具链可以通过以下命令获取路径source ~/petalinux/2018.3/settings.sh echo $CROSS_COMPILE将这个工具链路径集成到你的SDK项目中可以确保应用程序和内核使用相同的编译选项。6. 常见问题与解决方案在实际安装过程中你可能会遇到各种问题。以下是我总结的几个典型问题及其解决方法Petalinux安装卡住 这通常是因为缺少依赖或网络问题。尝试检查所有依赖是否安装临时关闭防火墙sudo ufw disable使用国内镜像源Vivado无法识别USB下载线 需要安装USB驱动cd /opt/Xilinx/Vivado/2018.3/data/xicom/cable_drivers/lin64/install_script/install_drivers sudo ./install_driversPetalinux编译时报错 最常见的错误是内存不足。解决方法增加虚拟机内存创建交换分区sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfileTFTP服务器无法访问 检查以下配置/tftpboot目录权限防火墙设置sudo ufw allow 69/udpTFTP服务状态sudo systemctl status tftpd-hpa7. 开发环境验证完成所有安装后我们需要验证环境是否正常工作。我通常使用以下测试流程硬件设计测试在Vivado中创建一个简单的ZYNQ设计生成比特流文件并导出硬件描述Linux系统构建测试petalinux-create -t project -n test_project --template zynq cd test_project petalinux-config --get-hw-description/path/to/hdf petalinux-build petalinux-package --boot --fsbl --fpga --u-boot应用程序开发测试在Vivado SDK中创建一个简单的Hello World应用编译并加载到开发板运行网络服务测试通过TFTP加载内核镜像通过NFS挂载根文件系统如果所有这些测试都能通过说明你的开发环境已经正确配置可以开始正式的嵌入式Linux开发工作了。