首页 » 互联网 » FPGA固件若何进行在线进级?_数据_串口

FPGA固件若何进行在线进级?_数据_串口

萌界大人物 2025-01-20 14:54:32 0

扫一扫用手机浏览

文章目录 [+]

. FPGA也能在线升级?

Xilinx和Altera这两家公司的FPGA固件常日保存在外部的一片SPI Flash芯片中,常规的下载办法是利用专用的下载器,如Xilinx的Platfom Cable USB或者USB Blaster,通过JTAG将程序文件下载到外部的Flash芯片中,程序固化的过程实质上是对片外的Flash芯片进行固件更新。

由此,我们可以知道,当FPGA产品量产,须要大批量进行程序烧写时,只须要利用SPI Flash烧写器通过烧录座对Flash芯片进行烧写,烧写完成之后再焊接到板子上。

FPGA固件若何进行在线进级?_数据_串口 FPGA固件若何进行在线进级?_数据_串口 互联网

ZYNQ

FPGA固件若何进行在线进级?_数据_串口 FPGA固件若何进行在线进级?_数据_串口 互联网
(图片来自网络侵删)

本文先容如何不通过JTAG口,不该用专用下载器,仅仅通过普通管脚来进行固件更新,分享实现思路和设计方法,暂时还没有示例工程。

以Xilinx FPGA通过串口进行固件升级为例,所须要的软硬件为:

FPGA板卡(含外部SPI Flash),如Spartan-6系列XC6SLX9 FPGA+M25P16 SPI Flash专用的PC串口上位机,也可以利用通用的串口助手,自定义的串口助手会增强通讯的稳定性和可靠性USB-TTL串口模块,用于FPGA和PC进行通讯专用的FPGA固件代码

整体大致流程为:FPGA内部串口解析模块吸收上位机发来的固件程序,写入内部FIFO或RAM中进行缓存,然后通过SPI Flash掌握器将缓存的数据写入外部的SPI Flash芯片中,大略的说FPGA便是充当了一个SPI Flash编程器的角色,完成UART-SPI协议的转换。

当然,这里的串口也可以是其他接口,如USB、网口、SPI等等,比如通过网络调试助手更新固件,通过USB口更新固件,通过外部的单片机进行更新固件,通过读取SD卡文件进行更新固件等等,实现事理都是一样的!

串口在线升级事理

嵌入式物联网须要学的东西真的非常多,千万不要学错了路线和内容,导致人为要不上去!

无偿分享大家一个资料包,差不多150多G。
里面学习内容、面经、项目都比较新也比较全!
某鱼上买估计至少要好几十。

点击这里找小助理0元领取:加微信领取资料

. FPGA程序文件构造

在进行设计之前,我们须要先理解一下FPGA的程序文件格式,以Xilinx FPGA程序文件为例,紧张有两种文件格式:Bit文件和Mcs文件。

前者Bit文件常日用于调试,Bit文件会下载到FPGA芯片内部RAM空间,掉电程序会丢失,由于FPGA开拓阶段须要频繁的进行程序的擦除烧写操作,这样的好处是程序下载速率非常快,不会花费Flash芯片的寿命。

后者Mcs文件常日用于末了的程序发布,产品量产时利用,它可以由Bit文件文件天生,在天生过程中须要指定外部SPI Flash的存储大小。

Mcs文件实在实质上便是Hex文件,将后缀名改为hex后,可以通过文本编辑器进行查看,由Hex文件构造,我们只须要图中的玄色的数据部分,然后把这些数据按顺序发送给FPGA即可。

Hex文件

. 通讯协议设计

为担保升级的稳定性,我们不该用通用的串口调试助手,通过自定义通讯协议和串口上位机,可以提高升级的可靠性。

串口通讯波特率常日为几百KBps,而SPI掌握器读写频率常日为几十MHz,为了能将数据完全有序的吸收、保存、写入,我们须要先将串口吸收的数据存储到FPGA内部的FIFO中,作为缓存和跨时钟域处理。

串口上位机解析出Mcs文件中的数据部分,启动传输前,先发启动命令,然后发送数据帧,末了发送结束命令。

数据帧包括:帧头+256字节数据+CRC校验值。
FPGA吸收到数据之后,对数据进行校验,校验精确回答给上位机一个精确相应旗子暗记,校验缺点回答缺点相应旗子暗记,串口上位机吸收到精确的相应旗子暗记后,连续发下一个数据帧,吸收到缺点的相应旗子暗记后,重复发上一帧数据,直到所有的数据发送完成,末了发送一个结束命令。
这样就大略定义了一个发送-相应机制的通讯协议。

. SPI芯片数据写入

SPI数据的写入有两种办法:

每吸收到一帧数据之后,对SPI实行一次写256字节操作;所有的数据吸收完成后,一次性将数据写入外部的SPI Flash芯片。

办法1:不须要开辟较大的FIFO空间对资源占用小,但是如果涌现一些非常操作,如升级过程中涌现非常操作,就会导致SPI Flash数据紊乱,固件升级失落败,而且导致原始的固件被破坏,导致去世机征象。

办法2:须要开辟较大的FIFO空间,常日升级文件大小为几百KB,会占用较多资源,如果数据未吸收完成涌现非常,也不会对原始的SPI芯片内的固件造成破坏,不会导致去世机情形。
但是这样也会有一个小问题,便是在数据吸收完成后,写SPI Flash期间,须要保持硬件稳定,不能滋扰数据写入过程,如涌现断电情形。

. SPI芯片擦除和校验

同理,为担保程序能正常运行,在数据吸收完成后,数据写入前,我们须要对SPI芯片实行全片擦除指令,这个擦除韶光一样平常会比较长,常日和存储大小干系,擦除完成之后,再实行写入,写入完成之后,如果有必要,可以对指定存储区间进行数据回读,和吸收到的数据进行比较,从而达到校验的目的。

. 总结

升级模块可以独立于运用逻辑,作为一个单独的功能,不会影响正常的代码逻辑。
本文只是供应一个大致实现思路,如果假如做得非常完美,事情量还是很大的。
当然串口只是一种升级办法,还可以通过SD卡升级,网口升级,USB升级,WiFi升级,外部掌握器(如STM32)对FPGA进行程序更新等。

FPGA固件升级

原文链接:https://mp.weixin.qq.com/s/fTDTJSZ_U_4OTrcr4CwNvQ

转载自:嵌入衰落处理器

原文链接:FPGA固件如何进行在线升级?

本文来源网络,免费传达知识,版权归原作者所有。
如涉及作品版权问题,请联系我进行删除。

标签:

相关文章

从技能角度看\"星闪\"_技巧_智能

什么是星闪?下面这段话是星闪同盟官网的先容,“星闪同盟是致力于环球化的家当同盟,目标是推动新一代无线短距通信技能SparkLink...

互联网 2025-01-20 阅读0 评论0