摆脱PetaLinux繁琐配置:在ZYNQ上快速部署Ubuntu系统
为大家提供了已移植适配的根文件系统,下载后直接解压至SD卡的EXT4分区即可使用。目前提供Ubuntu 14.04、20.04、22.04多个版本,并将持续更新更多新版Ubuntu系统。大幅节省开发时间,让您能专注于软件开发,成倍提升效率!
制作不易,记得三连哦,给我动力,持续更新!!!
完整工程文件下载:https://pan.baidu.com/s/1XlvV7nQyRVnfCevlxCKPMA?pwd=9X5B
前言
在 ZYNQ-7000 平台上进行嵌入式 Linux 开发时,根文件系统的构建与配置至关重要。然而,Xilinx 原生的 PetaLinux 根文件系统配置繁琐复杂,而网络上常见的 Ubuntu 移植教程又往往版本过旧或漏洞百出,使移植过程困难重重。
为此,我们推出了专为 Zynq 定制的一站式解决方案:一个开箱即用的通用 Ubuntu 根文件系统,经深度优化与预配置,可帮助开发者快速部署,大幅节省开发时间。我们不仅分享在 Ubuntu 根文件系统制作、优化与部署中的实践经验与踩坑总结,助您少走弯路,还承诺实时更新,随时提供最新版本的 Ubuntu 系统,确保您的开发始终基于最稳定、最先进的环境。
本文将指导您快速完成以下核心步骤:
-
使用 Vivado 生成硬件描述文件
-
通过 Petalinux 编译生成 BOOT.bin 和内核
-
制作 Ubuntu 根文件系统
-
移植 ZYNQ 硬件配置至 Ubuntu
-
制作 SD 卡启动盘
-
进行程序的测试
我们将基于一个简单的 PL 与 PS 交互程序,从 Vitis 逻辑验证 到 Ubuntu 系统功能验证(如网络、APT),确保系统完全可用。
一、准备环境
-
开发板:ZYNQ-7000 系列
-
vivado、petalinx版本:2019.2
-
Host 环境:Ubuntu 20.04/22.04
-
工具:
chroot、qemu-user-static、交叉编译工具链
二、✅功能展示
在文章开始之前,首先来看看本篇文章具体做了什么
❶ 搭建一个PL和PS交互的程序
本次设计通过 Zynq 的 EMIO 接口,实现对 PL 端 LED 状态读取与开关控制,并实时监测 SW 开关状态

❷ 通过vitis进行功能验证
编写一个逻辑程序,通过SW去控制LED灯状态

❸ 制作ubuntu系统,并对功能进行验证
通过串口进入ubuntu系统

SSH连接ZYNQ ubuntu系统

通过读取SW和控制LED灯程序进行验证
1. 通过命令行打印SW、LED状态

2. 开发板硬件状态

三、程序设计
在构建系统之前,首先需要准备一个基础的 Zynq 硬件设计程序,作为系统搭建与验证的硬件平台。该设计不仅为后续的 Ubuntu 系统提供底层支持,同时也用于验证系统与开发板的兼容性及基本功能是否正确运行。
首先,需创建一个 Vivado 工程,添加并配置 Zynq 处理系统模块,重点启用并扩展 EMIO 接口,同时集成 AXI GPIO 控制器等外设模块。
整体的Block Design设计以及地址分配如下图所示:大家可以根据自己的开发板进行适当更改,这里需要大家有点zynq基础。
程序搭建好之后,就要用petalinx进行编译,具体设计步骤与方法,可参考我之前的详细教程:
通过本教程,您将获得嵌入式系统启动所需的三个核心文件:
-
BOOT.bin(内含 FSBL、比特流与 U-Boot 的启动文件)
-
image.ub(包含 Linux 内核与设备树的镜像文件)
-
rootfs.tar.gz(PetaLinux 根文件系统压缩包)
这些文件是后续 Zynq 系统设计与 Ubuntu 移植的必备基础,在接下来的步骤中均会发挥关键作用。
四、制作ubuntu根文件系统
本章是本系列最核心的内容:详解如何为 Zynq 制作 Ubuntu 根文件系统。本次实践将采用 Ubuntu 22.04 作为基础版本,全程聚焦于实际构建步骤。以下为具体操作流程:
1. 首先在PC主机Ubuntu系统中安装qemu模拟器:
sudo apt-get install qemu-user-static
2. 下载ubuntu22.04 base 包
下载链接:
需要下载 -armhf 结尾的,是适用于zynq系列的,arm64 结尾的是适用于zynqMP的。
3. 在PC主机Ubuntu系统挂载此根文件系统
ubuntu22.04国内源获取链接:
编写挂载脚本 mount.sh,用于挂载根文件系统运行所需要的设备和目录
保存退出后,给脚本增加执行权限,并挂载。
挂载成功如下图所示

4. 配置根文件系统
安装必须软件包
用户设置
配置串口调试服务
配置网络
系统的文件系统表
清除缓存
以上操作全部完成后,输入 exit 退出文件系统,并解除挂载。
5. 压缩为 ubuntu_rootf.tar.gz
五、制作SD启动盘
1. SD卡分区
首先,将 SD 卡划分为两个分区:
-
FAT 格式的 BOOT 分区:用于存放启动文件 BOOT.bin 和内核镜像,建议分配 256MB 空间。
-
EXT4 格式的 ROOT 分区:用于存放根文件系统,占用 SD 卡剩余全部空间。
推荐选用容量大于 16GB 的 SD 卡,以确保充足的系统存储空间。
2. 导入PL端驱动
-
解压 Ubuntu 根文件系统至 ROOT 分区:
-
解压 PetaLinux 生成的
rootfs.tar.gz至临时目录,并复制库文件:
-
执行同步操作,确保数据完整写入 SD 卡:
执行完毕后,即成功制作好 SD 卡启动盘。
六、程序的测试
操作步骤如下:
-
将 ZYNQ 开发板启动模式设置为 SD 卡启动
-
给开发板上电,等待系统启动
-
登录系统(输入用户名和密码)
-
编写并运行 SW 状态查询与 LED 控制程序
完成以上步骤后,即可实现对 PL 端外设的读写控制。
测试程序代码如下:主要功能是通过SW去控制LED状态
首先通过apt-get安装gcc编译器
然后编译sw_led.c
测试现象
1. 通过命令行打印SW、LED状态

2. 开发板硬件状态

上述测试充分证明了 Ubuntu 系统在 ZYNQ 平台上完全可用且适配良好,接下来将开展更复杂的 PL-PS 交互实验,敬请关注后续更新!
七、ubuntu根文件系统获取
我们为大家提供了已移植适配的根文件系统,下载后直接解压至SD卡的EXT4分区即可使用。目前提供Ubuntu 14.04、20.04、22.04多个版本,并将持续更新更多新版Ubuntu系统。大幅节省开发时间,让您能专注于软件开发,成倍提升效率!
完整工程文件下载:https://pan.baidu.com/s/1XlvV7nQyRVnfCevlxCKPMA?pwd=9X5B
下一期将进行ZYNQ上实现ubuntu桌面显示系统设计,大家记得关注我哦😀。
制作不易,记得三连哦,给我动力,持续更新!!!
谢谢大家!!!

浙公网安备 33010602011771号