Petalinux工程设计流程
完整Petalinux工程实践目录前言一、ZYNQ启动流程二、Petalinux常用命令介绍三、搭建Petalinux工程3.1 Vivado 创建硬件平台3.2 创建 petalinux 工程3.2.1 设置 Petalinux 运行环境3.2.2 创建 petalinux 工程3.2.3 petalinux 工程中导入xsa 文件并配置3.2.4 配置 Linux 内核3.2.5 配置 Linux 根文件系统3.2.6 配置设备树文件3.2.7 编译Petalinux工程3.2.8 打包BOOT.BIN四、制作 SD 启动卡五、进入 Linux 系统总结前言本文介绍了一整套Petalinux工程搭建的流程本文使用的Vivado环境为2020.2Ubuntu环境为18.04Petalinux环境为2020.2搭建工程以zynq-7000系列的XC7Z020芯片为例。这里搭建一个ZYNQ嵌入式最小系统从硬件配置到Petalinux系统工程的搭建。从理论到实战逐步分析层层递进一、ZYNQ启动流程在使用Petalinux创建工程前先了解一下ZYNQ启动流程ZYNQ启动有三个阶段Stage 0 (BootROM: BootROM Header)Stage 1 (FSBL / User code)Stage 2 (U-Boot / System / Application)以下为官方文档的介绍为了方便理解这里借用正点原子的流程图来分析Stage 0BootROMBoot是引导ROM是只读内存也就是BootROM中有一段只读的引导代码代码用于SD卡等外设初始化读取引脚配置最后加载镜像到OCMOCM是片上内存这里主要是起一个引导加载的作用引导加载程序FSBL引导代码到OCM中。引导加载过后Stage 0结束开始Stage 1阶段。这里注意在Stage 0阶段不对PL进行任何操作。Stage 1控制权到FSBL时主要先进行PS的初始化再加载PL配置文件也就是bit文件然后加载SSBL或裸机程序这里需要看实际情况是跑操作系统还是跑裸机程序。跑操作系统加载SSBL加载过后会跳转执行SSBL进入Stage 2阶段这时控制权就转交SSBL。跑裸机程序加载裸机程序后就会只执行裸机程序不会进入Stage 2阶段。Stage 2通过SSBL加载操作系统到DDR其中U-Boot是通用引导加载程序U-Boot来负责加载Linux操作系统。二、Petalinux常用命令介绍先来介绍下Petalinux工程设计的命令PetaLinux 工具遵循顺序化的处理流程以下是官方文档的内容这里按表格的顺序也是Petalinux中创建工程的顺序本文举例介绍的Petalinux设计流程如下1. 通过 Vivado 创建硬件平台得到 xsa 文件2. 运行 source 安装路径/settings.sh设置 Petalinux 运行环境3. 通过 petalinux-create -t project 创建 petalinux 工程4. 使用 petalinux-config --get-hw-description将 xsa 文件导入到 petalinux 工程当中并配置 petalinux 工程5. 使用 petalinux-config -c kernel 配置 Linux 内核6. 使用 petalinux-config -c rootfs 配置 Linux 根文件系统7. 配置设备树文件8. 使用 petalinux-build 编译整个工程9. 使用 petalinux-package --boot 制作 BOOT.BIN 启动文件10. 制作 SD 启动卡将 BOOT.BIN 和 image.ub 以及根文件系统部署到 SD 卡中11. 将 SD 卡插入开发板并将开发板启动模式设置为从 SD 卡启动12. 开发板连接串口线并上电启动串口上位机打印启动信息登录进入 Linux 系统。三、搭建Petalinux工程理论部分介绍完下面从Vivado 开始来完整创建一个实际的工程3.1 Vivado 创建硬件平台本文使用的Vivado环境为2020.2搭建工程以zynq-7000系列的XC7Z020芯片为例。这里搭建一个ZYNQ嵌入式最小系统主要用来演示Petalinux系统工程的搭建。打开Vivado创建一个工程点击Next选择好合适的位置来存放工程。点击Next一直点击Next选择对应的芯片型号。点击FinishVivado开始创建工程。这里先搭建bd在Design中点击 号添加IP核这里对于ZYNQ最小系统的配置可以参考之前博客ZYNQ嵌入式最小系统配置ZYNQ7000与ZYNQMP系列_zynq最小系统-CSDN博客这里仅展示部分配置参数配置完成后点击Run Block Automation勾选好选项点击OK验证搭建的Block Design验证成功完成综合综合成功后导出硬件文件。硬件文件导出成功后得到xsa接下来就可以将xsa文件导入到Petalinux里创建系统工程了3.2 创建 petalinux 工程3.2.1 设置 Petalinux 运行环境在正式使用 petalinux 工具之前需要先设置petalinux的作环境输入以下指令source /opt/pkg/petalinux/2020.2/settings.sh运行如图所示3.2.2 创建 petalinux 工程创建一个名为Zynq_7020的Petalinux工程输入以下指令petalinux-create -t project --template zynq -n Zynq_7020-t是“--type”的简写template参数表明创建的petalinux工程使用的平台模板zynq表明使用 的是 zynq平台模板的petalinux工程用于zynq-7000 系列的芯片。而 Zynq UltraScaleMPSoC 系列的芯片就需要变为zynqMP 表明使用的是 zynqMP SoC 平台模板的 petalinux 工程。name参数此处简写为“-n”后接的 是 petalinux工程名运行如图所示在指定文件路径下就创建了一个工程文件3.2.3 petalinux 工程中导入xsa 文件并配置先将硬件文件导入工程文件夹中首次配置 Petalinux工程是将xsa文件导入到Petalinux工程中Petalinux工具会解析xsa文件并弹出配置窗口。输入以下指令petalinux-config --get-hw-description ./hardware/design_1_wrapper.xsa运行如图所示弹出petalinux图形化配置窗口可根据实际工程进行配置完成petalinux工程的配置后会回到终端3.2.4 配置 Linux 内核输入以下指令petalinux-config -c kernel运行如图所示会弹出Linux内核的图形化配置界面根据实际工程配置完成后会回到终端3.2.5 配置 Linux 根文件系统输入以下指令petalinux-config -c rootfs运行如图所示会弹出根文件系统的图形化配置界面根据实际工程配置完成后会回到终端3.2.6 配置设备树文件在工程路径下工程名/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi 找到system-user.dtsi 设备树文件进行编辑应对Vivado工程中的PS配置可以添加相匹配的外设code /home/echo/Petalinux/Zynq_7020/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi3.2.7 编译Petalinux工程输入以下指令petalinux-build运行如图所示3.2.8 打包BOOT.BIN输入以下指令petalinux-package --boot --fpga --u-boot --fsbl指令中“petalinux-package --boot”命令生成可引导映像该映像可直接与Zynq系列设备包括Zynq-7000和Zynq UltraScale MPSoC或基于MicroBlaze的FPGA设计一起使用。“--fsbl”用于指定fsbl文件所在位置后面接文件对应的路径信息如果不指定文件位置默认对应的是 images/linux/zynq_fsbl.elf“--fpga”用于指定bitstream文件所在位置后面接该文件对应的路径信息默认对应的是 images/linux/system.bit“--u-boot”用于指定U-Boot文件所在位置后面接该文件所在路径信息默认为 images/linux/u-boot.elf。运行如图所示进入Petalinux工程的images/linux目录下可以看到打包生成的文件四、制作 SD 启动卡这里推荐一个工具可以使用图形化的界面对SD卡进行分区简单的方法实现和指令分区一样的效果。在Ubuntu中安装下图所示软件分区配置参数点击√点击Apply分区完成后点击Close打开文件夹可以发现分区好的BOOT目录和rootfs目录SD卡分区完成后们将该工程image/linux目录下的BOOT.BIN、boot.scr和image.ub文件拷贝到BOOT分区输入以下指令cp BOOT.BIN image.ub boot.scr /media/echo/BOOT/运行结果如图将该工程 image/linux目录下的系统根文件解压到rootfs分区输入以下指令sudo tar -zxvf rootfs.tar.gz -C /media/echo/rootfs/运行结果如图打开BOOT文件夹可以看到打开rootfs文件夹可以看到五、进入 Linux 系统板卡插入SD卡连接好串口打开串口工具这里需注意将板卡的启动模式开关调整为SD卡启动。上电后串口中会有如下打印信息输入用户名root密码也是默认密码root就可以进入板卡的Linux系统中了。总结以上就是今天要讲的内容本文介绍如何搭建一整套Petalinux工程。

相关新闻

网易三面:Code Agent 是怎么改代码的?三代方案演进与四个致命细节

网易三面:Code Agent 是怎么改代码的?三代方案演进与四个致命细节

文章目录 前言 一、模型的"眼睛"和"手"是分开的 二、第一代:全文件重写 三、第二代:Diff / Patch 格式 四、第三代:字符串精确匹配替换 五、字符串替换的四个致命细节 六、工具签名设计 七、从架构师视角看编辑工具的几个工程取舍 八、面试话术:考官想…

2026/7/21 7:38:06 阅读更多 →
Mcal配置PWM SBC芯片SA47301X

Mcal配置PWM SBC芯片SA47301X

现象:烧录完程序,断开debug短接口,重新上电,无法启动,电流只有0.03A,若连接上debug短接口,程序就跑起来了。分析:debug短接口的原理图如下测量:用示波器接入SBC的nRESET管…

2026/7/21 7:38:06 阅读更多 →
AI降重工具测评:2026年降重降AI率工具横向对比,哪个更实用?

AI降重工具测评:2026年降重降AI率工具横向对比,哪个更实用?

用AI辅助写论文,常遇到查重报告里AI疑似度居高不下的情况。这时,一款得力的降重降AI率工具就能帮你解围。 2026年的学术写作环境中,单靠大模型创作内容已不够稳妥。专门针对AIGC特征优化的降重降AI率工具,才能真正压低检测数值。…

2026/7/21 7:37:06 阅读更多 →

最新新闻

Dify文本生成应用效能跃迁(企业级Prompt工程+RAG深度调优双引擎)

Dify文本生成应用效能跃迁(企业级Prompt工程+RAG深度调优双引擎)

更多请点击: https://kaifayun.com 第一章:Dify文本生成应用效能跃迁全景图 Dify 作为低代码 AI 应用开发平台,正推动文本生成类应用从原型验证迈向生产级规模化落地。其核心价值不仅在于简化 LLM 调用封装,更体现在工作流编排、…

2026/7/21 21:20:45 阅读更多 →
vscode-langservers-extracted vs 官方VSCode语言服务器:性能对比与优势分析

vscode-langservers-extracted vs 官方VSCode语言服务器:性能对比与优势分析

vscode-langservers-extracted vs 官方VSCode语言服务器:性能对比与优势分析 【免费下载链接】vscode-langservers-extracted vscode-langservers bin collection. 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-langservers-extracted vscode-langse…

2026/7/21 21:20:45 阅读更多 →
AI提示词版本混乱危机(时间线漂移预警):Git式提示管理实践,支持回溯、分支与A/B时序对比

AI提示词版本混乱危机(时间线漂移预警):Git式提示管理实践,支持回溯、分支与A/B时序对比

更多请点击: https://kaifayun.com 第一章:AI提示词版本混乱危机(时间线漂移预警) 当多个团队并行迭代同一组提示词时,缺乏统一版本控制机制将迅速引发“时间线漂移”——即不同环境(开发/测试/生产&#…

2026/7/21 21:20:45 阅读更多 →
DehazeFormer原理详解:Transformer如何重塑图像去雾技术

DehazeFormer原理详解:Transformer如何重塑图像去雾技术

DehazeFormer 原理详解:Transformer 如何重塑图像去雾技术 一、引言 图像去雾是计算机视觉中的经典难题。传统方法依赖大气散射模型估计透射率和大气光,而深度学习方法(如 AOD-Net、FFA-Net)基于 CNN,感受野有限。Deha…

2026/7/21 21:20:45 阅读更多 →
零样本学习在小数据视觉检测中的工程落地实践

零样本学习在小数据视觉检测中的工程落地实践

1. 项目概述:当数据少得可怜,模型却要看得更准“Empowering Computer Vision with Zero-Shot Learning in the Data-Centric Small Data Age”——这个标题不是学术论文的冷峻宣言,而是我过去18个月在三家不同行业客户现场反复验证后&#xf…

2026/7/21 21:20:45 阅读更多 →
Heapify在算法竞赛中的应用:Dijkstra、Prim等算法的极速实现 [特殊字符]

Heapify在算法竞赛中的应用:Dijkstra、Prim等算法的极速实现 [特殊字符]

Heapify在算法竞赛中的应用:Dijkstra、Prim等算法的极速实现 🚀 【免费下载链接】heapify The fastest JavaScript priority queue out there. Zero dependencies. 项目地址: https://gitcode.com/gh_mirrors/he/heapify 在算法竞赛的世界里&…

2026/7/21 21:19:44 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻