ZBLOG

可否通过固件包发布 FPGA 程序的更新?FPGA 里面的程序怎么称呼?已售出的产品怎么更新?

当然可以。通过固件包发布和更新 FPGA 程序是一种非常常见且成熟的工业实践。下面我将详细解释您提出的几个问题。

1. FPGA 里面的程序怎么称呼?

FPGA 内部的程序通常不称为“程序”或“软件”,而是有特定的名称:

  • 比特流 (Bitstream)配置文件 (Configuration File):这是最准确和通用的叫法。它指的是经过综合、布局布线后生成的二进制文件(通常是 .bit.bin 格式),这个文件包含了配置 FPGA 内部可编程逻辑块、互连线和 I/O 块的所有信息。将它加载到 FPGA 中,就决定了 FPGA 的硬件功能。
  • 固件 (Firmware):在很多嵌入式系统上下文中,特别是需要远程更新的场景,FPGA 的比特流文件也会被笼统地称为“固件”。因为它处于硬件和软件之间,比软件更底层,但又不像硬件那样完全固定。
  • 设计 (Design)图像 (Image):工程师之间也常会这样说,例如“我需要生成一个新的FPGA镜像(image)用于测试”。

总结:最专业的术语是“比特流”(Bitstream),但在系统集成和更新语境中,称之为“固件”也非常普遍和易于理解。


2. 可否通过固件包发布 FPGA 程序的更新?

完全可以。 这正是对已部署产品进行功能升级、修复bug的主要方式。

实现这一功能需要一个完整的FPGA配置方案,通常涉及以下几个核心组件:

  1. 非易失性存储器:用于存储比特流文件。FPGA上电后需要从一个地方加载配置。

    • 专用外部配置存储器:如 SPI Flash(最常用)、Parallel NOR Flash、BPI Flash。比特流文件就烧录在这里面。
    • 处理器管理的存储器:如果系统中有微处理器(MCU/MPU),比特流文件可以存放在处理器的文件系统、eMMC或SD卡中,由处理器负责在合适的时间将比特流发送给FPGA。
  2. 配置控制器

    • 被动模式:FPGA作为从设备,由上文提到的微处理器(MCU/MPU) 模拟配置时序,通过SPI、SelectMAP等接口将新的比特流“推送”到FPGA或其配置存储器中。这是最灵活、最常用的远程更新方案。
    • 主动模式:FPGA作为主设备,自己主动从外部SPI Flash等存储器中读取配置。如果要更新,就需要先更新SPI Flash中的内容。
  3. 通信接口:用于接收从远端(如服务器、电脑)发来的新固件包。

    • 例如:以太网、Wi-Fi、4G/5G、USB、UART串口等。
  4. 更新逻辑与安全机制(至关重要)

    • 双镜像/回滚机制:在存储器中存放两个版本的固件(工作镜像和备份镜像)。如果新版本启动失败,能自动回滚到旧版本,保证系统不死变砖。
    • 验签与加密:对固件包进行数字签名验证,确保其来源可信且未被篡改;对比特流进行加密,防止知识产权被窃取。
    • 看门狗/心跳机制:确保更新过程失败后系统能自我恢复。

3. 已售出的产品怎么更新?

基于上述组件,对已售出产品的典型远程更新流程如下:

  1. 打包发布

    • 开发团队生成新的比特流文件后,将其与必要的元数据(如版本号、CRC校验码)一起打包成一个“固件升级包”。
    • 对该升级包进行数字签名(例如使用RSA/ECC算法)。
  2. 分发下载

    • 将签名后的固件包放置在服务器上。
    • 设备通过其通信接口(如4G)定期查询服务器或接收服务器的推送通知,发现有新版本后下载到设备的非易失性存储中(如MCU的文件系统)。
  3. 验证与准备

    • 设备上的MCU验证固件包的签名和完整性。
    • 验证通过后,将新的比特流文件写入到备份区域的配置存储器中(实现双镜像),而不覆盖当前正在运行的工作版本。
  4. 执行更新

    • MCU向FP发送一个复位信号或触发重配置进程。
      • 方法A(重构Flash):MCU先将新的比特流烧写到FPGA的外部SPI Flash的备份区域,然后控制一个多路复用器(IO模拟或硬件实现)切换至新的镜像区域,最后触发FPGA断电重启或软复位(通过PROGRAM_B引脚),FPGA上电后会从新的存储位置加载配置。
      • 方法B(部分重配置):对于支持该功能的高端FPGA,可以通过PCIe或SelectMAP等接口直接动态地重新配置FPGA的一部分逻辑,而无需完全断电重启,实现更高级的“热更新”。
      • 方法C(处理器控制配置):在被动模式下,MCU可以直接将比特流通过SPI等接口发送给FPGA,使其立即运行新功能。
  5. 确认与回滚

    • 更新完成后,系统全面自检。
  • (以MCU+Flash方案为例)
  • (图片来源:Xilinx/WikiMedia等,示意图仅供参考)

总结

方面 说明
FPGA程序名称 比特流 (Bitstream) / 配置文件 / (广义上也可称)固件
能否远程更新 可以,是标准做法
如何实现更新 通常需要 “MCU + 外部存储器 + 通信模块” 组成的协同系统
关键考量 安全性(签名/加密)、可靠性(双镜像回滚)、稳定性(看门狗)

因此,为您的产品设计一个包含这些要素的稳健的启动和更新架构,是支持后续通过固件包发布FPGA更新的基础。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=24243

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?