0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xilinx7系列里的Multiboot介绍

OpenFPGA 来源:搜狐网 作者:搜狐网 2020-10-12 14:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在远程更新的时候,有时候需要双镜像来保护设计的稳定性。在进行更新设计的时候,只更新一个镜像,另一个镜像在部署之前就测试过没问题并不再更新。当更新出错时,通过不被更新的镜像进行一些操作,可以将更新失败的数据重新写入Flash。这样即使更新出错,也能保证设计至少可以被远程恢复。

Xilinx的双镜像方案成为Multiboot。本文对Xilinx 7系列的Multiboot做一些简单介绍。

Multiboot直接操作的是两个镜像,但实际上可以用于多个镜像。为了便于描述,Multiboot中的两个镜像分别成为G镜像(Golden)和M镜像(Multiboot)。

远程更新的方案,有一些是通过FPGA来读写Flash的,例如Xilinx平台下需要自己实现的Flash读写控制器Altera平台下的ASML IP。当无法提供JTAG等其他连接时,Flash的更新就只有FPGA一种方案。

当写入Flash的操作出现错误,或者Flash中部分地址中的数据出现错误,导致无法正确写入或者存储的数据出现错误,这样会导致FPGA无法加载成功。

当FPGA无法加载成功或者工作不正常的时候,Flash的读写操作也就无法得到保证。此时也就不能重新通过远程更新方案来重新读写Flash,纠正之前的错误。所以可以看到,如果Flash直接由FPGA控制,当远程更新出现错误时,很可能导致远程更新彻底失效,只能安排现场更新来修复。

对应方案就是使用双镜像(多镜像),更新的时候只更新M镜像,更新后直接使用M镜像。当出现M镜像更新出现错误的时候,则启动G镜像。通过G镜像中的设计来重新更新Flash中M镜像部分的数据。

由于G镜像从来没有被更新过,这样出现错误的概率也就非常小。这样即使M镜像出现错误,可以通过G镜像来完成一些工作(例如Flash读写操作),由此来保证设计一直可以使用。

从这个分析可以看出,双镜像的方案,需要完成两个任务。

1.正常情况下,加载完成时应该是M镜像在运行

2.出现错误的时候,需要返回G镜像

图片来自UG470

从上图可以看到,Xilinx 7系列FPGA的Multiboot方案是从基地址开始存放G镜像,后续存放M镜像。加载过程中是先加载M镜像,配置完成后如果成功,则运行M镜像;如果运行失败,则重新加载G镜像。

下面就从需要完成的两个任务,结合上图来进行介绍。

先看第一个任务,加载M镜像。

上电完成之后,FPGA就会按照设置,进行加载操作。在主动模式下,FPGA会开始对Flash的操作,尝试读取Flash中存储的配置镜像数据。需要注意的是,主动模式下的这一系列操作都是FPGA自动完成的,用户无法控制。

所以就出现了第一个问题。既然读取操作是自动的,那么FPGA是如何知道M镜像存储在哪里,并先加载M镜像呢?如果是从0地址开始读取,那么应该先完成G镜像的加载。否则,是否使用Multiboot及M镜像的地址,是如何传递给FPGA、让FPGA知晓呢?

Xilinx的Multiboot方案中的解决办法是使用一条加载命令:IPROG。而这条命令,是放在G镜像中。

具体说,对于FPGA直接从0地址开始读取,先开始加载G镜像,但是这个G镜像是经过特别处理的,在镜像数据刚开始的部分添加了IPROG命令和M镜像的地址。当FPGA读取到这个命令之后,就会直接跳过后面的数据,从设置的地址开始继续加载。这样的操作,导致G镜像只是运行了最前面的几条加载命令,而M镜像也只是等了几条命令的操作就开始加载了,保证了M镜像的直接加载。

需要说明的是IPROG这是一条命令,所以既可以在G镜像中生效,也可以在设计中任意使用。用户可以将IPROG命令发给ICAP,来实现任意时间触发重新加载的需求。通过设置合适的地址,可以实现多个镜像的切换。

图片截取自Vivado

从vivado中的设置可以看出,Multiboot的主要设置只有这6个。第一个成为Fallback,最后一个成为Watchdog。这两个下文会做介绍。第四个第五个是关于RS pin。等熟悉Multiboot理解之后可以查看文档进行理解,本文不做深入介绍。

第二个是设置跳转到的地址、第三个是在G镜像中加入IPROG命令。这两个操作可以以命令的形式发给ICAP接口,从而触发Multiboot中转跳并加载新的镜像数据。

看完上述的分析,应该明白如何实现先加载M镜像这个需求了。下一步就是,在加载失败时如何回退到G镜像。

M镜像加载不成功,需要回退到G镜像的操作,Multiboot方案称这一步骤为Fallback。

Fallback在四种条件下会被触发:

1. ID Code错误
2. CRC错误
3. Watchdog超时
4. BPI地址越界

ID Code错误是指配置文件中的器件型号和当前器件不匹配。CRC校验是指配置数据送入FPGA之后会进行校验,如果数据不一样则会提示CRC错误。这两个基本原理比较容易理解,至于具体细节,需要能解析bit文件的内容之后才能充分理解。

Watchdog超时是指在规定的时间内如果无法配置成功,则触发Watchdog超时,进而会导致Fallback。

BPI地址越界是指发现逐步增长的BPI地址超过最大值,发生溢出,回到0,则除法Fallback。

大概理解一下四个条件之后可以看到,BPI是只针对BPI模式的,和Watchdog有一点类似,都是在一段时间内如果没有加载成功,地址会逐步增加,计时器会逐步增加,超过范围后就触发Fallback,所以BPI就不做进一步解释了。

ID Code也不做进一步解释了,因为ID Code不对,大概率是用错镜像文件了。所以也没有太多可以分析的。

重点是2和3,当存在Multiboot镜像的时候,如M镜像的内容出现问题,则会触发CRC校验错误,这样可以保证镜像加载成功之后,数据是没有问题的。

但是如果没有Multiboot镜像,则CRC校验无法进行,或者加载到一半就挂死了。这个时候就需要Watchdog来触发Fallback。只要一定时间内加载没有完成,就一定会触发Watchdog超时。

所以CRC是用来保证加载正确的,Watchdog是用来保证一定会提示加载失败的。

注意,Watchdogd的计时设置,请设置好然后实际测试一下,而不要仅仅凭经验/文档来推断一个合适的值。

当发生了Fallback之后,工程会反跳回0地址开始加载,从新加载G镜像。这里,FPGA内部的配置寄存器会做记录,当发生Fallback之后,会自动忽略IPROG命令,直接加载G镜像后续的部分,来保证G镜像有机会被完整的加载。

FPGA自带一些寄存器,记录了FPGA加载时的一些状态,通常称为device status寄存器。当初出现加载失败的问题时,可以通过JTAG查看相关寄存器来寻找一些线索,帮助定位问题。

通过这一系列复杂的操作,可以实现双镜像的配置切换。这种方法最大的优点就是速度快。在配置完成之后可以快速的跳转、加载和返回。最关键的双镜像选择这一步是在加载初期就进行转跳,所以跳转非常迅速,适合一些对配置时间有要求的场合。缺点就是原理和设置都相对麻烦了一些。

和上述方法不一样的一个双镜像切换的方法就是用户自行做切换。大致原理是用户利用FPGA的可编程逻辑资源对ICAP模块进行控制,输入需要跳转的地址然后输入IPROG命令,来触发跳转操作。这个操作是需要先加载好G镜像并开始运行,然后由用户来控制什么时候进行跳转。

这样操作的优点有:

1.跳转地址由用户自行选择,所以可以在多个镜像中跳转,而不限于两个;

2.可以选择在合适的时间进行加载,用户选择性更大。

主要缺点:

1.需要对配置过程、ICAP端口和控制命令有更多的理解

2.需要加载完至少一个镜像才能使用,所以对配置时间要求高的场景无法使用

如果仅仅是为了远程更新,那么这个方案,并不合适。用自动的双镜像方案更简单易用一些。只要G镜像调试完毕,整个方案对M镜像的要求比较低。

文章基本完成的时候,发现Xilinx官网有一篇关于Multiboot的XAPP推荐一下阅读一下,加强对Multiboot的理解。

https://www.xilinx.com/support/documentation/application_notes/xapp1247-multiboot-spi.pdf

这里截取一部分:


当升级程序有错误的时候,系统会启动golden bitstream

注意:需要在源工程与升级工程中添加如下约束语句

生成组合mcs文件:

责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Xilinx
    +关注

    关注

    73

    文章

    2193

    浏览量

    130069

原文标题:Xilinx 7系列FPGA Multiboot介绍-远程更新

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用Xilinx 7系列FPGA的四位乘法器设计

    (Shinshu University)研究团队的最新设计中,一个专为 Xilinx 7 系列 FPGA 量身打造的 4 位乘法器使用了仅 11 个 LUT + 2 个 CARRY4 块,关键路径延迟达到 2.75 ns。这是一
    的头像 发表于 11-17 09:49 2907次阅读
    使用<b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b>FPGA的四位乘法器设计

    Xilinx FPGA串行通信协议介绍

    Xilinx FPGA因其高性能和低延迟,常用于串行通信接口设计。本文深入分析了Aurora、PCI Express和Serial RapidIO这三种在Xilinx系统设计中关键的串行通信协议。介绍了它们的特性、优势和应用场景
    的头像 发表于 11-14 15:02 2064次阅读
    <b class='flag-5'>Xilinx</b> FPGA串行通信协议<b class='flag-5'>介绍</b>

    请问如何将蜂鸟E203移植到Xilinx NEXYS A7 FPGA 开发板上?

    如何将蜂鸟E203移植到Xilinx NEXYS A7 FPGA 开发板上?有参考教程吗?小白求教 主要是引脚分配,我这边有移植到Xilinx Artix-7
    发表于 11-11 07:44

    一文详解xilinx 7系列FPGA配置技巧

    本文旨在通过讲解不同模式的原理图连接方式,进而配置用到引脚的含义(手册上相关引脚含义有四、五页,通过本文理解基本上能够记住所有引脚含义以及使用场景),熟悉xilinx 7系列配置流程,以及设计原理图时需要注意的一些事项,比如fl
    的头像 发表于 08-30 14:35 9033次阅读
    一文详解<b class='flag-5'>xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b>FPGA配置技巧

    Zynq-7000 SoC与7系列设备内存接口解决方案数据手册

    关于 AMD/Xilinx 7系列FPGA存储器接口解决方案(UG586) 的用户指南,其主要内容和技术要点可概括如下:1. 文档定位与核心内容定位:该文档是7
    发表于 07-28 16:17 3次下载

    基于AD9613与Xilinx MPSoC平台的高速AD/DA案例分享

    本文主要介绍基于Xilinx UltraScale+MPSoC XCZU7EV的高速AD采集与高速DA输出案例
    的头像 发表于 06-03 14:22 668次阅读
    基于AD9613与<b class='flag-5'>Xilinx</b> MPSoC平台的高速AD/DA案例分享

    携手Nordic推出多合一气体传感器

    此前,5月22日至23日,2025蓝牙亚洲大会在深圳隆重启幕。云新品“多合一气体传感器”在Nordic展位上重磅亮相。产品搭载了Nordic nRF54L系列首款系统级芯片(SoC),兼具超低
    的头像 发表于 05-27 18:01 1002次阅读

    Xilinx Ultrascale系列FPGA的时钟资源与架构解析

    Ultrascale是赛灵思开发的支持包含步进功能的增强型FPGA架构,相比7系列的28nm工艺,Ultrascale采用20nm的工艺,主要有2个系列:Kintex和Virtex
    的头像 发表于 04-24 11:29 2134次阅读
    <b class='flag-5'>Xilinx</b> Ultrascale<b class='flag-5'>系列</b>FPGA的时钟资源与架构解析

    UHV系列串联谐振装置总体介绍

    UHV系列 串联谐振装置总体介绍说明书
    发表于 02-25 17:37 0次下载

    MGMF182L1C7-MINAS A6N系列 介绍 松下

    电子发烧友网为你提供Panasonic(Panasonic)MGMF182L1C7-MINAS A6N系列 介绍相关产品参数、数据手册,更有MGMF182L1C7-MINAS A6N
    发表于 02-14 19:12
    MGMF182L1C<b class='flag-5'>7</b>-MINAS A6N<b class='flag-5'>系列</b> <b class='flag-5'>介绍</b> 松下

    解锁4K,Xilinx MPSoC ARM + FPGA高清视频采集与显示方案!

    XCZU7EV高性能平台。 方案介绍 4K@60fps视频源经过HDMI IN接口传输至TMDS181IRGZR芯片进行信号转换,转换后的高速串行信号通过GTH高速收发器输入至PL端,利用Xilinx官方的IP核
    的头像 发表于 01-24 10:27 929次阅读
    解锁4K,<b class='flag-5'>Xilinx</b> MPSoC ARM + FPGA高清视频采集与显示方案!

    【米尔-Xilinx XC7A100T FPGA开发板试用】 UART测试

    硬件: 一 米尔-Xilinx XC7A100T FPG 二 12V电源适配器 三 下载器 四 win10笔记本 软件: 一 Vivado (指导手册有详细的安装下载流程) 二 官方示例工程 这个
    发表于 01-12 10:10

    【米尔-Xilinx XC7A100T FPGA开发板试用】Key-test

    硬件: 一Xilinx XC7A100T FPGA开发板 二12V电源适配器 三下载器 四 win10笔记本 软件: 一Vivado (指导手册有详细的安装下载流程) 二官方按键示例工程 按键示例
    发表于 01-09 16:08

    基于Xilinx的A7系列FPGA的CAN总线协议开发

    一、CAN总线协议介绍 CAN是 Controller Area Network 的缩写(以下称为 CAN ),是 ISO 国际标准化的串行通信协议。可以用来满足“多总线通信时,线束的数量
    的头像 发表于 12-21 14:49 3125次阅读
    基于<b class='flag-5'>Xilinx</b>的A<b class='flag-5'>7</b><b class='flag-5'>系列</b>FPGA的CAN总线协议开发

    使用的是LMH0344+LMH0341+xilinx Kintex 7方案,出现采集数据错误的原因?

    你好,我使用的是LMH0344+LMH0341+xilinx Kintex 7方案,使用贵公司提供的源码,目前可以检测到时钟和数据,并且成功识别视频格式,但是会出现采集到的数据错误,导致无法正确判断SAV和EAV。请问有可能是什么原因导致的,谢谢。
    发表于 12-16 06:47