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

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

3天内不再提示

multiboot什么意思 MultiBoot的功能简介、流程介绍

算法与数据结构 来源:Ingdan FPGA 作者:Ingdan FPGA 2021-08-04 16:32 次阅读

本文主要包含MultiBoot的功能简介、流程介绍和工程实现几个部分的讲解。

我们先从它的功能介绍讲起来;MultiBoot功能是大部分Xilinx FPGA可以实现的固有特性;其主要优点如下所示:

1、我们可以把多个bitstream存储在配置Flash中,通过MultiBoot功能来实现多个bitstream之间的动态切换,从而达到使用FPGA来实现多种任务;

2、在一个工程里面实现多个功能模块,而每个功能模块不需要同时运行的情况,可以通过MultiBoot功能使用相对小规模的FPGA来实现其功能,从而提高性价比;

3、MultiBoot和Fallback可以支持实现FPGA远程在线升级,当升级bit有错误可以触发Fallback来返回到Golden Image去正常运行。

Golden Image里面正常会包含FPGA实现的基本功能,例如外设配置和初始化、远程升级等等客户需要的基本功能;如果Golden Image损坏的情况下,FPGA是无法工作的,需要返回工厂重新手动烧写bit文件到Flash中。

Golden Image设计要求主要包含下面几点:

1、IPROG(Internal program) command在Golden Image里面可以通过设置bitstream setting里面的next configuration address (BITSTREAM.CONFIG.NEXT_CONFIG_ADDR),或者在HDL代码使用ICAPE3原语来设定加载地址值;通过设置BITSTREAM.CONFIG.NEXT_CONFIG_REBOOTDISABLE来把

IPROG command关掉,在这种情况下上电后会直接去加载Golden Image;

2、跳转地址寄存器WBSTAR(warm boot start address)可以在bitstream或者ICAP里面来设定;

3、MultiBoot Image必须存储在WBSTAR设置的Flash地址位置;

4、Watchdog timer包含configuration monitor和user logic monitor两种模式;在配置模式下面,Timer times out情况下,配置电路会去加载fallback bitstream。Watchdog Timer可以在bitstream options里面使能。

Golden Image是从Flash中的0地址开始存储;其帧头会包括WBSTAR(next_config_addr)寄存器里面指定的upper address space等信息。FPGA器件上电后会从0地址开始加载Golden Image后,会根据里面的设定来决定加载Golden Image还是直接跳转到MultiBoot Image存储地址去执行MultiBoot Image;当MultiBoot Image加载时候遇到错误,Fallback电路会触发去重新从0地址去加载Golden Image。

MultiBootImage是从设定好的upper address space去加载运行;如果加载出现问题,Fallback电路会去加载Golden Image。我们可以在Golden Image里面去修复Multiboot Image里面的错误等等问题。所以说MultiBoot Image里面运行的就是我们要实现的具体业务功能,可以是多个Multiboot Image。

Golden Image设计要求主要包含下面几点:

1、WBSTAR里面的值要指向MultiBoot存储位置;

2、Watchdog Timer功能要bitstream options里面使能;

3、代码里面可以通过IPROG命令去运行ICAPE3来跳转想要运行其他的MultiBoot Image。

在配置过程中遇到IDCODE error、CRC error、Watchdog timer timeout error、BPI address wraparound error情况会触发fallback。Fallback功能可以通过使能bitstream.config.configfallback enable里面的ConfigFallback选项来实现。当fallback运行时,Watchdog TimerIPROG是disable的;另外当fallback重新配置FPGA出错情况下,配置电路会停止工作同时会把INIT_BDone保持为低电平。

MultiBoot功能可以通过设置下面bitstream里面的参数来实现。这些参数可以通过Tcl console或者写入到XDC文件里面来实现其功能。

在前面介绍其功能作用和含义等等后,下面我们开始工程实现。

本人使用Vivado版本为2020.2;硬件基于米联客设计的KU040板卡。先建立Golden Image的工程,里面包括HDL文件和XDC约束。

GoldenImage的工程里面代码主要是把led1灯点亮。XDC里面包括IO约束信息等等,其中0x040000是Multiboot Image存放Flash里面的物理地址。

Multiboot Image led2的工程里面代码主要是把led1灯点亮。XDC里面包括IO约束和配置约束信息等等,可以看到是和Golden Image工程里面约束是有差异的。

c9ddd5f4-f497-11eb-9bcf-12bb97331649.png

在工程建立完成后开始合并bit文件并烧入到板卡里面:

1、使用下面tcl去把两个bit文件合为一个mcs文件;

c9fa355a-f497-11eb-9bcf-12bb97331649.png

2、通过Hardware Manager去烧入到板卡的Flash中;3、烧写完成后选择Boot from Configuration Memory Devive去加载FPGA。4、在FPGA加载后可以看到板卡上面LED2灯点亮。

5、在Hardware Device Properties的BOOT_STATUS里面可以看到INTERNAL_PROG使能;由于加载没有错误,目前运行的是Multiboot程序。CONFIG_SATUS里面可以看到DON_PIN拉高。

下面我们尝试把multiboot image里面的IDCODE修改掉,人为的造成错误来验证板卡是否会跳转到Golden Image去执行。1、使用UltraEdit把ku_multiboot_spix4.mcs打开后,搜索到Update.bit里面的KU040的IDCODE3822093,并把它修改为0;重新生成ku_multiboot_spix4 _id.mcs文件烧入到FPGA.

ca34995c-f497-11eb-9bcf-12bb97331649.png

2、按照前面流程合成bit文件后烧入到Flash中并上电;3、在FPGA加载后可以看到板卡上面LED1灯点亮;证明Fallback功能生效,当Multiboot Image损坏后可以安全加载Golden Image。

4、在Hardware Device Properties的BOOT_STATUS里面可以看到INTERNAL_PROG使能,ID_ERROR拉高;这时候Multiboot Image加载遇到ID错误,FPGA返回到Golden Image去运行。

我们可以再尝试把multiboot image其他部分破坏掉导致CRC出错来验证功能。

1、使用UltraEdit把ku_multiboot_spix4.mcs打开后,在Update.bit里面做如下修改来验证CRC错误情况。

2、烧入到板卡上电后;由于multiboot image里面有CRC错误,所以板卡还是返回到Golden Image去运行。

除了前面我们在bitstream里面去实现Multiboot功能,我们还可以在代码里面嵌入IPROG的命令来实现Image的跳转功能。

我们可以在点亮LED2的那个工程来做相关修改:

1、我们在点LED2灯的MultiBoot Image LED2工程里面加入ICAPE3代码;

2、根据前面命令流程图在代码里面实现其功能;其中Warm Boot Start Address要跟bit文件在Flash里面位置对应起来,不然跳转后会找不到对应的image导致失败。

cb2627f4-f497-11eb-9bcf-12bb97331649.png

3、建立点亮MultiBoot Image LED3工程来配合前面IPROG命令功能;这样可以通过MultiBoot Image LED2 工程里面的IPROG命令在FPGA不断电的情况下实时把切换MultiBoot Image LED3到工程来点亮LED3。

cb36413e-f497-11eb-9bcf-12bb97331649.png

4、使用下面tcl去把两个bit文件合为一个mcs文件;

cb46eaf2-f497-11eb-9bcf-12bb97331649.png

5、烧写完成后选择Boot from Configuration Memory Devive去加载FPGA,然后通过外置按键来执行MultiBoot Image LED2 工程里面的IPROG命令去实现跳转。

编辑:jq

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

    关注

    1602

    文章

    21317

    浏览量

    593153

原文标题:Xilinx FPGA的MultiBoot功能介绍和实现

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    7 series FPGAs SPI MultiBoot应用笔记

    7 series FPGAs MultiBoot功能指让FPGA从2个或者多个BIT文件中加载一个BIT文件运行程序,本文档介绍基于个人参考设计例程K7MultiBoot的应用笔记
    发表于 04-05 00:25

    有什么办法可以更快地为Main_multiboot.mcs获得总的舞会校验和吗?

    嗨,我使用promgen命令两次生成我的多重引导文件,一次用于标题,第二次用于黄金和多重引导(参见下面的命令)。我觉得找到最终mcs文件(Main_multiboot.mcs)的正确舞会校验和的唯一
    发表于 07-16 11:00

    为什么我使用spartan6的多引导MCS文件下载失败了?

    大家好,我通过我在这个论坛中学到的步骤生成一个黄金位,在bitGen选项中启用多重启动功能,并设置黄金起始地址0x0000_0100(黄金映像),下一个配置地址是0x0006_0000(我的多重
    发表于 07-19 09:12

    如何为MultiBoot生成SPIx4模式闪存文件

    你好 我完成了一个使用SPIx1进行MultiBoot的设计(只有比特流A和B没有Goldenstream)。结果是我的期待。然后我用SPIx4读命令(03-> 6B)修改ICAP
    发表于 07-29 13:50

    如何使用BPI闪存的Spartan 6 Multiboot功能

    大家好!我正在使用从BPI 16位宽闪存芯片加载的Spartan 6 slx100器件:RC28F256P33TF为了实现多引导功能,我遵循以下来自论坛的指南:http
    发表于 05-29 08:44

    如何创建Golden镜像和Multiboot镜像?

    升级。基本的防止变砖功能,即在升级过程中任何时刻,出现异常情况,如断电,线缆断开等,都应该能保证重新上电后,还可以再次完成升级流程,防止芯片变砖。升级流程的优化,可靠的通讯协议,例如握手、校验、应答
    发表于 04-04 17:11

    Xilinx-Spartan6 FPGA实现MultiBoot

    通过Xilinx Spartan-6 FPGA 的Multiboot特性,允许用户一次将多个配置文件下载入Flash中,根据不同时刻的需求,在不掉电重启的情况下,从中选择一个来重配置FPGA,实现不同功能,提高器件利用率,增加
    发表于 03-22 17:18 65次下载
    Xilinx-Spartan6 FPGA实现<b class='flag-5'>MultiBoot</b>

    如何使用FPGA的Multiboot功能实现系统升级更新

    很多产品都有远程升级维护的需求,那么如何对FPGA实现安全可靠的远程升级呢? 需要用到FPGA的multiboot功能,Flash中可以存储2个配置程序 第一个配置程序,叫golden程序。位于
    发表于 02-08 10:13 992次阅读
    如何使用FPGA的<b class='flag-5'>Multiboot</b><b class='flag-5'>功能</b>实现系统升级更新

    关于Xilinx公司出品的Spartan6系列FPGA的MultiBoot设计方案详解

    的一个,对FPCA在系统重配置,实现不同的功能MultiBoot特性使得用户可以在某些场合选择较少逻辑资源的Xilinx FPGA,实现需要较大逻辑资源且较昂贵的FPGA或ASIC才能实现的功能,从而提高器件利用率及系统安全性
    发表于 07-13 08:01 9404次阅读
    关于Xilinx公司出品的Spartan6系列FPGA的<b class='flag-5'>MultiBoot</b>设计方案详解

    屏障定时器流程测试方法以及使用此方法

    XAPP1247 是对应使用屏障镜像时的多重启动 (Multiboot) 和回退 (Fallback) 的示例应用。
    的头像 发表于 06-09 14:51 1387次阅读

    7 eries FPGAs SPI MultiBoot实现方式

    7 Series FPGAs MultiBoot功能指让FPGA从2个或者多个BIT文件中加载一个BIT文件运行程序,所以它的2个主要应用如下: 1. 更新新的BIT时,当更新失败或BIT出错会返回
    的头像 发表于 12-11 14:58 1518次阅读
    7 eries FPGAs SPI <b class='flag-5'>MultiBoot</b>实现方式

    在FPGA中如何通过ICAP原语实现Multiboot

    FPGA的MultiBoot功能可以支持远程动态更新bitstream images,实现bitstream images的实时切换。在MultiBoot配置过程中检测到错误时,FPGA可以触发
    的头像 发表于 05-11 14:20 5219次阅读
    在FPGA中如何通过ICAP原语实现<b class='flag-5'>Multiboot</b>?

    深入探究Xilinx Multiboot实例

    原理 关于Multiboot的原理参考《 Xilinx 7系列FPGA Multiboot介绍-远程更新 》,基本原理都在此文写的很清楚,本文主要从实例出发演示Multiboot。 补
    的头像 发表于 09-26 09:37 3216次阅读
    深入探究Xilinx <b class='flag-5'>Multiboot</b>实例

    基于ZYNQ的multiBoot测试说明

    基于ZYNQ的multiBoot测试
    的头像 发表于 02-16 16:21 4909次阅读
    基于ZYNQ的<b class='flag-5'>multiBoot</b>测试说明

    缩短MultiBoot流程中的回跳 (Fallback)时间

    MultiBoot 是 FPGA 远程更新配置文件时一种非常普遍的应用--为了确保安全,我们通常需要安排一个 Golden Image,升级失败后 FPGA 能回跳 (Fallback) 到此配置,从而使 FPGA 始终处于可被检测的工作状态。
    的头像 发表于 12-09 09:50 728次阅读