CN113050976B - 基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备 - Google Patents
基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN113050976B CN113050976B CN201911383362.2A CN201911383362A CN113050976B CN 113050976 B CN113050976 B CN 113050976B CN 201911383362 A CN201911383362 A CN 201911383362A CN 113050976 B CN113050976 B CN 113050976B
- Authority
- CN
- China
- Prior art keywords
- fpga
- upgrade
- file
- multicast group
- upgrade file
- 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.)
- Active
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/656—Updates while running
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备。该方法包括:若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。通过执行本技术方案,可以在不改进硬件结构的基础上,提高FPGA并行升级效率的效果。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备。
背景技术
随着科学技术的迅速发展,在图像采集、处理等领域,FPGA(Field ProgrammableGate Array,现场可编程门阵列)的配置数量日趋增加。在基于PCIe总线(PeripheralComponent Interconnect express,高速串行计算机扩展总线标准)的应用***中,FPGA设备数量越来越多,实现的功能也越来越复杂。因此在FPGA设备需要进行升级时,传统的单一升级的方式无论在时效性上面还是在维护成本上面都存在者极大的问题。
发明内容
本申请实施例提供一种基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备,可以在不改进硬件结构的基础上,提高FPGA并行升级效率的效果。
第一方面,本申请实施例提供了一种基于PCIe总线的FPGA并行升级方法,该方法包括:
若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;
根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;
向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。
可选的,对所述升级文件的头部校验数据进行校验,包括:
导入原始升级文件,在原始升级文件的头部增加预设长度的校验码,以得到升级文件;其中,所述校验码包括设备类型和FPGA类型;
对所述预设长度的校验码进行校验。
可选的,所述校验码还包括主版本号和次版本号;
相应的,对所述预设长度的校验码进行校验,包括:
若对所述设备类型和FPGA类型校验成功,且当前升级为强制升级,则在所述主版本号和次版本号满足预设标准时,则确定通过校验。
可选的,在根据目标FPGA在PCIe总线上的位置信息创建多播组之前,所述方法还包括:
获取目标FPGA映射到PCIe交换芯片上的端口信息。
可选的,向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级,包括:
根据多播组数量,确定升级文件的分片个数,得到升级文件单片;
将升级文件单片下发到多播组,若当前多播组内所有待升级的FPGA完成当前升级文件单片的写入,则下发下一个升级文件单片,直至升级文件写入完成。
可选的,升级文件写入完成,包括:
将所有升级文件单片下发到多播组,供所述待升级的FPGA将所述升级文件写入到flash,并将待升级的FPGA的状态寄存器置位到升级状态。
可选的,所述方法还包括:
若检测到待升级的FPGA状态寄存器复位,则确定所述待升级的FPGA升级完成;
通过所述flash的正常升级分区启动升级后的FPGA,若启动失败,则从所述flash的备份分区启动升级失败的FPGA。
第二方面,本申请实施例提供了一种基于PCIe总线的FPGA并行升级装置,该装置包括:
升级文件校验模块,用于若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;
多播组创建模块,用于根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;
升级文件下发模块,用于向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。
第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所述的基于PCIe总线的FPGA并行升级方法。
第四方面,本申请实施例提供了一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例所述的基于PCIe总线的FPGA并行升级方法。
本申请实施例所提供的技术方案,若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。通过采用本申请所提供的技术方案,可以在不改进硬件结构的基础上,提高FPGA并行升级效率的效果。
附图说明
图1是本申请实施例提供的基于PCIe总线的FPGA并行升级方法的流程图;
图2是本申请实施例提供的基于PCIe总线的FPGA分布式连接示意图;
图3是本申请实施例提供的基于PCIe总线的FPGA并行升级示意图;
图4是本申请实施例提供的FPGA的位置信息的示意图;
图5是本申请实施例提供的升级数据写入到flash的示意图;
图6是本申请实施例提供的基于PCIe总线的FPGA并行升级装置的结构示意图;
图7是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1是本申请实施例提供的基于PCIe总线的FPGA并行升级方法的流程图,本实施例可适用于FPGA并行升级的情况,该方法可以由本申请实施例所提供的基于PCIe总线的FPGA并行升级装置执行,该装置可以由软件和/或硬件的方式来实现,并可集成于基于具有通过PCIe总线连接的多个FPGA的电子设备中。
如图1所示,所述基于PCIe总线的FPGA并行升级方法包括:
S110、若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA。
其中,一个主控板可以通过PICe Bus连接多个业务板卡,每个业务板卡上面设置有多个FPGA(Field Programmable Gate Array,现场可编程门阵列)。图2是本申请实施例提供的基于PCIe总线的FPGA分布式连接示意图。如图2所示,在基于PCIe总线的应用***中,FPGA设备数量越来越多,实现的功能也越来越复杂。由于其FPGA数量的增加,直接带来了维护,管理成本的增加。
其中,可以是基于用户的操作,或者其他触发机制,来确定检测到FPGA升级事件,例如当检测到存在FPGA的升级文件时,就可以确定为检测到升级事件。
其中,头文件可以包含校验数据,校验数据可以分为强校验码和弱校验码。
在本实施例中,可选的,对所述升级文件的头部校验数据进行校验,包括:导入原始升级文件,在原始升级文件的头部增加预设长度的校验码,以得到升级文件;其中,所述校验码包括设备类型和FPGA类型;对所述预设长度的校验码进行校验。
根据升级的FPGA类型导入不同的升级文件1_A',x_A',其中的1_和x_代表FPGA的类型。其升级文件A'是由原始升级文件A上加上升级校验头而来,具体的,可以通过导入原始升级文件A,在原始升级文件头部加上升级校验数据,生成升级文件A'来实现。
本技术方案通过对原始升级文件的校验头的导入,可以确保在升级过程中的版本和FPGA对应关系都是正确的,避免了在升级过程中出现错误的问题。
在本实施例中,可选的,所述校验码还包括主版本号和次版本号;相应的,对所述预设长度的校验码进行校验,包括:若对所述设备类型和FPGA类型校验成功,且当前升级为强制升级,则在所述主版本号和次版本号满足预设标准时,则确定通过校验。
其中,升级文件的格式可以如下表所示:
2Byte | 2Byte | 2Byte | 2Byte |
设备类型 | FPGA类型 | 主版本号 | 次版本号 |
其中,其中,设备类型与FPGA类型为强校验码,主次版本号为弱校验码。设备类型主要描述与设备形态、功能以及PCIe分布式***硬件结构的类型码。随着需求的不断变化,基于PCIe分布式***的设备形态,功能各异,此校验码主要保证升级文件与设备的强相关性。在一个PCIe分布式***中,存在1个或者多个型号不同、功能不同的FPGA。FPGA类型检验码主要保证在当前PCIe分布式***中FPGA升级文件与FPGA功能,型号的强相关性。
主版本号与次版本号为组合使用的弱校验码,此校验码主要在升级前先将待升级的FPGA的版本进行回读,然后与升级文件中的主次版本号进行比对。当待升级的FPGA的***版本号高于升级文件的版本号时,在非强制升级情况下,此次升级动作不进行;在强制升级动作下,跳过此版本号比对。
其中,设置不同级别的校验码可以实现根据升级需求,在进行不同层次的升级,使得升级后的FPGA更加符合用户的使用需求。
S120、根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组。
在确定存在升级事件之后,可以确定需要升级的目标FPGA,并将所述目标FPGA按照FPGA类型划分为多播组。其中按照FPGA类型来划分多播组,可以实现对FPGA的并行升级的先决条件。通过检测当前***中需要升级的业务板卡类型以及需要升级的FPGA数量,控制PCIe交换芯片实现多播组,并将其需要升级的同类型FPGA加入到同一个多播组中,利用PCIe交换芯片实现数据的复制转发以达到多FPGA的并行升级,大大提高了多FPGA的升级效率。
图3是本申请实施例提供的基于PCIe总线的FPGA并行升级示意图。如图3所示,其中,PCIe_SW为PCIe交换芯片。启动升级时根据当前PCIe分布式***中FPGA的类型数量在CPU侧启动多任务一级并行升级。在一级并行升级任务中,每个升级任务存在m或n个同类型FPGA需要升级,其中,A类型为m个,B类型为n个,此时在PCIe交换芯片侧启动多播组进行二级并行升级。通过这样的将同类型FPGA作为一个升级任务的设置,可以实现更加精准的并且快速的对FPGA进行升级的效果。
S130、向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。
具体的,检测当前PCIe分布式***中需要升级FPGA的类型数量,此处根据FPGA的类型数量触发一级并行升级的任务数量,同种类型的FPGA对应同一个升级任务。
为单个同类型的FPGA升级任务中对升级文件进行校验。设备类型和FPGA类型为强校验,如若其中一项与待升级的FPGA不匹配则校验失败,此次升级结束。主版本号与次版本号为弱校验,如为强制升级则跳过对此类型的检查;如非强制升级,则需获取待升级的FPGA版本号与之进行比对,只有当前待升级的FPGA的版本低于此版本号才进行升级,否则,无法进行升级。
在本实施例中,可选的,在根据目标FPGA在PCIe总线上的位置信息创建多播组之前,所述方法还包括:获取目标FPGA映射到PCIe交换芯片上的端口信息。
图4是本申请实施例提供的FPGA的位置信息的示意图。如图4所示,每颗FPGA收到升级命令后,依次将其映射到PCIe总线上的升级RAM空间中的数据通过SPI写入到flash中。
具体的,校验通过后的待升级的FPGA数量以及在PCIe分布式***中的位置信息,此处的位置信息主要为每颗FPGA映射到PCIe交换芯片上的port端口信息。可以根据待升级的FPGA在PCIe交换芯片所连接的端口来确定其位置信息。确定后可以通过相应的端口下发升级文件,从而实现不同类型的FPGA并行升级的效果。
在上述各技术方案的基础上,可选的,向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级,包括:根据多播组数量,确定升级文件的分片个数,得到升级文件单片;将升级文件单片下发到多播组,若当前多播组内所有待升级的FPGA完成当前升级文件单片的写入,则下发下一个升级文件单片,直至升级文件写入完成。
其中,将升级文件的下发方式采用分片的方式进行下发,可以确保所下发的升级文件可以正常的被各个多播组所接受,同时,还不会影响并行升级的速率,这样设置可以提高FPGA并行升级的稳定性。避免因为传输问题造成的FPGA并行升级出现错误。
在本实施例中,可选的,升级文件写入完成,包括:将所有升级文件单片下发到多播组,供所述待升级的FPGA将所述升级文件写入到flash,并将待升级的FPGA的状态寄存器置位到升级状态。
图5是本申请实施例提供的升级数据写入到flash的示意图。如图5所示,此方法在FPGA内部开辟一块固定大小的FIFO(First Input First Output,先进先出)空间供升级文件传输,在CPU侧需将待升级的文件切割为大小小于等于FIFO的多片数据。每次将切割后的单片文件发送到FPGA的FIFO中,FPGA检测此FIFO有数据写入后立即将FIFO中的数据写入到外部flash中。
在上述技术方案的基础上,可选的,所述方法还包括:若检测到待升级的FPGA状态寄存器复位,则确定所述待升级的FPGA升级完成;通过所述flash的正常升级分区启动升级后的FPGA,若启动失败,则从所述flash的备份分区启动升级失败的FPGA。
在此方案中,CPU侧只需关注FPGA内部FIFO映射到本地的地址空间,而且在分片下发时,每片数据发送的目的地址是一致的,也无需关注每片数据发送后的Bar地址递增问题。FPGA侧每次从FIFO取出数据后递增的将数据写入到flash中。CPU侧需等待FPGA单片数据写入到flash中后才进行下一片数据的发送。
本申请实施例所提供的技术方案,若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。通过采用本申请所提供的技术方案,可以在不改进硬件结构的基础上,提高FPGA并行升级效率的效果。
在上述各技术方案的基础上,本申请还提供了一种具体的实施方式。由于对升级文件的校验前面已经介绍的比较细致,此处不再赘述,则在校验完成后,执行如下操作:
获取校验通过后的待升级的FPGA数量以及在PCIe分布式***中的位置信息,此处的位置信息主要为每颗FPGA映射到PCIe交换芯片上的port端口信息。
确定需要升级的FPGA数量后,通过PCIe总线向当前任务内的每颗FPGA发送flash擦除命令,由FPGA完成其下挂flash的擦除动作。
将当前任务内的FPGA加入到同一个PCIe多播组中,并开启多播转发功能,由PCIe交换芯片完成多FPGA的二级并行升级。
具体的,本发明提出一种分片式下发数据的方法,在升级过程中将升级文件切割为多片,每次下发固定大小的数据文件。有效利用PCIe分布式***中的Bar空间以及单颗FPGA内部RAM空间资源。
在使用PCIe多播进行数据传输时,为了不影响其他正在以单播方式进行数据交换的任务,在实际使用过程中,PCIe分布式***中可为多播分配使用的Bar空间是有限的。当多播组越多,每个多播组可使用的Bar空间就相对越少。PCIe Bar空间的减少就无法将FPGA下挂flash空间完整的映射到CPU进行访问,CPU侧就无法对整片flash进行读写。
此方法在FPGA内部开辟一块固定大小的FIFO空间供升级文件传输,在CPU侧需将待升级的文件切割为大小小于等于FIFO的多片数据。每次将切割后的单片文件发送到FPGAFIFO中,FPGA检测此FIFO有数据写入后立即将FIFO中的数据写入到外部flash中。
在此方法中,CPU侧只需关注FPGA内部FIFO映射到本地的地址空间,而且在分片下发时,每片数据发送的目的地址是一致的,也无需关注每片数据发送后的Bar地址递增问题。FPGA侧每次从FIFO取出数据后递增的将数据写入到flash中。CPU侧需等待FPGA单片数据写入到flash中后才进行下一片数据的发送。
分片式下发数据的方法有效的解决了PCIe开启多播时Bar空间不足的问题,同时也解决在PCIe分布式***中可大批量对不同类型的FPGA并行升级的问题。
每下发一次数据进行一次计数,直到被切割多片的文件全部发送停止。将切割后的单片数据写入到对应多播组的Bar地址空间,由PCIe交换芯片将此空间中的单片数据复制转发至需升级的各个FPGA内部升级RAM空间,进而完成一次多播数据的写入。每颗FPGA收到升级命令后,依次将其映射到PCIe总线上的升级RAM空间中的数据通过SPI写入到flash中,无需外部电路参与即可完成一次数据的写入。
每颗FPGA将单片数据完成写入后会将其内部升级状态寄存器置位,CPU侧在超时时间内通过检测此状态寄存器判断升级状态。只有当此多播组内的所有FPGA升级状态都正常后,才进行下一片数据的发送。判断当前整个升级文件是否分片下发完成,没有结束则进行下一片数据的切割发送。
当前多播组内的所有FPGA升级完成后,对其进行复位,使其能在线加载升级后的文件。复位结束后FPGA默认从flash的A分区(正常升级的分区)启动,如果无法启动,则从flash的B分区(备份分区)启动。A分区为正常的升级分区,B分区为备份分区,出厂时写入。这样保证不管FPGA是否升级成功都能正常启动并建立PCIe通讯。
如果升级过程产生异常导致某FPGA未能正常升级成功,则此FPGA从备份分区启动。FPGA从备份区启动后其主版本号和次版本号都为0,CPU侧会再次校验版本号并对其进行升级。
本发明采用PCIe多播对同类型FPGA进行升级,由于PCIe传输速率远远大于其他低速总线,其在并行升级FPGA的同时也加快了整体的升级速度,大大提高了多颗FPGA的升级效率。也无需增加额外的升级电路,有效降低了成本。另外,当存在自然因素导致升级失败时,二次启动后FPGA能正常从备份镜像启动,有效降低了现场维护成本,提高升级可靠性。
图6是本申请实施例提供的基于PCIe总线的FPGA并行升级装置的结构示意图。如图6所示,所述基于PCIe总线的FPGA并行升级装置,包括:
升级文件校验模块610,用于若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;
多播组创建模块620,用于根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;
升级文件下发模块630,用于向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。
本申请实施例所提供的技术方案,若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。通过采用本申请所提供的技术方案,可以在不改进硬件结构的基础上,提高FPGA并行升级效率的效果。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种基于PCIe总线的FPGA并行升级方法,该方法包括:
若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;
根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;
向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机***存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的计算机***中,或者可以位于不同的第二计算机***中,第二计算机***通过网络(诸如因特网)连接到计算机***。第二计算机***可以提供程序指令给计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机***中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的基于PCIe总线的FPGA并行升级操作,还可以执行本申请任意实施例所提供的基于PCIe总线的FPGA并行升级方法中的相关操作。
本申请实施例提供了一种电子设备,该电子设备中可集成本申请实施例提供的基于PCIe总线的FPGA并行升级装置。图7是本申请实施例提供的一种电子设备的结构示意图。如图7所示,本实施例提供了一种电子设备700,其包括:一个或多个处理器720;存储装置710,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器720执行,使得所述一个或多个处理器720实现本申请实施例所提供的基于PCIe总线的FPGA并行升级方法,该方法包括:
若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;
根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;
向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级。
当然,本领域技术人员可以理解,处理器720还实现本申请任意实施例所提供的基于PCIe总线的FPGA并行升级方法的技术方案。
图7显示的电子设备700仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,该电子设备700包括处理器720、存储装置710、输入装置730和输出装置740;电子设备中处理器720的数量可以是一个或多个,图7中以一个处理器720为例;电子设备中的处理器720、存储装置710、输入装置730和输出装置740可以通过总线或其他方式连接,图7中以通过总线750连接为例。
存储装置710作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块单元,如本申请实施例中的基于PCIe总线的FPGA并行升级方法对应的程序指令。
存储装置710可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置710可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置710可进一步包括相对于处理器720远程设置的存储器,这些远程存储器可以通过网络连接。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置730可用于接收输入的数字、字符信息或语音信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置740可包括显示屏、扬声器等设备。
本申请实施例提供的电子设备,可以在不改进硬件结构的基础上,提高FPGA并行升级效率的效果。
上述实施例中提供的基于PCIe总线的FPGA并行升级装置、介质及电子设备可执行本申请任意实施例所提供的基于PCIe总线的FPGA并行升级方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的基于PCIe总线的FPGA并行升级方法。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (8)
1.一种基于PCIe总线的FPGA并行升级方法,其特征在于,包括:
若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;
根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;
向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级;
其中,所述向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级,包括:
根据多播组数量,确定升级文件的分片个数,得到升级文件单片,在FPGA内部开辟一块固定大小的FIFO空间供升级文件传输,在CPU侧需将待升级的文件切割为大小小于等于FIFO的多片数据;每次将切割后的单片文件发送到FPGA的FIFO中,FPGA检测此FIFO有数据写入后立即将FIFO中的数据写入到外部flash中;将升级文件单片下发到多播组,若当前多播组内所有待升级的FPGA的升级状态均正常,则下发下一个升级文件单片,直至升级文件写入完成;所述FPGA在将所述升级文件单片写入后对自身内部升级状态寄存器进行置位;所述升级状态正常为所述待升级的FPGA的内部升级状态寄存器在超时时间内被检测出置位;
所述对所述升级文件的头部校验数据进行校验,包括:
导入原始升级文件,在原始升级文件的头部增加预设长度的校验码,以得到升级文件;其中,所述校验码包括设备类型和FPGA类型;
对所述预设长度的校验码进行校验。
2.根据权利要求1所述的方法,其特征在于,所述校验码还包括主版本号和次版本号;
相应的,对所述预设长度的校验码进行校验,包括:
若对所述设备类型和FPGA类型校验成功,且当前升级为强制升级,则在所述主版本号和次版本号满足预设标准时,则确定通过校验。
3.根据权利要求1所述的方法,其特征在于,在根据目标FPGA在PCIe总线上的位置信息创建多播组之前,所述方法还包括:
获取目标FPGA映射到PCIe交换芯片上的端口信息。
4.根据权利要求3所述的方法,其特征在于,升级文件写入完成,包括:
将所有升级文件单片下发到多播组,供所述待升级的FPGA将所述升级文件写入到flash,并将待升级的FPGA的状态寄存器置位到升级状态。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若检测到待升级的FPGA状态寄存器复位,则确定所述待升级的FPGA升级完成;
通过所述flash的正常升级分区启动升级后的FPGA,若启动失败,则从所述flash的备份分区启动升级失败的FPGA。
6.一种基于PCIe总线的FPGA并行升级装置,其特征在于,包括:
升级文件校验模块,用于若检测到FPGA升级事件,确定升级文件,并对所述升级文件的头部校验数据进行校验,确定校验成功升级文件对应的FPGA为目标FPGA;
多播组创建模块,用于根据所述目标FPGA的FPGA类型划分多播组,并根据目标FPGA在PCIe总线上的位置信息创建多播组;
升级文件下发模块,用于向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级;
其中,所述向所述多播组下发升级文件,供多播组中待升级的FPGA进行并行升级,包括:
根据多播组数量,确定升级文件的分片个数,得到升级文件单片,在FPGA内部开辟一块固定大小的FIFO空间供升级文件传输,在CPU侧需将待升级的文件切割为大小小于等于FIFO的多片数据;每次将切割后的单片文件发送到FPGA的FIFO中,FPGA检测此FIFO有数据写入后立即将FIFO中的数据写入到外部flash中;将升级文件单片下发到多播组,若当前多播组内所有待升级的FPGA的升级状态均正常,则下发下一个升级文件单片,直至升级文件写入完成;所述FPGA在将所述升级文件单片写入后对自身内部升级状态寄存器进行置位;所述升级状态正常为所述待升级的FPGA的内部升级状态寄存器在超时时间内被检测出置位;
所述对所述升级文件的头部校验数据进行校验,包括:
导入原始升级文件,在原始升级文件的头部增加预设长度的校验码,以得到升级文件;其中,所述校验码包括设备类型和FPGA类型;
对所述预设长度的校验码进行校验。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一项所述的基于PCIe总线的FPGA并行升级方法。
8.一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1- 5中任一项所述的基于PCIe总线的FPGA并行升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911383362.2A CN113050976B (zh) | 2019-12-28 | 2019-12-28 | 基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911383362.2A CN113050976B (zh) | 2019-12-28 | 2019-12-28 | 基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113050976A CN113050976A (zh) | 2021-06-29 |
CN113050976B true CN113050976B (zh) | 2023-06-20 |
Family
ID=76507179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911383362.2A Active CN113050976B (zh) | 2019-12-28 | 2019-12-28 | 基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113050976B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302020A (zh) * | 2023-05-25 | 2023-06-23 | 北京中科网威信息技术有限公司 | Fpga的逻辑程序升级方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012067710A1 (en) * | 2010-11-18 | 2012-05-24 | Thomson Licensing | Method to safely reprogram an fpga |
CN104581782A (zh) * | 2014-12-29 | 2015-04-29 | 三维通信股份有限公司 | 一种用于分布式综合接入***的新型fpga模块 |
WO2016011607A1 (zh) * | 2014-07-23 | 2016-01-28 | 华为技术有限公司 | 一种终端升级方法及相关设备 |
CN107943499A (zh) * | 2017-11-27 | 2018-04-20 | 深圳创维数字技术有限公司 | 一种***升级方法、装置、终端及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033768B (zh) * | 2010-12-10 | 2013-10-30 | 杭州海康威视数字技术股份有限公司 | 多cpu***的启动方法及多cpu*** |
CN103513994B (zh) * | 2012-06-19 | 2017-10-20 | 记忆科技(深圳)有限公司 | 一种通过pcie 进行fpga 在线升级的方法和*** |
US10587534B2 (en) * | 2017-04-04 | 2020-03-10 | Gray Research LLC | Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks |
CN107579863A (zh) * | 2017-10-17 | 2018-01-12 | 锐捷网络股份有限公司 | 终端ota升级方法、装置及*** |
CN107770279B (zh) * | 2017-10-31 | 2020-12-29 | 深圳市银河风云网络***股份有限公司 | 远程升级方法及*** |
CN108733394B (zh) * | 2018-04-24 | 2021-11-16 | 烽火通信科技股份有限公司 | 一种光网络单元版本升级方法及*** |
CN109542478A (zh) * | 2018-11-09 | 2019-03-29 | 中电科仪器仪表有限公司 | 一种更新SPI Flash内FPGA程序的***及方法 |
CN110134421A (zh) * | 2019-05-24 | 2019-08-16 | 南方电网科学研究院有限责任公司 | 电能表管理芯片升级方法、***及电子设备和存储介质 |
CN110597533A (zh) * | 2019-08-22 | 2019-12-20 | 苏州浪潮智能科技有限公司 | 一种fpga板卡程序更新***及方法 |
-
2019
- 2019-12-28 CN CN201911383362.2A patent/CN113050976B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012067710A1 (en) * | 2010-11-18 | 2012-05-24 | Thomson Licensing | Method to safely reprogram an fpga |
WO2016011607A1 (zh) * | 2014-07-23 | 2016-01-28 | 华为技术有限公司 | 一种终端升级方法及相关设备 |
CN104581782A (zh) * | 2014-12-29 | 2015-04-29 | 三维通信股份有限公司 | 一种用于分布式综合接入***的新型fpga模块 |
CN107943499A (zh) * | 2017-11-27 | 2018-04-20 | 深圳创维数字技术有限公司 | 一种***升级方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113050976A (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8285913B2 (en) | Storage apparatus and interface expansion authentication method therefor | |
US7747809B2 (en) | Managing PCI express devices during recovery operations | |
JP5268469B2 (ja) | 高可用システム及び実行状態制御方法 | |
US20230168957A1 (en) | Non-Volatile Memory Switch with Host Isolation | |
CN103678193A (zh) | 控制非易失性存储卡的主机、包括主机的***、操作方法 | |
CN101506783B (zh) | 用于阻隔操作的条件式广播的方法和设备 | |
US8990451B2 (en) | Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller | |
CN102971711A (zh) | 用于处理批工作单元的设备 | |
EP3001323B1 (en) | Serial peripheral interface | |
US9753655B2 (en) | Computing system with write buffer including speculative storage write and method of operation thereof | |
JP2006302287A (ja) | 冗長i/oインターフェース管理 | |
CN103631534B (zh) | 数据存储***以及其管理方法 | |
KR20170013882A (ko) | 플래시 메모리 기반 저장 디바이스의 멀티 호스트 전력 제어기(mhpc) | |
CN113050976B (zh) | 基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备 | |
CN110990116A (zh) | 在智能网卡和虚拟机之间传输数据的方法、装置和*** | |
CN104123173A (zh) | 一种实现虚拟机间通信的方法及装置 | |
US20090248915A1 (en) | Communication control apparatus and communication control method | |
US9053092B2 (en) | System authorizing direct data transfers between memories of several components of that system | |
US10769092B2 (en) | Apparatus and method for reducing latency of input/output transactions in an information handling system using no-response commands | |
US20080052429A1 (en) | Off-board computational resources | |
CN109800110A (zh) | 数据备份方法、***及电子设备、存储介质和备份装置 | |
CN109710187A (zh) | NVMe SSD主控芯片的读命令加速方法、装置、计算机设备及存储介质 | |
CN115048255A (zh) | 一种自动化测试方法、装置,主机及存储介质 | |
TW201916644A (zh) | 匯流排系統 | |
US10467156B1 (en) | System and method of improving efficiency in parallel data processing of a RAID array |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |