一种flash升级方法、装置、设备及存储介质
技术领域
1.本发明涉及计算机技术领域,特别涉及一种flash升级方法、装置、设备及存储介质。
背景技术:2.随着数据中心业务迅速发展,数据中心交换机需求量也在迅速增加。fpga逻辑资源丰富,逻辑编程灵活,可实现高速定制转发业务,满足高速虚拟化需求,在数据中心得到广泛应用。随着fpga设备的大量部署,fpga镜像的在线更新功能需求增加,目前在线升级功能对单型号flash支持,供应链波动,各个厂家对fpga外部程序存储器能支持多厂家flash的需求越来越强烈。
3.因此,如何提供一种兼容多型号的flash升级方案是本领域技术人员亟待解决的技术问题。
技术实现要素:4.有鉴于此,本发明的目的在于提供一种flash升级方法、装置、设备及存储介质,能够兼容多型号flash升级,降低软件处理复杂度,提高开发效率。
5.其具体方案如下:
6.本技术的第一方面提供了一种flash升级方法,包括:
7.获取升级指令,并根据所述升级指令读取片外flash的标识信息;
8.判断读取到的标识信息是否为预设标识列表中的标识信息,如果是,则通过处理器上的pcie主设备将待升级fpga镜像传输至fpga芯片;
9.当所述fpga芯片的pcie从设备接收到所述待升级fpga镜像,则通过所述fpga芯片的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。
10.可选的,所述判断读取到的标识信息是否为预设标识列表中的标识信息之后,还包括:
11.如果是,则利用多路选择器将片外flash切换至处理器侧,以通过所述处理器的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。
12.可选的,所述判断读取到的标识信息是否为预设标识列表中的标识信息之后,还包括:
13.如果是,则对片外flash进行初始化并对所述升级镜像区域进行擦除;
14.擦除成功后上报擦除成功信息,以生成镜像下发指令并根据所述镜像下发指令通过所述处理器上的pcie主设备将所述待升级fpga镜像传输至所述fpga芯片。
15.可选的,所述通过所述fpga芯片的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域之后,还包括:
16.判断所述待升级fpga镜像是否写入完全,如果否,则等待预设时间之后将所述fpga芯片切换至空闲状态;
17.如果是,则利用所述fpga芯片从片外flash中读取写入的所述待升级fpga镜像,并对读取的所述待升级fpga镜像进行校验,如果校验通过则判定升级成功,并将所述fpga芯片切换至空闲状态,如果校验未通过则将所述fpga芯片切换至空闲状态。
18.可选的,所述利用所述fpga芯片从片外flash中读取写入的所述待升级fpga镜像,并对读取的所述待升级fpga镜像进行校验,包括:
19.利用所述fpga芯片从片外flash中的初始地址进行启动并跳转至第一定时镜像地址,以在等待所述第一定时镜像定义的第一时间后跳转至所述升级镜像区域并对所述升级镜像区域中写入的所述待升级fpga镜像进行读取和校验。
20.可选的,对所述升级镜像区域中写入的所述待升级fpga镜像进行读取和校验之后,还包括:
21.如果校验未通过,则跳转至第二定时镜像地址,以在等待所述第二定时镜像定义的第二时间后跳转至固有镜像区域并对所述固有镜像区域中的镜像进行读取和校验;
22.如果校验未通过,则跳转至所述第一定时镜像地址,以在等待所述第一时间后跳转至所述初始地址。
23.可选的,所述判断读取到的标识信息是否为预设标识列表中的标识信息之后,还包括:
24.如果否,则将所述fpga芯片切换至空闲状态,并等待新的升级指令。
25.本技术的第二方面提供了一种flash升级装置,包括:
26.标识读取模块,用于获取升级指令,并根据所述升级指令读取片外flash的标识信息;
27.标识匹配模块,用于判断读取到的标识信息是否为预设标识列表中的标识信息,如果是,则通过处理器上的pcie主设备将待升级fpga镜像传输至fpga芯片;
28.第一写入模块,用于当所述fpga芯片的pcie从设备接收到所述待升级fpga镜像,则通过所述fpga芯片的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。
29.本技术的第三方面提供了一种电子设备,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述flash升级方法。
30.本技术的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述flash升级方法。
31.本技术中,先获取升级指令,并根据所述升级指令读取片外flash的标识信息;然后判断读取到的标识信息是否为预设标识列表中的标识信息,如果是,则通过处理器上的pcie主设备将待升级fpga镜像传输至fpga芯片;当所述fpga芯片的pcie从设备接收到所述待升级fpga镜像,则通过所述fpga芯片的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。可见,本技术通过在读取到片外flash的标识信息后,判断该标识信息是否为预设标识列表中的标识信息,也即在预设标识列表中是否存有与该标识信息相匹配的标识信息,如果匹配,就通过fpga芯片的spi控制器将待升级fpga镜像写入对应的片外flash。后续应用中只需向预设列表中增加新的flash标识信息即可,无需调整上层驱动,仅
在fpga逻辑上兼容多型号flash升级,降低软件处理复杂度,提高开发效率。
附图说明
32.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
33.图1为本技术提供的一种flash升级方法流程图;
34.图2为本技术提供的一种具体的flash升级架构示意图;
35.图3为本技术提供的一种具体的flash升级方法流程图;
36.图4为本技术提供的一种具体的镜像读取校验流程图;
37.图5为本技术提供的一种具体的flash结构图;
38.图6为本技术提供的一种flash升级装置结构示意图;
39.图7为本技术提供的一种flash升级电子设备结构图。
具体实施方式
40.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.随着fpga设备的大量部署,fpga镜像的在线更新功能需求增加,目前在线升级功能对单型号flash支持,供应链波动,各个厂家对fpga外部程序存储器能支持多厂家flash的需求越来越强烈。针对上述技术缺陷,本技术提供一种flash升级方案,只需根据需求向预设列表中增加新的flash标识信息即可,无需调整上层驱动,仅在fpga逻辑上兼容多型号flash升级,降低软件处理复杂度,提高开发效率。
42.图1为本技术实施例提供的一种flash升级方法流程图。参见图1所示,该flash升级方法包括:
43.s11:获取升级指令,并根据所述升级指令读取片外flash的标识信息。
44.本实施例中,其实施架构如图2所示,包括处理器cpu和fpga芯片,cpu是管理芯片,主要包括pcie主设备、通用io、串口控制器和spi控制器。其中,pcie主设备主要实现从pcie寄存器访问,串口控制器主要实现上位机对cpu访问。fpga芯片是接口模块,主要包括pcie从设备、寄存器、spi控制器。其中,pcie从设备主要实现pcie主设备互连和寄存器接口,寄存器主要实现寄存器读写访问,spi控制器主要实现片外flash寄存器访问以及fpga的在线升级功能,可以根据需要升级逻辑镜像。另外,pcie源端可以选择intel的bded-1527芯片,该芯片是核心管理芯片;pcie从设备、寄存器、和spi控制器均在xlinx的xc7a35tfgg484芯片上实现。
45.为此,本实施例首先获取升级指令,并根据所述升级指令读取片外flash的标识信息。所述标识信息为flash的flash device id。基于此架构可仅在fpga逻辑上兼容多厂家flash,为上层软件提供统一接口,方便软件统一处理,降低软件处理复杂度,从而降低开发
难度和风险,降低运营成本,达到提高经济效益的目的。需要说明的是,目前支持mt25ql512、mx25q512和winbond25q512三种型号的flash,后续只需增加预设标识列表里新flash型号和相应命令支持即可以完成新flash支持,具有很好的扩展性。
46.s12:判断读取到的标识信息是否为预设标识列表中的标识信息,如果是,则通过处理器上的pcie主设备将待升级fpga镜像传输至fpga芯片。
47.本实施例中,判断读取到的标识信息是否为预设标识列表中的标识信息,如果是,则通过处理器上的pcie主设备将待升级fpga镜像传输至fpga芯片。如果否,则将所述fpga芯片切换至空闲状态,并等待新的升级指令。具体的,pc机通过串口终端工具访问上层软件,上层软件通过调用pcie驱动访问fpga寄存器,进而可以访问spi控制器。默认所述fpga芯片处于空闲状态,软件下发升级命令后,所述fpga芯片首先读取flash的flash device id,然后与flash id列表(所述预设标识列表)进行匹配,如果不匹配则进入空闲状态。如果匹配,则对片外flash进行初始化并对所述升级镜像区域进行擦除。擦除成功后上报擦除成功信息,也即擦除完成后上报上层软件以生成镜像下发指令并根据所述镜像下发指令通过所述处理器上的pcie主设备将所述待升级fpga镜像传输至所述fpga芯片。上述具体过程如图3所示。
48.需要说明的是,通过图2可以看出本实施例中的flash升级除了支持cpu通过fpga升级flash这种方式外,还支持cpu直接升级flash。也即在判断读取到的标识信息为预设标识列表中的标识信息后,利用多路选择器将片外flash切换至处理器侧,以通过所述处理器的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。具体的,关于cpu直接升级flash:cpu通过通用io将flash切换到cpu侧spi控制器,由cpu将fpga镜像写入flash。通用io主要控制外设进行两组spi通道信号切换,默认使能fpga和flash通道,spi控制器主要实现flash读写访问。该方式可以用在工厂批量烧录fpga镜像。关于cpu通过fpga升级flash:首先cpu通过通用io将flash切换到fpga侧,cpu通过一组pcie接口与fpga连接,根据spi控制器升级需要要求,将fpga镜像发送到spi控制器,由spi控制器将镜像写入到flash升级镜像区域。
49.s13:当所述fpga芯片的pcie从设备接收到所述待升级fpga镜像,则通过所述fpga芯片的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。
50.本实施例中,当所述fpga芯片的pcie从设备接收到所述待升级fpga镜像,则通过所述fpga芯片的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。在此之后,还需判断所述待升级fpga镜像是否写入完全,如果否,则等待预设时间之后将所述fpga芯片切换至空闲状态。也即镜像未写入完成则等待,例如等待30s未进行写入则超时跳转到空闲状态。
51.如果镜像写入完成,则利用所述fpga芯片从片外flash中读取写入的所述待升级fpga镜像,并对读取的所述待升级fpga镜像进行校验,如果校验通过则判定升级成功,并将所述fpga芯片切换至空闲状态,如果校验未通过则将所述fpga芯片切换至空闲状态。该过程亦如图3所示。另外,上述校验可以为循环冗余校验crc(cyclic redundancy check)。也即所述fpga芯片将写入镜像读取出来进行crc校验,crc校验错误则上报上层软件,crc校验正确则通知上层软件升级成功。此时所述fpga芯片重新回到空闲状态,等待cpu下次升级操作。
52.可见,本技术实施例先获取升级指令,并根据所述升级指令读取片外flash的标识信息;然后判断读取到的标识信息是否为预设标识列表中的标识信息,如果是,则通过处理器上的pcie主设备将待升级fpga镜像传输至fpga芯片;当所述fpga芯片的pcie从设备接收到所述待升级fpga镜像,则通过所述fpga芯片的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。本技术实施例通过在读取到片外flash的标识信息后,判断该标识信息是否为预设标识列表中的标识信息,也即在预设标识列表中是否存有与该标识信息相匹配的标识信息,如果匹配,就通过fpga芯片的spi控制器将待升级fpga镜像写入对应的片外flash。后续应用中只需向预设列表中增加新的flash标识信息即可,无需调整上层驱动,仅在fpga逻辑上兼容多型号flash升级,降低软件处理复杂度,提高开发效率。
53.在上述实施例的基础上,图4为对应的镜像读取校验流程。参见图4所示,该镜像读取校验流程包括:
54.s21:利用所述fpga芯片从片外flash中的初始地址进行启动并跳转至第一定时镜像地址,以在等待所述第一定时镜像定义的第一时间后跳转至所述升级镜像区域并对所述升级镜像区域中写入的所述待升级fpga镜像进行读取和校验。
55.本实施例中,将片外flash结构划分为固有镜像区域、第一定时镜像区域、升级镜像区域、第二定时镜像区域以及未使用区域,如图5所示。其中,flash前4mbit放固有镜像,该镜像主要完成镜像跳转功能;4kbit的第一定时镜像主要完成定时功能;4mbit~8mbit放待升级fpga镜像,该镜像主要完成用户逻辑功能;60bit的第二定时镜像主要完成定时功能。固有镜像和待升级镜像均是编译工具直接生成的bit文件或者bin文件。定时镜像文件则是根据xc7a35tfgg-2要求定义。具体16进制格式如下表所示:
[0056][0057][0058]
其中,定时镜像主要定义看门狗,在待升级fpga镜像校验错误后返回flash起始地址等待下次镜像加载。不加定时镜像,在待升级fpga镜像校验错误后,无法返回固有镜像区域。定时器最小定时周期约为4us,用户只需要根据实际flash性能和程序加载时间需要,选择合适定时计数值即可。
[0059]
本实施例中,正常fpga上电完成后,首先利用所述fpga芯片从片外flash中的初始地址进行启动并跳转至第一定时镜像地址,以在等待所述第一定时镜像定义的第一时间后跳转至所述升级镜像区域并对所述升级镜像区域中写入的所述待升级fpga镜像进行读取
和校验。也即首先从flash的0x0000_0000地址启动,跳转到所述第一定时镜像。等待固定时间跳转到升级镜像区域,读取写入的所述待升级fpga镜像并校验。
[0060]
s22:如果校验未通过,则跳转至第二定时镜像地址,以在等待所述第二定时镜像定义的第二时间后跳转至固有镜像区域并对所述固有镜像区域中的镜像进行读取和校验;
[0061]
s23:如果校验未通过,则跳转至所述第一定时镜像地址,以在等待所述第一时间后跳转至所述初始地址。
[0062]
本实施例中,如果校验未通过,则跳转至第二定时镜像地址,以在等待所述第二定时镜像定义的第二时间后跳转至固有镜像区域并对所述固有镜像区域中的镜像进行读取和校验。也即升级镜像区域校验失败,则等待固定时间跳转到固有镜像区域。如果升级镜像区域校验成功,fpga工作在升级镜像区域。进一步的,如果固有镜像区域校验未通过,则跳转至所述第一定时镜像地址,以在等待所述第一时间后跳转至所述初始地址。也即固有镜像区域校验失败,跳转到第一定时镜像,等待固定时间跳转到0x0000_0000地址。
[0063]
参见图6所示,本技术实施例还相应公开了一种flash升级装置,包括:
[0064]
标识读取模块11,用于获取升级指令,并根据所述升级指令读取片外flash的标识信息;
[0065]
标识匹配模块12,用于判断读取到的标识信息是否为预设标识列表中的标识信息,如果是,则通过处理器上的pcie主设备将待升级fpga镜像传输至fpga芯片;
[0066]
第一写入模块13,用于当所述fpga芯片的pcie从设备接收到所述待升级fpga镜像,则通过所述fpga芯片的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。
[0067]
可见,本技术实施例先获取升级指令,并根据所述升级指令读取片外flash的标识信息;然后判断读取到的标识信息是否为预设标识列表中的标识信息,如果是,则通过处理器上的pcie主设备将待升级fpga镜像传输至fpga芯片;当所述fpga芯片的pcie从设备接收到所述待升级fpga镜像,则通过所述fpga芯片的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域。本技术实施例通过在读取到片外flash的标识信息后,判断该标识信息是否为预设标识列表中的标识信息,也即在预设标识列表中是否存有与该标识信息相匹配的标识信息,如果匹配,就通过fpga芯片的spi控制器将待升级fpga镜像写入对应的片外flash。后续应用中只需向预设列表中增加新的flash标识信息即可,无需调整上层驱动,仅在fpga逻辑上兼容多型号flash升级,降低软件处理复杂度,提高开发效率。
[0068]
在一些具体实施例中,在读取到的标识信息为预设标识列表中的标识信息时,所述flash升级装置还包括:
[0069]
第二写入模块,用于利用多路选择器将片外flash切换至处理器侧,以通过所述处理器的spi控制器将所述待升级fpga镜像写入对应片外flash的升级镜像区域;
[0070]
擦除模块,用于对片外flash进行初始化并对所述升级镜像区域进行擦除;
[0071]
上报模块,用于擦除成功后上报擦除成功信息,以生成镜像下发指令并根据所述镜像下发指令通过所述处理器上的pcie主设备将所述待升级fpga镜像传输至所述fpga芯片。
[0072]
在一些具体实施例中,所述flash升级装置还包括:
[0073]
写入判断模块,用于判断所述待升级fpga镜像是否写入完全,如果否,则等待预设
时间之后将所述fpga芯片切换至空闲状态;
[0074]
读取校验模块,用于如果是,则利用所述fpga芯片从片外flash中读取写入的所述待升级fpga镜像,并对读取的所述待升级fpga镜像进行校验,如果校验通过则判定升级成功,并将所述fpga芯片切换至空闲状态,如果校验未通过则将所述fpga芯片切换至空闲状态;
[0075]
切换模块,用于在读取到的标识信息不为预设标识列表中的标识信息时,将所述fpga芯片切换至空闲状态,并等待新的升级指令。
[0076]
在一些具体实施例中,所述读取校验模块,具体包括:
[0077]
第一跳转单元,用于利用所述fpga芯片从片外flash中的初始地址进行启动并跳转至第一定时镜像地址;
[0078]
第二跳转单元,用于在等待所述第一定时镜像定义的第一时间后跳转至所述升级镜像区域并对所述升级镜像区域中写入的所述待升级fpga镜像进行读取和校验。
[0079]
第三跳转单元,用于如果校验未通过,则跳转至第二定时镜像地址,以在等待所述第二定时镜像定义的第二时间后跳转至固有镜像区域并对所述固有镜像区域中的镜像进行读取和校验;
[0080]
第四跳转单元,用于如果校验未通过,则跳转至所述第一定时镜像地址,以在等待所述第一时间后跳转至所述初始地址。
[0081]
进一步的,本技术实施例还提供了一种电子设备。图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
[0082]
图7为本技术实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的flash升级方法中的相关步骤。
[0083]
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
[0084]
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
[0085]
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是windows server、netware、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的flash升级方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223可以包括电子设备20收集到的指令信息。
[0086]
进一步的,本技术实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的flash升级方法步骤。
[0087]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0088]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
…”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0089]
以上对本发明所提供的flash升级方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。