跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言

高云 FPGA 远程升级原理

综述由AI生成高云 FPGA 远程升级的核心原理及实现方案。主要涵盖多比特流启动机制,利用黄金比特流(Golden Bitstream)作为安全冗余,当主比特流加载失败时自动回退。文中详细说明了比特流加载测试方法,包括 Flash 地址配置注意事项(如 Golden Address 默认值限制)。此外,还探讨了在无独立黄金比特流空间时,通过多比特流嵌套启动配合 Reconfig_n 引脚或内部逻辑实现跳转的方案,以及如何在 FPGA 逻辑中配置 SPI 接口读写 Flash 以完成固件更新。

山野诗人发布于 2026/4/6更新于 2026/6/235 浏览

1.1 简介

在嵌入式设备远程维护的背景下,实现 FPGA 固件的安全、可靠升级成为关键需求。近期项目中成功实施了高云 FPGA 的远程升级方案。本文梳理其核心升级原理,包括比特流加载测试及逻辑 SPI 读写 Flash。

1.2 高云 FPGA 升级原理

升级流程示意图

上图展示了高云 FPGA 的远程升级流程。该方案支持多比特流启动,系统可从两个用户比特流(MultiBoot Bitstream 1 和 2)中选择一个运行。其核心优势在于安全冗余机制:当任一用户比特流加载或运行失败时,FPGA 将自动回退至绝对可靠的'黄金比特流',确保设备始终能恢复至可工作的基础状态。

1.3 比特流加载测试

根据高云 FPGA 升级流程,可进行最简单的测试:通过软件将 MultiBoot_Bitstream1 下载到 Flash 的 0 地址,将 Golden Bitstream 下载到 Flash 的 Golden_Address,这样 FPGA 上电会运行 MultiBoot_Bitstream1。当人为破坏或擦除 MultiBoot_Bitstream1 后再次上电,FPGA 会运行 Golden Bitstream,以此验证 bit 流加载功能。例如 MultiBoot_Bitstream1 为 update_led,Golden Bitstream 为 golden_led,Golden_Address 为 0x800000。

测试环境图 1

测试环境图 2

注意: Golden Bitstream 的地址位置在高云 FPGA 中有默认值,在下载程序中可读取该地址。该地址的每一位只能把 0 写成 1,不能由 1 变成 0,因此地址只能改得比默认值更大。FPGA 出厂时将此值设置为 0x800000(刚好是 8M Flash 的大小),因此使用 8M Flash 时需将 Golden Bitstream 下载到 Golden_Address 位置。若更换为 16M Flash 则测试成功。

地址配置图

1.4 多 Bit 流启动功能实现远程升级

由于使用的 SPI Flash 是 8M,无法使用独立的 Golden Bitstream 空间,此时可使用高云 FPGA 的多 Bit 流启动功能实现升级。根据升级原理,可将 MultiBoot_Bitstream1 作为稳定的 Bit 流,在其中启动 MultiBoot_Bitstream2。这种情况需要在 MultiBoot_Bitstream1 中配置 MultiBoot_Bitstream2 的加载地址,并将 MultiBoot_Bitstream2 下载到该地址。

例如将 MultiBoot_Bitstream2 的启动地址设置为 0x400000。需在 MultiBoot_Bitstream1 的配置页面进行如下配置后重新编译。更改地址配置后,重新编译,将 MultiBoot_Bitstream1 下载至 Flash 的 0x000000 地址(FPGA 上电默认从 0x000000 地址启动),将 MultiBoot_Bitstream2 下载至 0x400000。在 MultiBoot_Bitstream1 中发送 Reboot 指令即可跳转到 MultiBoot_Bitstream2。

Reboot 指令的实现方式有两种: (1) 外部拉低 Reconfig_n 引脚。 (2) 通过 JTAG 模拟 Master SPI 时序发送重配置指令。

重配置指令图

第二种模拟 JTAG 方式较为复杂,但测试发现 Reconfig_n 可以配置为输出,使用内部逻辑可以将 Reconfig_n 拉低,这样做就简单多了。只需在 MultiBoot_Bitstream1 中拉低 Reconfig_n 就可以跳转到 MultiBoot_Bitstream2。

但是使用这种方式做远程升级功能会有个问题,如果 MultiBoot_Bitstream2 有问题的话 FPGA 就会死机(如果没有 Golden Bitstream),不会自动跳转到 MultiBoot_Bitstream1。这样就需要在外部做开关或者由单片机控制选择是否 MultiBoot_Bitstream1 启动后直接跳转到 MultiBoot_Bitstream2。

1.5 逻辑 SPI 读写 Flash

上一章验证了高云 FPGA 的固件加载功能。这里介绍下高云 FPGA 如何操作 SPI Flash,在逻辑中调用 Flash 的 SPI 引脚,在 Place & Route 过程中会报错。

SPI 引脚复用错误

这是因为程序复用了 FPGA 芯片的专用功能引脚,需要在高云软件中配置复用这些引脚功能。FPGA 即可通过逻辑操作 Flash。

配置界面 1

配置界面 2

此后,系统便可基于已建立的用户协议和 SPI 通信接口,对 Flash 中的比特流进行更新,从而实现固件升级。

目录

  1. 1.1 简介
  2. 1.2 高云 FPGA 升级原理
  3. 1.3 比特流加载测试
  4. 1.4 多 Bit 流启动功能实现远程升级
  5. 1.5 逻辑 SPI 读写 Flash
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 基于 LangChain 构建具备记忆功能的聊天机器人
  • React 与 Ant Design 4.5.4 Modal 表单验证实战
  • Whisper 安装与配置指南:环境搭建与验证
  • Git Config 核心配置详解:层级、命令与避坑
  • 用 Rust 构建 Git 提交历史可视化工具
  • 基于腾讯云 HAI 与 DeepSeek 快速构建个人网页
  • IPIDEA 网页抓取 API 实战:eBay 商品数据采集与 Python 接入
  • AI 产品经理职业发展路线与核心能力构建指南
  • Web 可访问性最佳实践:构建人人可用的前端界面
  • Android 开发核心面试题库及解析
  • JavaAI 智能开发工具:从需求到工程代码的全流程自动化生成
  • 基于 Codex GitHub Action 的自动化代码审查实践
  • 实战 AI 大模型与动手构建 AI Agent 技术详解
  • Vue3 常用面试题总结与代码解析
  • CosyVoice 安装 openai-whisper 报错 pkg_resources 缺失原因及解决
  • PyTorch 实战:基于文本引导的图像生成与 Stable Diffusion 实践
  • 深入理解 Linux 信号机制:从 task_struct 到信号递达
  • 滑动窗口算法实战:串联所有单词与最小覆盖子串
  • Netty 框架解析:核心特性及与 Mina 的对比
  • OpenClaw/MaxClaw/KimiClaw/Molili四大AI Agent横评!

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online