当前位置: 首页 > web >正文

Xilinx 7Series\UltraScale FPGA MultiBoot Fallback

一、FPGA multiboot有什么用

FPGA Multiboot是一种允许FPGA在运行时动态切换不同配置映像(bitstream)的功能,其主要作用和应用场景如下:

  1. 容错与可靠性
    安全回退(Fallback):
      当主配置映像(如新升级的固件)出现故障时,FPGA可自动回退到预存的黄金映像(Golden Image),确保系统持续运行,提高容错能力。
    看门狗超时触发:
      如果主映像运行异常(如逻辑死锁),看门狗定时器可触发Multiboot,强制加载备份映像。

  2. 动态重配置
    多功能切换:
      在不重启FPGA的情况下,切换不同的硬件功能。

  3. 远程升级(Remote Update)
    安全更新:
      通过网络远程更新FPGA配置,若新映像失败,自动回退到旧版本,避免“变砖”风险。

二、Xilinx multiboot原理

  参考Xilinx xapp1247和1257, 7 Series和UltraScale的multiboot原理相同,只是实现方法有所差异。

注:本文描述仅参考 xapp1247和1257描述了包含2个image 的SPI fallback功能,Xilinx还提供了更多image的动态配置功能,本文不再描述。

  如下图所示,multiboot分为两个image空间,一个Gloden Image,为基础镜像空间,在异常时刻返回该空间,Gloden Image其实地址为0,并且存储有Upper Address信息,FPGA在启动时首先从0地址加载,在检测到有跳转地址Upper Address后,直接跳转到Upper Address执行。

 &emspMultiboot Image为实际需要运行的镜像空间,在执行该空间bit失败后,可自动跳转到该空间。跳转的条件有:
  • IDCODE error
  • Cyclic redundancy check (CRC) error
  • Watchdog timer timeout error

 &emsp同时Gloden Image后还可以附加一个看门狗计数器,在Multiboot Image加载超时后自动跳转到Gloden Image(该功能xapp文件未列出,可参考UG470和UG570 Configuration文件)
在这里插入图片描述

三、multiboot实现方法

1.通过xdc约束是在bit流中加入Upper Address等相关信息,7 Series和UltraScale系列约束文件有所不同。

2.采用ICAPE原语,7Series采用ICAPE2,UltraScale采用ICAPE3。

3.1 7Series xdc multiboot实现方法

在Gloden Image重增加以下约束:

set_property BITSTREAM.CONFIG.CONFIGRATE 33.0 [current_design]
set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x0400000 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 1 [current_design]

在Multiboot Image重增加以下约束:

set_property BITSTREAM.CONFIG.CONFIGRATE 33.0 [current_design]
set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 1 [current_design]

其中Multiboot Image起始地址为0x0400000,可根据实际需求设置
需要注意的是:
(1)当flash空间在256MB以上,需使能SPI_32BIT_ADDR ,否则可不使能
(2)7 系列默认SPI模式为X1,如配置了其他模式,需改为默认模式,fallback仅支持SPIX1模式。。
(3)COMPRESS根据需求设置,如不开启bit压缩,bit空间更大

3.2 UltraScale xdc multiboot实现方法

在Gloden Image重增加以下约束:

set_property BITSTREAM.CONFIG.CONFIGRATE 51.0 [current_design]
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x0400000 [current_design]
set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT ENABLE [current_design]
set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

在Multiboot Image重增加以下约束:

set_property BITSTREAM.CONFIG.CONFIGRATE 51.0 [current_design]
set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]
set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

3.3 xdc 增加watchdog 方法

在Gloden Image重增加以下约束:

set_property BITSTREAM.CONFIG.TIMER_CFG 32'h0989680 [current_design]

watchdog计数器设置值与cclk相关,计数器时钟频率为cclk/256,如cclk配置为51MHz,计数器设置为32’h0989680,则watchdog超时时间为32’h0989680*256/51000000=50s.

注:通过以上配置在AU5P上实测watchdog 大概5秒超时,具体原因未知。下图是ug570中watchdog计数器的描述,最大位宽为30bit。
在这里插入图片描述

以上配置也可通过UI界面配置,最终存储到xdc文件内,需要在在打开实现后再bitstream 设置中打开configure additionat bitstream bitstream设置
在这里插入图片描述

3.4 multiboot mcs烧写文件生成

可通过Vivado中的tools中的Generate Memory Config File UI界面执行。其中通过2个bit生成mcs文件,也可生成为bin文件。Gloden.bit其实地址为0,Updata.bit起始地址为0x400000,与Gloden Image中定义的NEXT_CONFIG_ADDR地址匹配即可。
在这里插入图片描述
也可通过tcl命令:

write_cfgmem  -format mcs -size 16 -interface SPIx4 -loadbit {up 0x00000000 "F:/mu/Gloden.bit" up 0x00400000 "F:/mu/Updata.bit" } -force -file "F:/mu/boot_mcs.mcs"

3.5 multiboot 中updata 烧写文件生成

在完成Gloden Image和Multiboot Image烧写后,需要更新Multiboot Image中的内容,则将Multiboot Image工程生成的bit/bin文件烧写到0x400000所在起始地址即可,烧写方法:
(1)可采用FPGA逻辑生成flash烧写功能,电脑通过网口或串口等将bit或bin文件传输到FPGA,FPGA烧写到flash对应空间;
(2)采用Vivado JTAG烧写,需将Multiboot Image工程生成的bit文件转为mcs文件,起始地址设置为0x400000

参考文件

xapp1257-multiboot-fallback-spi-flash.pdf
xapp1247-multiboot-spi
ug570-ultrascale-configuration
ug470_7Series_Config

http://www.xdnf.cn/news/7866.html

相关文章:

  • bi工具是什么意思?bi工具的主要功能有哪些?
  • Spark SQL 原理与开发
  • transformer归一化层优化:深度解读 RMSNorm (Root Mean Square Layer Normalization,均方根层归一化)
  • Git 提交大文件 this exceeds GitHub‘s file size limit of 100.00 MB
  • MCP和 AI agent 有什么区别和联系
  • 什么是 Agent 的 Message
  • 现代数据库系统的九大类别解析
  • Socket编程——TCP
  • 振动分析 - 献个宝
  • AI人工智能——Matplotlib绘制各种数据可视化图表的基础方法
  • ThinkPHP 根据路由文件获取路由列表
  • Python60日基础学习打卡D32
  • 如何使用两块硬盘作为 Ubuntu24 的系统盘,实现坏掉一块不影响系统运行。
  • 变电站综合自动化系统
  • 多技术栈 iOS 项目的性能调试实战:从 Flutter 到 Unity(含 KeyMob 工具实测)
  • WPF MVVM Community Toolkit. Mvvm 社区框架
  • 万物智联,重塑未来:鸿蒙操作系统的实战突破与生态崛起
  • 8 种快速易用的Python Matplotlib数据可视化方法
  • 大语言模型 17 - MCP Model Context Protocol 介绍对比分析 基本环境配置
  • Azure 应用服务中的异常处理、日志记录和通知:综合指南
  • symbol【ES6】
  • JAVA SE 多线程(下)
  • Access链接Azure SQL
  • 阿里云ecs 8核 16G 内存 装有redis6 分配了3G内存,和2个tomcat 每个tomcat 4G 服务器反应迟钝,如何确认不是redis的问题
  • C++之内存分配new与 delete
  • React--函数组件和类组件
  • DL00987-基于深度学习YOLOv11的红外鸟类目标检测含完整数据集
  • 鸿蒙UI开发——实现一个上拉抽屉效果
  • SQL数据处理流程
  • 使用zap,对web应用/API接口 做安全检测