FPGA MUTIBOOT(远程固件更新、多重启动)(以K7系列为例)

目录

  • 一、mutiboot是什么?
  • 二、为何分区?
    • 1.gloden区是什么?
    • 2.mutiboot区是什么?
    • 3.如何实现分区?
  • 三、gloden区实现
    • 1.关于ICAPE2的ID,设置如下图(32位的),以下都参考UG470
    • 2.关于ICAPE2的输入数据如下图(注意实际程序中如程序截图所示,gloden的热启动地址位mutiboot的起始地址)
    • 3.startupe2 (spi flash的sck时钟从这输入)
    • 4.xdc
  • 四、mutiboot区实现
  • 五、关于回退的讲解
    • 其他说明

一、mutiboot是什么?

1.描述:mutiboot顾名思义多重启动,是将FLASH分为若干区,分为一个gloden区和若干mutiboot区。
(本文只一个gloden区和一个mutiboot区)
2.应用:本文做远程固件更新。
3.工作原理:上电会首先启动mutiboot区域,若mutiboot区域没有程序会回退到gloden区(gloden区同样的)。
4.主要实现方式为三个重要:
___a.ICAPE2原语
___b.STARTUPE2原语
___c.XDC(或在程序编完后、打开综合后、在选项卡Tools中选择Settings后、选择Bitstream的添加比特流设置,用图形化设置与xdc一样的功能),本文使用XDC,不会介绍此功能的图形化界面。

二、为何分区?

1.假设没有分区,那我多重启动这个功能不如叫做------启动?
2.我的应用为远程固件更新,这存在着更新失败后FPGA就没程序了,要再次更新就只能用cable了。

1.gloden区是什么?

这个区我理解为基础区(相对的),是mutiboot区程序更新失败后,会在使能回退功能后,回退到gloden区。

2.mutiboot区是什么?

这个区我理解为更新区,可以更新此区域的程序


3.如何实现分区?

在合成mcs文件时分区,gloden只能放在低地址(我放在了32’h0000_0000),mutiboot放在高地址(32’h0100_0000),如下图:
在这里插入图片描述

三、gloden区实现

1.关于ICAPE2的ID,设置如下图(32位的),以下都参考UG470

在这里插入图片描述

2.关于ICAPE2的输入数据如下图(注意实际程序中如程序截图所示,gloden的热启动地址位mutiboot的起始地址)

在这里插入图片描述

在这里插入图片描述

3.startupe2 (spi flash的sck时钟从这输入)

在这里插入图片描述

4.xdc

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] (压缩比特流)
加上下面的语句
在这里插入图片描述

1 spi为x1模式的原因,根据UG470手册,7系列的FPGA只能在spix1模式下才可以回退
2 使能32位地址是因为我是用256m的flash,根据UG470手册,flash容量大于等于256m时要使能此功能(但如128m直接注释到这句话即可)
3 next_config_addr为mutiboot的起始地址
4 configfallback使能回退功能
5 timer_cfg的值位看门狗的计数值(周期位4us,即实际的计时时间为117188 * 4us = 400多ms)

四、mutiboot区实现

1 修改热启动地址为gloden区地址(32‘h0000_0000)
2 xdc文件中注释掉next_config_addr
3 xdc文件中添加set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT DISABLE [current_design]
失能iprog功能

五、关于回退的讲解

1.基于本应用,最重要的回退功能为烧写程序时,烧了一半或者刚擦完的情况
其实现回退的方式只有看门狗,如我上面在xdc中设置的看门狗值,(实现方式:程序未启动,在看门狗计数设置的值之后,会fallback另一个区域)

其他说明

烧写完mcs文件后如果不拔cable只会启动gloden区,拔了cable后才会有多重启动的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值