基于SPI flash的 Multiboot远程更新

基于SPI flash的 Multiboot远程更新

前言

Xilixn FPGA提供了一种在线升级的方式(本文使用的是A7和K7系列fpga,以下所讲述和涉及的都是与此2系列fpga相关)可以通过ICAPE2指令实现。ICAPE2指的是内部配置访问端口,其主要作用是通过内部配置访问端口(ICAPE2),用户可以在FPGA逻辑代码中直接读写FPGA内部配置寄存器(类似SelectMAP),从而实现特定的配置功能,例如Multiboot。FPGA实现IPROG通常有两种方式,一种是通过ICAPE2配置,一种是把相关指令嵌入bit文件中。与通过bit文件实现IPROG相比,通过ICAP更灵活。对Xilinx FPGA的升级其实是Multiboot的操作。如下图所示,基地址存放的是Golden Image(bootloader),而高地址存放的是MultiBoot Image。本文对Xilinx A7和K7系列的MulIboot做一些简单介绍。

一、MultiBoot?

在这里插入图片描述
在flash中放置2个固件,一个是Golden image,另一个是updata image,我们使用的是updata image,升级时也是使用updata image,Golden image是为了防止updata image受损、升级时断电或升级时输出出错时无无法使用时,Golden image就会被启用,确保可以进行下一次升级,不然就需要使用JTAG对固件进行升级,这样可以很好的解决远程固件升级、批量板卡升级等工作量重复的工作;

二、ICAPE2 接口

在这里插入图片描述
FPGA实现IPROG通常有两种方式,一种是通过ICAPE2配置,一种是把相关指令嵌入bit文件中。与通过bit文件实现IPROG相比,通过ICAPE2更灵活。

三、IPROG指令

IPROG指令的作用跟外部Program_B管脚的作用类似,都是对FPGA芯片进行复位操作,该复位操作对FPGA内部的应用程序进行复位,复位过程中除专用配置管脚和JTAG管脚,其他输入/输出管脚均为高阻态,同时IPROG指令不能复位专用重配置逻辑,如WBSTAR寄存器、TIMER寄存器、BSPI寄存器和BOOTSTS寄存器。IPROG指令能够触发FPGA开启初始化流程,同时拉低INIT和Done信号。完成复位操作后,将默认的加载地址用热启动地址寄存器(Warm Boot Start Address,WB-STAR)中的新地址替换。

通过ICAP发送IPROG指令实现Multiboot的步骤如下:
在这里插入图片描述
首先写入同步头 32’hAA995566, 然后将需要跳转到的bit文件的起始地址写入WBSTAR寄存器,最后写入IPROG(internal PROGRAM_B)指令。

WBSTAR寄存器的格式,根据自己的要为Update_image分配在FLASH的地址,按照下面的格式生成一个32位数据。例如,我为Update_image分配的flash地址为0X00600000。
在这里插入图片描述

#程序及步骤
golden工程
1、需在工程中加入ICAPE2,此ICAPE2在工程中的作用是使用golden固件队upadata固件进行升级完毕后,加载updata固件使用的;
2、需在约束XDC文件中增加图5所示约束,此约束功能是在板卡上电时从golden固件的基地址跳至upadata固件的基地址,我的工程中updata固件基地址是0x00600000;
在这里插入图片描述
``图5

updata
1、需在工程中加入ICAPE2,此ICAPE2在工程中的作用是使用golden固件队upadata固件进行升级完毕后,加载updata固件使用的;
2、需在约束XDC文件中增加图6所示约束,此约束功能是在板卡上电时从golden固件的基地址跳至upadata固件的基地址,我的工程中updata固件基地址是0x00600000;
在这里插入图片描述
图6
步骤
1、做好golden(1颗闪烁灯)、updata(2颗闪烁灯)工程的golden.bit、golden.bin、updata.bit、updata.bin;
2、使用fpga仿真器将updata.bit烧录fpga中,然后使用升级工具将updata.bin升级入flash中;
3、使用fpga仿真器将golden.bin烧录flash中;
4、断电、拔掉fpga仿真器;
5、上电,可以看到2颗灯闪烁;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhou_bin_yyd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值