CN114115957A - 一种带备份的fpga在线更新方法及其系统 - Google Patents
一种带备份的fpga在线更新方法及其系统 Download PDFInfo
- Publication number
- CN114115957A CN114115957A CN202111431652.7A CN202111431652A CN114115957A CN 114115957 A CN114115957 A CN 114115957A CN 202111431652 A CN202111431652 A CN 202111431652A CN 114115957 A CN114115957 A CN 114115957A
- Authority
- CN
- China
- Prior art keywords
- fpga
- chip
- instruction
- online
- segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开了一种带备份的FPGA在线更新方法及其系统,该在线更新方法具体包括如下步骤:S1、在FLASH芯片内设置存储区域,用于放置备份配置文件及更新配置文件;S2、在备份配置文件中嵌入包含地址跳转指令和看门狗指令的IPROG指令;S3、通过PC机将在线更新目标配置文件数据传送给FPGA芯片;S4、FPGA芯片接收PC机传送的在线更新目标配置文件数据并进行校验,再写入Flash芯片;S5、IPROG指令引导FPGA芯片启动,对在线更新目标配置文件进行相应的在线更新。本发明无需额外控制器件,结构简单;通过配置文件内嵌入的指令引导FPGA在两份配置文件内切换启动,实现当FPGA在线更新过程中出现故障时FPGA正常启动,避免反复拆卸设备进行恢复,提高效率,同时增加在线更新FPGA的可靠性。
Description
技术领域
本发明属于通用信号处理模块设计技术领域,具体涉及一种带备份的FPGA在线更新方法。
背景技术
在电子设备领域,FPGA凭借其丰富的接口资源、高速处理能力以及可编程灵活性得以广泛使用。FPGA可以根据客户需求的变化、系统调试中的实际问题来修改逻辑功能,做出修改后就需要更新FPGA的配置文件。调试时,我们一般用JATG接口进行烧录、调试,但是等电子设备上线时,因为JATG接口过于笨重,我们一般是不保留该接口;在没有这个接口的情况下要想下载新的程序,就必须使用在线升级。
目前FPGA的在线更新主要通过额外控制器件如微控制器或者CPLD来实现,但是加大硬件设计难度,同时电子设备面板接口点数有限,JTAG接口也比较易受到电磁干扰。另外电子设备多采用电池供电,使用环境也较复杂,当FPGA在线更新过程中出现故障,则会导致FPGA无法正常启动,通常采用通过拆卸设备进行恢复的方法,耗时耗力,同时使得在线更新FPGA的可靠性低。
发明内容
本发明提供一种带备份的FPGA在线更新方法及其系统,该系统以FPGA作为核心控制器件,无需额外控制器件,结构简单;该方法通过备份配置文件内嵌入的指令引导FPGA在两份配置文件内切换启动,实现当FPGA在线更新过程中出现故障时FPGA正常启动,避免反复拆卸设备进行恢复,提高效率,同时增加在线更新FPGA的可靠性。
本发明所提供的技术方案如下:
一种带备份的FPGA在线更新方法,包括如下步骤:
S1、在FLASH芯片内设置存储区域,用于放置备份配置文件及更新配置文件;
S2、在备份配置文件中嵌入包含地址跳转指令和看门狗指令的IPROG指令;
S3、通过PC机将在线更新目标配置文件数据传送给FPGA芯片,具体包括:1)PC机将在线更新目标配置文件分割为大小相等的N个片段,并进行编号:片段1、片段2......片段N;2)PC机分别对片段1、片段2......片段N进行CRC校验计算,并通过Ethernet接口依次发送给FPGA芯片;
S4、FPGA芯片接收PC机传送的在线更新目标配置文件数据并进行校验,再写入Flash芯片,具体包括:1)FPGA芯片从Ethernet接口接收CRC校验计算过的片段1、片段2......片段N数据并进行校验;2)通过Flash芯片上的驱动模块将片段1、片段2......片段N数据依次写入Flash芯片上相对应的存储区域;3)FPGA芯片依次回读写入Flash芯片上存储的片段1、片段2......片段N数据,与写入Flash芯片之前的片段1、片段2......片段N进行比较:若一致,则写入成功;否则重新写入;
S5、FPGA上电启动时,从Flash芯片的0地址开始读取数据,IPROG指令引导FPGA芯片启动,对在线更新目标配置文件进行相应的在线更新,具体包括:1)FPGA芯片接收到S2中IPROG指令的看门狗指令,设置看门狗计时;2)FPGA芯片接收到S2中IPROG指令的地址跳转指令,FPGA芯片直接跳转到所述更新配置文件处启动;3)若启动成功,则FPGA更新成功,开始正常工作;若看门狗计时结束,FPGA还未启动成功,表示当前更新失败,则FPGA跳转到备份配置文件处重新启动,再次进行FPGA在线更新。
进一步地,所述S2中的IPROG指令通过在FPGA工程的XDC文件中加入TCL命令实现。
进一步地,所述S2中的IPROG指令在Vivado软件的setting中设置实现。
一种带备份的FPGA在线更新系统,该系统包括PC机、FPGA芯片和FLASH芯片,所述PC机与所述FPGA芯片通讯连接,所述FLASH芯片通过SPI通信总线与所述FPGA芯片相连;所述FPGA芯片集成有配置数据接收模块、校验模块、Flash驱动模块和在线更新控制模块;所述FLASH芯片上设置有第一存储区和第二存储区,所述第一存储区放置有备份配置文件,所述第二存储区放置有更新配置文件,所述备份配置文件嵌入有IPROG指令,所述IPROG指令包括看门狗指令和地址跳转指令。
进一步地,所述FLASH芯片通过BPI通信总线与所述FPGA芯片相连。
进一步地,所述通讯连接设置为网络接口或串行接口或PCIe接口连接。
本发明的有益效果是:1)在更新配置过程中采用将在线更新目标配置文件分段多次传输的方法,减少FPGA存储资源的使用,对FPGA其他功能影响小,对小容量FPGA适用性强;2)设置有两份配置文件,使得FPGA在线更新过程中出现故障时可以正常启动,无需反复拆卸维修影响设备的快速恢复,提高工作效率;3)设置的看门狗指令和地址跳转指令可以使得FPGA在遇到故障时可以自由切换启动配置文件完成FPGA的正常配置。
附图说明
图1是本发明一种带备份的FPGA在线更新方法的流程图;
图2是本发明一种带备份的FPGA在线更新系统的结构示意图;
图3是图2中FPGA芯片的结构示意图;
图4是本发明实施例2的结构示意图;
图5是本发明中的IPROG指令引导FPGA芯片启动的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
需要说明的是,在本发明的描述中,需要说明的是,如出现术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
实施例1
如图1、图2和图5所示,一种FPGA在线更新方法,具体包括如下步骤:
S1、在FLASH芯片内设置存储区域,用于放置备份配置文件及更新配置文件;
S2、在备份配置文件中嵌入包含地址跳转指令和看门狗指令的IPROG指令,该IPROG指令可通过在FPGA工程的XDC文件中加入TCL命令实现;
S3、通过PC机将在线更新目标配置文件数据传送给FPGA芯片,具体包括:1)PC机将在线更新目标配置文件分割为大小相等的256个片段,并进行编号:片段1、片段2......片段256;2)PC机分别对片段1、片段2......片段N进行CRC校验计算,并通过Ethernet接口依次发送给FPGA芯片;
S4、FPGA芯片接收PC机传送的在线更新目标配置文件数据并进行校验,再写入Flash芯片,具体包括:1)FPGA芯片从Ethernet接口接收CRC校验计算过的片段1、片段2......片段256数据并进行校验;2)通过Flash芯片上的驱动模块将片段1、片段2......片段256数据依次写入Flash芯片上相对应的存储区域;3)FPGA芯片依次回读写入Flash芯片上存储的片段1、片段2......片段256数据,与写入Flash芯片之前的片段1、片段2......片段256进行比较:若一致,则写入成功;否则重新写入;
S5、FPGA上电启动时,从Flash芯片的0地址开始读取数据,IPROG指令引导FPGA芯片启动,对在线更新目标配置文件进行相应的在线更新,具体包括:1)FPGA芯片接收到S2中IPROG指令的看门狗指令,设置看门狗计时;2)FPGA芯片接收到S2中IPROG指令的地址跳转指令,FPGA芯片直接跳转到所述更新配置文件处启动;3)若启动成功,则FPGA更新成功,开始正常工作;若看门狗计时结束,FPGA还未启动成功,表示当前更新失败,则FPGA跳转到备份配置文件处重新启动,再次进行FPGA在线更新。
作为本实施例的进一步,所述S2中的IPROG指令在Vivado软件的setting中设置实现。
实施例2
如图3至图4所示,一种带备份的FPGA在线更新系统,该系统包括PC机、FPGA芯片和FLASH芯片,所述PC机与所述FPGA芯片网络接口,所述FLASH芯片通过SPI通信总线与所述FPGA芯片相连;所述FPGA芯片集成有配置数据接收模块、校验模块、Flash驱动模块和在线更新控制模块;所述FLASH芯片上设置有第一存储区和第二存储区,所述第一存储区放置有备份配置文件,所述第二存储区放置有更新配置文件,所述备份配置文件嵌入有IPROG指令,所述IPROG指令包括看门狗指令和地址跳转指令。
作为本实施例的进一步,所述通讯连接设置为串行接口或PCIe接口连接。
作为本实施例的进一步,所述FLASH芯片通过BPI通信总线与所述FPGA芯片相连。
本实施例中,所述配置数据接收模块负责接收PC机传送在线更新目标配置文件的数据;所述在线更新控制模块指引Flash驱动模块将在线更新目标配置文件按顺序写入Flash芯片的第二存储区;Flash驱动模块实现Flash芯片的读写,该Flash驱动模块支持SPI或BPI Flash芯片的读写;所述校验模块不仅可对PC端发送的数据进行校验,而且对通过Flash驱动模块回读写入Flash的数据与原数据进行比较,用于确保写入数据完全正确。
本发明的工作原理:PC机负责将在线更新目标配置文件分割成若干个片段依次传送给FPGA;FPGA依次接收PC机传送的若干个片段并进行校验,再通过Flash驱动模块写入Flash,并回读Flash内数据进行比较;Flash内部储存两份配置文件,FPGA只更新第二份配置文件即更新配置文件,当在线更新出现故障时,FPGA在嵌入第一份配置文件即备份配置文件中的IPROG指令引导下重新启动使得FPGA在线更新正常配置。
本发明的FPGA在线更新系统是以FPGA自身为核心控制器件,不依赖处理器芯片,结构简单;该在线更新方法同时通过使用两份配置文件自由切换启动,解决了FPGA程序更新故障后需要现场拆卸维修的问题;可应用于对可靠性、稳定性要求较高的场景。
以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明原理和实质的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
Claims (6)
1.一种带备份的FPGA在线更新方法,其特征在于,包括如下步骤:
S1、在FLASH芯片内设置存储区域,用于放置备份配置文件及更新配置文件;
S2、在备份配置文件中嵌入包含地址跳转指令和看门狗指令的IPROG指令;
S3、通过PC机将在线更新目标配置文件数据传送给FPGA芯片,具体包括:1)PC机将在线更新目标配置文件分割为大小相等的N个片段,并进行编号:片段1、片段2......片段N;2)PC机分别对片段1、片段2......片段N进行CRC校验计算,并通过Ethernet接口依次发送给FPGA芯片;
S4、FPGA芯片接收PC机传送的在线更新目标配置文件数据并进行校验,再写入Flash芯片,具体包括:1)FPGA芯片从Ethernet接口接收CRC校验计算过的片段1、片段2......片段N数据并进行校验;2)通过Flash芯片上的驱动模块将片段1、片段2......片段N数据依次写入Flash芯片上相对应的存储区域;3)FPGA芯片依次回读写入Flash芯片上存储的片段1、片段2......片段N数据,与写入Flash芯片之前的片段1、片段2......片段N进行比较:若一致,则写入成功;否则重新写入;
S5、FPGA上电启动时,从Flash芯片的0地址开始读取数据,IPROG指令引导FPGA芯片启动,对在线更新目标配置文件进行相应的在线更新,具体包括:1)FPGA芯片接收到S2中IPROG指令的看门狗指令,设置看门狗计时;2)FPGA芯片接收到S2中IPROG指令的地址跳转指令,FPGA芯片直接跳转到所述更新配置文件处启动;3)若启动成功,则FPGA更新成功,开始正常工作;若看门狗计时结束,FPGA还未启动成功,表示当前更新失败,则FPGA跳转到备份配置文件处重新启动,再次进行FPGA在线更新。
2.根据权利要求1所述的一种FPGA在线更新方法,其特征在于,所述S2中的IPROG指令通过在FPGA工程的XDC文件中加入TCL命令实现。
3.根据权利要求1所述的一种FPGA在线更新方法,其特征在于,所述S2中的IPROG指令在Vivado软件的setting中设置实现。
4.一种带备份的FPGA在线更新系统,该系统包括PC机、FPGA芯片和FLASH芯片,其特征在于,所述PC机与所述FPGA芯片通讯连接,所述FLASH芯片通过SPI通信总线与所述FPGA芯片相连;所述FPGA芯片集成有配置数据接收模块、校验模块、Flash驱动模块和在线更新控制模块;所述FLASH芯片上设置有第一存储区和第二存储区,所述第一存储区放置有备份配置文件,所述第二存储区放置有更新配置文件,所述备份配置文件嵌入有IPROG指令,所述IPROG指令包括看门狗指令和地址跳转指令。
5.根据权利要求4所述的一种带备份的FPGA在线更新系统,其特征在于,所述FLASH芯片通过BPI通信总线与所述FPGA芯片相连。
6.根据权利要求4所述的一种带备份的FPGA在线更新系统,其特征在于,所述通讯连接设置为网络接口或串行接口或PCIe接口连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111431652.7A CN114115957A (zh) | 2021-11-29 | 2021-11-29 | 一种带备份的fpga在线更新方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111431652.7A CN114115957A (zh) | 2021-11-29 | 2021-11-29 | 一种带备份的fpga在线更新方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114115957A true CN114115957A (zh) | 2022-03-01 |
Family
ID=80371262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111431652.7A Pending CN114115957A (zh) | 2021-11-29 | 2021-11-29 | 一种带备份的fpga在线更新方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114115957A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840579A (zh) * | 2023-02-14 | 2023-03-24 | 合肥安迅精密技术有限公司 | Fpga远程更新方法、系统、贴片机及存储介质 |
-
2021
- 2021-11-29 CN CN202111431652.7A patent/CN114115957A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840579A (zh) * | 2023-02-14 | 2023-03-24 | 合肥安迅精密技术有限公司 | Fpga远程更新方法、系统、贴片机及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106569847B (zh) | 一种用于车载系统基于移动网络实现iap远程升级的方法 | |
CN105677398A (zh) | 一种通用的嵌入式计算机软件在线升级方法 | |
CN111562932B (zh) | 一种高可靠嵌入式软件升级方法及系统 | |
CN111240720A (zh) | 引导程序升级方法、装置及存储介质 | |
CN109002310A (zh) | 固件升级方法 | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
CN106598654B (zh) | 一种在线更新PowerPC主板引导芯片的方法 | |
CN114281394A (zh) | 一种快速在线升级程序的方法、系统、设备及介质 | |
CN112947977A (zh) | 一种软件在线升级方法及系统 | |
CN105468390B (zh) | Boot在线升级装置及方法 | |
CN112650518A (zh) | Dsp程序在线升级方法 | |
CN112540780A (zh) | 一种编队无人机批量固件升级实现系统、方法 | |
CN111782246A (zh) | 基于总线的多节点设备嵌入式程序升级方法 | |
US20050216792A1 (en) | Debug system | |
CN117687664A (zh) | 一种dsp的在线升级配置方法及装置 | |
CN113760332A (zh) | 软件升级方法和电子设备 | |
CN114115957A (zh) | 一种带备份的fpga在线更新方法及其系统 | |
CN115840579A (zh) | Fpga远程更新方法、系统、贴片机及存储介质 | |
CN111414182B (zh) | 一种基于spi的fpga远程升级方法 | |
CN114265603A (zh) | 基于不对称分区的系统升级方法、装置和电子设备 | |
CN116700765A (zh) | 伺服驱动器的固件升级方法及装置、伺服驱动器 | |
CN110134423B (zh) | 固件的更新方法、装置及计算机可读存储介质 | |
CN113626792B (zh) | PCIe Switch固件安全执行方法、装置、终端及存储介质 | |
CN213211012U (zh) | 一种激光雷达系统的在线升级装置及激光雷达系统 | |
CN111666094B (zh) | 一种实时固件升级系统与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |