当前位置:   article > 正文

FPGA在线升级实战应用篇_fpga在线升级程序

fpga在线升级程序

FPGA在线升级实战应用篇

1 摘要

项目在运营过程中可能需要根据应用需求更改固件,或者对现有产品进行升级及在产品使用过程出现的故障进行分析,故需要对产品进行升级维护。以往的产品出现的故障或BUG问题只能通过产品寄回厂家或者人力出差解决问题。偶尔有的用户对FPGA稍微熟悉点,把固件文件发送给用户,用户自己对产品进行升级和固件烧写。对于产品用户来说这样的体验是比较差的。当然产品升级的途径有多种。考虑成本可以选择本地升级,只需要开发本地软件,采用UART或者USB等接口按照自定义的协议对FPGA固件进行升级。或者租用花生壳这样的外网映射进行网络远程升级。本文主要介绍本地软件实现固件升级功能。

2 FPGA加载程序流程

FPGA程序运行的方式有两种:1,加载本地RAM运行(掉电不保存);2,将程序固化至flash中(掉电保存)。程序下载在内部RAM中,FPGA直接读取内本RAM文件运行程序。程序下载在flash中,FPGA上电后会自动从0地址开始加载固件。
FPGA升级主要工作就是对外挂的flash进行固件的更新。升级功能开发之前,我们需要对flash的存储固件区域结构进行相应的了解。
MultiBoot的配置文件由两个比特流文件生成,第一个为备份文件,确保板卡执行出厂程序,称为Golden_image,从Flash的0x00地址存储。第二个为更新文件,作为更新升级文件,即Update_image,存放在某个地址处,这个地址有热启动地址寄存器(WBSTAR)指定。配置过程大致如下:
FPGA从FLASH的0地址处读取配置,遇到IPROG Command命令时,跳转到WBSTAR寄存器指定的地址,该地址存放Update_image的地址,此时FPGA尝试加载该地址处的比特流文件,配置成功的话,就执行该配置的功能。如果遇到配置错误,则触发FallBack,FPGA重新加载Golden_image。
MultiBoot 多文件配置流程图

3 设计

1 、本地软件本设计采用MFC进行设计,接口方式采用USB 、UART 、PCIE等设备。由于需要保证USB或者其他设备通讯过程中下载固件的完整性和可靠性,需要与FPGA交互过程中开发简单的握手协议。这里我们自定义了简单的握手协议。在该设计中升级软件包含了UART、USB、PCIE等升级方式。后续的网口远程通讯也正在开发维护中。
软件设计界面
2、FPGA设计验证
FPAG设计为了简化SPI复杂的逻辑设计,采用Qflash专用的IP核对flash进行擦写操作。在操作FLASH之前需要了解一下常用FLASH擦写规则:
1)最小擦除单位:扇区
2)可选择擦除单位:扇区、块、全片
3)最大编程(写入)单位:页( 256 Byte),大于256 Byte则需要循环写入。
4)最小编程(写入)单位:1 Byte,即一次可写入 1~256 Byte的任意长度字节。
5)未写入时FLASH里面的数据为全1,即0xFF。
为了实现硬件验证,我们需要建立两个工程,一个工程为Golden工程,另外一个工程为Update工程。为了更好的区分一个可以设置成静态的LED灯程序,另外一个工程设计为流水灯程序,这样可以很容易验证FPGA运行了哪个程序。接下来破坏golden程序,按照上述制作MCS文件后运行,再进行验证FPGA是否跑的是Update工程。
FPGA  design

4 总结

开发不易珍惜每一分原创和劳动成果,同时注意平时开发过程中的经验积累总结。该工程已经在现有的工程项目中得到了应用和验证,如有需要了解详细的设计可以联系 QQ:309967512

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/947946
推荐阅读
相关标签
  

闽ICP备14008679号