Zynq-7000 系列基于 NAND Flash 的 Linux 系统网络在线更新 BOOT.BIN 教程(Petalinux 2017.4)
Zynq-7000 系列基于 NAND Flash 的 Linux 系统网络在线更新 BOOT.BIN 教程Petalinux 2017.4文章目录Zynq-7000 系列基于 NAND Flash 的 Linux 系统网络在线更新 BOOT.BIN 教程Petalinux 2017.4一、 基本原理与注意事项二、 准备工作Petalinux 配置1. 配置 Rootfs 启用 mtd-utils2. 确认网络服务3. 编译并烧录三、 具体操作步骤第一步确认 NAND Flash 分区信息第二步将新的 BOOT.BIN 通过网络传输到板子方法 A使用 SCP推荐方法 B使用 TFTP第三步在 Linux 中擦除并烧写 NAND Partition1. 擦除原有的 Boot 分区2. 将 BOOT.BIN 写入分区第四步重启验证四、 常见问题与注意事项FAQ在嵌入式开发中经常需要对设备的固件进行升级。对于使用 NAND Flash 并运行 LinuxUBIFS 文件系统的 Zynq-7000 系统如果每次更新BOOT.BIN都要通过 JTAG 烧写或者拆卸芯片效率会非常低。本文将介绍如何利用 Zynq PS 端的网络接口在 Linux 系统运行状态下远程将新的BOOT.BIN写入 NAND Flash 的启动分区。一、 基本原理与注意事项BOOT.BIN 的存储位置在 Zynq NAND Flash 启动模式下BootROM 只能识别未格式化的原始 MTD 分区Raw MTD Partition。因此虽然你的 Linux 根文件系统使用的是UBIFS但BOOT.BIN必须直接烧写在 MTD 的起始分区通常是/dev/mtd0而不是放在 UBIFS 文件系统中。NAND Flash 的特殊性NAND Flash 存在坏块管理和 OOBOut of Band区。因此不能使用普通的dd命令直接写入必须使用专门的 MTD 工具如flash_erase和nandwrite它们能够自动处理坏块。二、 准备工作Petalinux 配置为了实现网络传输和 NAND 写入Linux 系统中需要具备以下工具网络传输服务SSH/SCP推荐默认集成且安全或 TFTP。MTD 分区操作工具mtd-utils包含flash_erase、nandwrite等。1. 配置 Rootfs 启用mtd-utils在 Petalinux 工程根目录下运行配置命令petalinux-config-crootfs在弹出的菜单中使能以下工具进入Filesystem Packages-base-mtd-utils勾选mtd-utils。确保mtd-utils-flash-erase和mtd-utils-nandwrite被选中通常勾选mtd-utils后会自动选中相关子项。2. 确认网络服务Petalinux 默认集成了dropbear一个轻量级的 SSH 服务器支持 SCP。可以在Filesystem Packages-console/network-dropbear中确认其是否处于使能状态。3. 编译并烧录配置完成后重新编译并生成新的系统镜像petalinux-build将更新后的系统部署到板子上确保系统能够正常启动并联网。三、 具体操作步骤第一步确认 NAND Flash 分区信息连接到 Zynq 板子的串口或通过 SSH 登录输入以下命令查看 MTD 分区表cat/proc/mtd输出信息大致如下dev: size erasesize name mtd0: 00800000 00020000 boot mtd1: 00800000 00020000 bootenv mtd2: 02000000 00020000 kernel mtd3: 1d000000 00020000 rootfs解释在这个例子中mtd0分区名为boot大小为 8MB这就是用来存放BOOT.BIN的分区。请根据你实际的设备树Device Tree分区命名来确认对应的mtdX编号。第二步将新的BOOT.BIN通过网络传输到板子你可以选择SCP或TFTP方式将 PC 上的BOOT.BIN传输到 Zynq 板子的/tmp目录/tmp是内存文件系统读写速度快且不占用 Flash 寿命。方法 A使用 SCP推荐在 Windows PC 上可以使用WinSCP、MobaXterm等可视化工具或者直接在主机命令行执行scpBOOT.BIN root板子IP地址:/tmp/(注意Petalinux 默认的用户名为root密码通常在第一次启动时会要求设置或者默认为空/root)方法 B使用 TFTP如果在 PC 上搭建了 TFTP 服务器如 tftpd64可以在 Zynq 板子上执行cd/tmp tftp-g-rBOOT.BINPC的IP地址第三步在 Linux 中擦除并烧写 NAND Partition请注意以下操作涉及底层 Flash 写入请确保写入的分区对应无误且中途不要断电。1. 擦除原有的 Boot 分区在写入新数据之前必须先擦除 MTD 分区NAND Flash 的物理特性决定了只能将 1 写为 0写数据前必须擦除为全 1。使用flash_erase命令flash_erase /dev/mtd000参数解释/dev/mtd0是目标分区第一个0表示从偏移量 0 开始第二个0表示擦除整个分区。2. 将BOOT.BIN写入分区使用nandwrite命令将临时目录中的BOOT.BIN写入mtd0nandwrite-p/dev/mtd0 /tmp/BOOT.BIN参数解释-por--pad表示如果文件大小未对齐到 NAND 的页大小则自动填充Padding这是 NAND 烧写常用的参数。如果终端显示类似如下信息说明写入完成Writing data to block 0 at offset 0x0 Writing data to block 1 at offset 0x20000 ...第四步重启验证确认无报错后可以安全重启板子以验证新的BOOT.BIN是否生效reboot四、 常见问题与注意事项FAQ为什么不用dd命令dd命令是直接进行按字节复制它既不关心 NAND Flash 的坏块Bad Blocks也不会妥善处理 OOB 数据。如果写入区域刚好有坏块使用dd可能会导致系统无法启动。而nandwrite会跳过坏块并进行标记。如果更新失败导致无法开机怎么办网络更新如果因为断电或分区写错导致损坏BootROM 将无法引导。此时需要通过底线手段恢复使用 JTAG如 Vivado/SDK 的 Program Flash 工具重新烧写基础的BOOT.BIN。BOOT.BIN 文件大小超出了分区限制如果新的BOOT.BIN大小超过了mtd0的分区大小例如分区只有 8MB而文件有 9MBnandwrite会报错提示空间不足。遇到这种情况需要修改设备树dts中的分区定义重新规划 Flash 空间。

相关新闻

深度解析Mermaid Live Editor:如何构建高效的可视化图表实时编辑系统

深度解析Mermaid Live Editor:如何构建高效的可视化图表实时编辑系统

深度解析Mermaid Live Editor:如何构建高效的可视化图表实时编辑系统 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/merma…

2026/7/10 21:03:26阅读更多 →
Fiber 节点 —— 一个数据结构如何承载整个 React 运行时

Fiber 节点 —— 一个数据结构如何承载整个 React 运行时

当你写了一个<div>&#xff0c;React 在背后生成了一个神级数据结构&#xff0c;这玩意儿决定了你的 App 是丝滑还是卡成 PPT。今天&#xff0c;我们就掀开 Fiber 的底裤&#xff0c;让你看完直呼“原来如此”&#xff01; 一、技术背景&#xff1a;为什么你写的 React 代…

2026/7/10 21:03:26阅读更多 →
2026年巴南区专业牙齿矫正牙科:经验复盘与选择要点

2026年巴南区专业牙齿矫正牙科:经验复盘与选择要点

一、开头&#xff1a;技术痛点/趋势引入2026年&#xff0c;随着人们对口腔健康和美观的重视程度不断提高&#xff0c;牙齿矫正领域面临新的挑战。在技术社区里&#xff0c;经常有人问&#xff0c;牙齿矫正到底该怎么做选型&#xff1f;从架构演进、性能、成本、运维复杂度等维度…

2026/7/10 20:58:26阅读更多 →
如何实现零样本语音克隆:Seed-VC技术架构与实战指南

如何实现零样本语音克隆:Seed-VC技术架构与实战指南

如何实现零样本语音克隆&#xff1a;Seed-VC技术架构与实战指南 【免费下载链接】seed-vc zero-shot voice conversion & singing voice conversion, with real-time support 项目地址: https://gitcode.com/GitHub_Trending/se/seed-vc 你是否曾想过&#xff0c;仅…

2026/7/10 21:53:29阅读更多 →
如何写好一份SDC——结构篇

如何写好一份SDC——结构篇

⚠️本文目的为 个人学习记录 及 知识分享。因个人能力受限&#xff0c;存在解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果&#xff0c;本人不承担相关法律责任 文章目录前言1、时钟定义包含外部时钟、内部时钟和虚拟时钟2、时钟关系声明&#xf…

2026/7/10 21:53:29阅读更多 →
小 Bitmap,大优化:Databend 如何加速大规模集合聚合

小 Bitmap,大优化:Databend 如何加速大规模集合聚合

导读&#xff1a;本文介绍 Databend 针对 Bitmap 聚合场景的一次性能优化&#xff1a;通过引入 HybridBitmap&#xff0c;在小集合阶段使用轻量的 SmallBitmap&#xff0c;只在集合真正膨胀后切换到 RoaringTreemap&#xff0c;避免大量小 bitmap 被过早反序列化和构造成完整大…

2026/7/10 21:53:29阅读更多 →
全合成切削液泡沫溢出?

全合成切削液泡沫溢出?

现场&#xff1a;液槽里的泡沫比切削液还多CNC车间里&#xff0c;操作工正在用捞网把液槽表面堆积的泡沫往外舀。泡沫已经溢出液槽边缘&#xff0c;顺着地面流到机床底座周围。操作工说&#xff1a;“刚换的新液&#xff0c;用了两天就开始起泡&#xff0c;越用越多。”工艺员检…

2026/7/10 21:53:29阅读更多 →
(三)MVS SDK采集图像C#

(三)MVS SDK采集图像C#

一、SDK基本结构二、调用流程SDK所占用的资源。由于该垃圾回收机制存在滞后性&#xff0c;建议主动释放资源&#xff0c;以保证资源及时被释放。可通过如下两种方式主动释放资源&#xff08;1&#xff09;方式1&#xff1a;调用.NET的 Dispose()try {// ch:创建设备 | en:Creat…

2026/7/10 21:53:29阅读更多 →
如何快速掌握Seed-VC:5个实战技巧打造专业级语音克隆体验

如何快速掌握Seed-VC:5个实战技巧打造专业级语音克隆体验

如何快速掌握Seed-VC&#xff1a;5个实战技巧打造专业级语音克隆体验 【免费下载链接】seed-vc zero-shot voice conversion & singing voice conversion, with real-time support 项目地址: https://gitcode.com/GitHub_Trending/se/seed-vc Seed-VC是一个革命性的…

2026/7/10 21:48:29阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述&#xff1a;从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目&#xff0c;叫 skills4/skills &#xff0c;它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景&#xff1a;一个旨在展示或教授某种技能的仓库&#xff0c;本身却成了安…

2026/7/10 12:10:00阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示&#xff1a;因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战&#xff1a;从“黑箱预测”到“可信推理”2026年6月&#xff0c;第7届机器学习与趋势国际会议&#xff08;MLT 2026&#xff09;将在悉尼召开。会议议程中&#xff0c;“因果与可解释机器学习…

2026/7/10 12:29:21阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时&#xff0c;通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中&#xff0c;是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/10 4:59:05阅读更多 →
浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析&#xff1a;Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比当你在浏览器地址栏敲入一个网址时&#xff0c;背后可能隐藏着一场关于"要不要重新下载资源"的精密博弈。这场博弈的裁判是HTTP缓存机制&#xff0c;而304状态码则是这场博弈…

2026/7/10 0:00:01阅读更多 →
RoboWits:面向创造性问题求解的双臂机器人认知推理基准

RoboWits:面向创造性问题求解的双臂机器人认知推理基准

1. 项目概述&#xff1a;这不是又一个机器人抓取数据集&#xff0c;而是一次对“思考力”的压力测试 RoboWits——这个名字里藏着两个关键信号&#xff1a;“Robo”直指物理世界中的具身智能体&#xff0c;“Wits”则毫不掩饰地指向人类最核心的认知能力&#xff1a;机敏、判断…

2026/7/10 0:00:01阅读更多 →
5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南&#xff1a;如何使用TegraRcmGUI图形化工具解锁Switch无限可能 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows…

2026/7/10 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/10 13:39:09阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/9 15:50:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/10 17:29:22阅读更多 →