400-801-6772
86-0755-82557010
关于Xilinx 7系列FPGA Multiboot详细介绍

深圳宇航军工半导体有限公司 / 2019-09-03 17:35:50

Xilinx的双镜像方案变成了多重引导。本文简要介绍了Xilinx7系列多引导。

multiboot直接在两个镜像上运行,但实际上可以用于多个镜像。为了便于描述,multiboot中的两个镜像分别成为g镜像和m镜像。

其中一些远程更新方案是基于FPGA的Flash读写器,如基于Xilinx平台的Flash读写器控制器和基于Altera平台的ASML IP。当其他连接(如JTAG)不可用时,闪存更新只是基于FPGA的解决方案。

关于Xilinx 7系列FPGA Multiboot详细介绍

关于Xilinx 7系列FPGA Multiboot详细介绍.jpg

当写flash的操作错误,或者flash中某些地址的数据错误时,不能正确写入或存储的数据就会出错,导致FPGA无法成功加载。

当FPGA不能成功加载或工作异常时,不能保证闪存的读写操作。此时,不能通过远程更新方案重新读取和重写闪存来纠正以前的错误。因此,我们可以看到,如果闪存直接由FPGA控制,当远程更新出错时,远程更新可能完全无效,只能通过安排现场更新来修复。

相应的方案是使用双镜像(多镜像),更新时只更新m个图像,更新后直接使用m个图像。当M映像更新中发生错误时,将启动G映像。通过G图像的设计,更新了闪存中M图像的数据。

由于G图像从未更新过,因此出错的概率非常小。这样,即使M映像中存在错误,也可以通过G映像(例如闪存读写操作)完成一些工作,从而确保始终可以使用该设计。

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

1。通常,当加载完成时,M映像应该运行。

2。当发生错误时,需要返回G图像。

来自UG470的图片

从上图可以看出,Xilinx7系列FPGA的多通道方案随后存储来自基址的G图像和M图像。在加载过程中,首先加载M映像,如果配置完成,则运行M映像;如果操作失败,则重新加载G映像。

以下两项任务需要完成,并结合上图进行介绍。

查看第一个任务并加载m图像。

上电后,FPGA将根据设置加载。在激活模式下,FPGA将开始在闪存上操作,并尝试读取闪存中存储的配置图像数据。需要注意的是,这些操作的主动模式是由FPGA自动完成的,用户无法控制。

所以第一个问题出现了。由于读取操作是自动的,那么FPGA如何知道M图像存储在哪里,并首先加载M图像?如果从地址0开始读取,则应首先加载g映像。否则,如果使用multiboot和m映像的地址,如何将其传递给FPGA并让它知道?

Xilinx的multipurt解决方案中的解决方案是使用一个加载命令:iprog。这个命令放在G图像中。

应该注意,iprog是一个命令,因此它可以在g镜像或设计中使用。用户可以向ICAP发送iprog命令,以满足随时触发重载的需要。通过设置适当的地址,可以切换多个镜像。

从vivado截取的图片

从vivado的设置中可以看到,multiboot的主要设置只有这六个。第一个变为后退,较后一个变为看门狗。这两种情况如下所述。第四和第五个是关于RS管脚。一旦熟悉了多引导理解,就可以查看文档以进行理解。本文不作深入介绍。

第二步是设置要跳转的地址,第三步是将iprog命令添加到g映像中。这两个操作可以以命令的形式发送到ICAP接口,从而触发多引导跳转并加载新的镜像数据。

阅读以上分析后,首先要了解如何实现加载M镜像的要求。下一步是在加载失败时回滚到g映像。

M图像加载失败,需要返回G图像。多引导方案调用此步骤回退。

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

1. ID Code错误

2. CRC错误

3. Watchdog超时

4. BPI地址越界

ID代码错误是指配置文件中的设备模型与当前设备不匹配。CRC校验是指配置数据发送到FPGA后进行校验,如果数据不一致则提示CRC错误。这两个基本原则相对来说比较容易理解,对于具体的细节,我们需要能够解析位文件的内容,然后才能完全理解它们。

看门狗超时是指如果在指定时间内配置不成功,则触发看门狗超时,从而导致回退。

BPI地址交叉是指增量BPI地址超过较大值并溢出回0时的回退划分。

在对这四个条件进行了全面了解后,我们可以看出,BPI只适用于BPI模式,类似于看门狗模式,如果一段时间内加载不成功,地址会逐渐增加,计时器会逐渐增加,回退会在后面触发。ER超出了范围,所以BPI不会做进一步解释。

ID代码没有进一步解释,因为ID代码不正确,可能使用了错误的镜像文件。所以没什么可分析的。

关键点是2和3。当存在多引导映像时,如果M映像的内容有问题,则会触发CRC检查错误,以确保成功加载映像后,数据没有问题。

但是如果没有多引导映像,就无法执行CRC验证,或者它挂起了一半。需要监视程序触发回退。只要在一定时间内没有完成加载,就会触发看门狗超时。

因此,使用CRC来确保加载正确,并使用看门狗来确保始终提示加载失败。

注意,watchdogd的计时设置应该设置和测试,而不是仅仅根据经验/文档推断适当的值。

当发生回退时,项目将返回到0地址并开始加载,重新加载g映像。在这里,将记录FPGA内的配置寄存器。当发生回退时,iprog命令将被自动忽略,并直接加载g映像的后续部分,以确保g映像有机会完全加载。

通过一系列复杂的操作,可以实现双镜像配置切换。这种方法较大的优点是速度快。配置完成后,可以快速跳转、加载和返回。双镜像选择的关键步骤是在加载开始时跳转,因此跳转速度非常快,适用于某些需要配置时间的场合。缺点是原理和设置比较麻烦。

与上述方法不同,双镜切换方法是用户自己进行切换。一般原理是用户利用FPGA的可编程逻辑资源控制ICAP模块,输入需要跳转的地址,然后输入iprog命令触发跳转操作。此操作需要加载g映像并开始运行,然后用户控制何时跳转。

此操作的优点是:

1。跳转地址由用户选择,因此它可以在多个镜像中跳转,而不限于两个镜像。

2。您可以选择在正确的时间加载,并且用户具有更高的选择性。

主要缺点:

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

2。至少需要加载一个映像才能使用,因此无法使用需要高配置时间的方案。

如果只用于远程更新,则此解决方案不适用。使用自动双镜方案更容易。只要对G图像进行调试,对M图像的要求就相对较低。


服务热线

400-801-6772

企业微信销售咨询