关于FPGA远程更新bpi flash中multiboot的实现

这篇具有很好参考价值的文章主要介绍了关于FPGA远程更新bpi flash中multiboot的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于FPGA远程更新bpi flash中multiboot的实现

  • 关键词: 远程固化、flash固化、multiboot实现、bpi flash
一.什么叫multiboot ?

multiboot 即 flash多重启动加载方式,常用于远程加载场景中,当远程加载失败时,flash会启动应急预案,将另一块地址的备用程序拿来作为加载FPGA的程序,防止由远程固化失败导致的FPGA启动不了的情况。

二.multiboot 实现的基本流程

基本流程为: 将FLASH按照地址划分为两段,分别叫Golden Image和MultiBoot Image,使用时,需要在Golden Image和MultiBoot Image固化的程序文件中加入特定的约束。上电后,FPGA会先从Address 0开始加载程序,此时,特定的协议会告知FPGA从Upper Address加载程序。若MultiBoot Image中有配置完整的程序文件,FPGA将加载程序并运行,否则FPGA将会再次跳转到Golden Image,直接从Address 0加载程序文件并运行。
bpi flash,fpga开发,verilog,经验分享,multiboot,bpi flash

三、FPGA生成Golden Image和MultiBoot Image固化程序文件
(1)Golden Image的bit文件

在生成所需的bit流文件时,需要额外加入以下约束:

set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT ENABLE [current_design]
set_property BITSTREAM.CONFIG.TIMER_CFG  0x00010000 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS true [current_design] 
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x00800000 [current_design]                
(2)MultiBoot Image的bit文件

在生成所需的bit流文件时,需要额外加入以下约束

set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]  
set_property BITSTREAM.GENERAL.COMPRESS true [current_design] 
(3)一个工程同时生成两种bit文件的方法(注:等于(1)+(2))
 
 set boot_bitfile_name "FPGA_boot.bit" ;
set_property BITSTREAM.CONFIG.CONFIGRATE 33 [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 1 [current_design]
set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR Yes [current_design]
set_property BITSTREAM.GENERAL.COMPRESS true [current_design]               
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x00800000 [current_design]
set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT ENABLE [current_design]    
set_property BITSTREAM.CONFIG.TIMER_CFG  0x00010000 [current_design]


set path_curr_tcl [file dirname [info script]]; #获取当前脚本所在路径

set OutPath "$path_curr_tcl/../../out";  #脚本路径返回2级后的out文件夹 "/../"表示上一级路径

#如果不存在此路径,则新建
if { ![file exists $OutPath] } {
    file mkdir $OutPath ;
}

write_bitstream -force -bin_file [file join $OutPath $boot_bitfile_name];  #在指定路径上生成bit文件

#到此结束是生成第一个bit和bin文件
#此处开始生成第二个bit和bin文件
set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT DISABLE [current_design]
set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]   
set_property BITSTREAM.CONFIG.TIMER_CFG  0x00000000 [current_design]
write_bitstream -force -bin_file [current_design]

并将如上约束复制到txt文件中,并将后缀改为tcl文件,并将tcl文件添加至比特流设置的 tcl pre 中,可在工程的out文件夹中的生成Golden Image的bit文件
bpi flash,fpga开发,verilog,经验分享,multiboot,bpi flash

(4)将bit文件转化为bin文件

如下图,因为BPI 的bin文件需要进行swapping操作,因此bin文件需要使用如下方法生成。

bpi flash,fpga开发,verilog,经验分享,multiboot,bpi flash

bpi flash,fpga开发,verilog,经验分享,multiboot,bpi flash
如上需要选择 对应的flash芯片

四、远程下载上板验证
(1)生成合成的mcs文件

可以通过如下方式生成multiboot的合并mcs文件,第一个方框里是本文使用的bpi flash ,第二个方框中是multiboot的flash地址,注意,这里的地址与前面golden image 的约束是一致的,且这里的0x0800000地址,因为这里使用的是bpi x16的数据模块,因此0x0800000对应的数据位置其实是16M,这点我们在实现该功能的时候走了弯路,需要留意。
bpi flash,fpga开发,verilog,经验分享,multiboot,bpi flash

(2)将mcs文件固化到flash中,重启设置
(3)如何确定目前是multiboot image 还是 golden image的程序?

bpi flash,fpga开发,verilog,经验分享,multiboot,bpi flash
如上点击当前的fpga芯片,可以找到boot status 寄存器,当寄存器中的 BIT0_0_BACK为0 时候,表示这时候跑的是multiboot image的程序,如果BIT0_0_BACK为1 时候,表示这时候跑的是golden image的程序。文章来源地址https://www.toymoban.com/news/detail-608579.html

到了这里,关于关于FPGA远程更新bpi flash中multiboot的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Xilinx(AMD) 7系列FPGA——主BPI配置模式

    主BPI配置模式用于对启动加载时间有要求的情况下使用,因为BPI模式为并行加载,加载时间较短,适用于需要快速加载的场景;主BPI模式,M[2:0] = 3’b010。主BPI模式进行读写操作时,分为同步与异步两种,对于同步读取,FPGA的CCLK管脚输出必须连接到Flash的CLK引脚;对于异步读

    2024年03月17日
    浏览(54)
  • FPGA VIVADO 实现FLASH固化操作步骤

    2.1  按顺序选择ToolsGenerate Memory Configuration File    2.2 生成MCS  2.3 对选择的spi总线进行约束 默认是spi x1,如果在上一步选择了其他的模式,可以直接在xdc文件中直接添加约束语句(举例spi x4如下:选择了其他spi总线只需更改第五句代码中的总线数。 或者直接在vivado中选择  

    2024年02月05日
    浏览(50)
  • FPGA vitis实现固化程序到flash

    之前有实现PL端的数据固化,仅对A、K系列的板子有效。需要的可以参考 FPGA VIVADO 实现FLASH固化操作步骤_fpga固化程序-CSDN博客 再者ZYNQ的开发板上一般都是要通过SDK固化的,所以本期讲解一下vitis怎么固化程序。 由于ZYNQ有好几种固化方式,我们先讲一下最简单的固化到flash,以

    2024年04月10日
    浏览(43)
  • FPGA远程更新/远程调试的一种简单方法

    之前介绍过一种远程(无线)更新的方式,详见《起飞!通过无线WIFI下载调试FPGA》,这种方式缺点有两个:一是速度较慢;二是我们的设备中需要增加一个无线设备,增加成本的同时增加了暴露的风险。这两点即无法在调试的时候使用也没办法在实际设备中使用。今天我们

    2024年02月09日
    浏览(43)
  • 用于FPGA远程更新的QuickBoot方法

    下图为具有FPGA远程更新功能的系统架构: 在FPGA设计中,FPGA固件主要烧录到flash中。 QuickBoot远程更新方案是一种用于FPGA固件远程更新的解决方案; 该方案对固件更新过程的编程算法进行简单调整,将 编程错误/中断复的责任置于编程操作上 下图展示了QuickBoot的系统架构框图

    2024年02月08日
    浏览(38)
  • 关于xilinx fpga flash烧录失败报错cannot set write enable bit or block(s) protected

    最近买了块新板子,固化程序一次就烧录不了,报错ERROR: [Labtools 27-3347] Flash Programming Unsuccessful: cannot set write enable bit or block(s) protected 记录一下如何解决的吧。 字面意思,flash写保护了。用的开发板上的flash是MX25L25645G,先看手册status register。 如图保护是bit5到bit0。 读一下该

    2024年02月08日
    浏览(55)
  • FPGA实现基于SPI协议的Flash驱动控制(全擦除、页擦除、读数据、页写、连续写—地址写)

    本论文使用Verilog HDL硬件描述语言,结合野火可以FPGA征途Pro开发板,实现了SPI通信协议的全擦除,扇区擦除,读数据,页写,连续写的驱动设计。在 Altera Cyclone Ⅳ 芯片上采用“自顶向下”的模块化设计思想及 Verilog HDL 硬件描述语言,设计并实现串行外设接口(SPI)。在 Qu

    2024年02月12日
    浏览(49)
  • 【FPGA】SPI读写flash

    SPI是同步全双工通信,通信原理以主从方式工作,通常有一个主设备和一个或多个从设备,需要4根线连接:MISO(主设备数据输入)、MOSI(主设备输出)、SCLK(时钟)、CS(片选)。通常拉低对应从机的片选来收发数据。 MISO:主设备输入,从设备输出 MOSI:主设备输出,从设备输入 SCLK:时

    2024年02月05日
    浏览(43)
  • FPGA 固化 烧写进Flash!

    1、Generate Programming File  生成bit 流文件; 2、生成.msc文件: 双击Manage Configuration Project,弹出烧程序界面(同RAM); 双击Create PROM File (PROM File……),弹出新界面,分3个步骤; 根据芯片型号进行配置: 选择Xilinx Flash/PROM类型的设备 选择PROM family (为platform Flash);选择具体型

    2024年02月07日
    浏览(43)
  • 【FPGA】SPI读写FLASH闪存

    通信原理 SPI也是以主从方式工作,通常需要四根线来完成数据的传输,分别是MISO MOSI CS SCLK。以下是这四根线代表的含义: MISO:主设备输入,从设备输出 MOSI:主设备输出,从设备输入 CS :片选信号,选择进行通信的从设备 SCLK:时钟线,由主设备产生给到从设备 SPI通信的

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包