本发明涉及通信技术领域,尤其涉及一种固件升级方法、装置及系统。
背景技术:
通常情况下,需要对电路板卡中现场可编程门阵列(Field Programmable Gate Array,FPGA)外部的配置芯片进行固件升级时,都是通过国际标准测试协议(Joint Test Action Group,JTAG)接口完成对FPGA外部的配置芯片中固件程序的烧写,从而完成升级过程。例如,在调试初期,由个人计算机(Personal Computor,PC)配合专用的下载软件和JTAG线缆对FPGA外部的配置芯片进行固件升级;或者,在单板运行过程中,通过板控处理器模拟JTAG时序对FPGA外部的配置芯片进行固件升级。
然而,上述固件升级过程,由于均需要利用JTAG接口来控制FPGA外部的配置芯片的烧写时序,因此升级速率受限于JTAG接口的速率。这是由于,现有技术中,JTAG时钟速率一般不超过2MHz,下载小型FPGA固件时,耗时约在10分钟以内,而针对大容量FPGA,其固件的大小经常达到几十兆字节,以逻辑单元个数约为2000K的某类型FPGA为例,烧写配置芯片的固件程序所耗费的时间超过30分钟,效率很低。
综上所述,采用现有技术对FPGA外部的配置芯片进行固件升级时,速率较低,耗时较长。
技术实现要素:
本发明实施例提供了一种固件升级方法、装置及系统,用以提升固件升级的速率,节省时间。
本发明实施例提供的一种固件升级方法,包括:
接收待升级的固件的最新固件版本;
利用预先加载的带有烧写功能的固件版本,以及所述最新固件版本,对所述固件进行升级。
从而,通过预先加载带有烧写功能的固件版本,进而接收待升级的固件的最新固件版本,即可根据预先加载的带有烧写功能的固件版本,以及所述最新固件版本,完成对所述固件的升级,无需利用JTAG接口,提升了固件升级的速率,进而节省了固件升级的时间。
较佳地,所述接收待升级的固件的最新固件版本,具体包括:
FPGA接收处理器发送的所述待升级的固件的最新固件版本。
较佳地,所述FPGA接收处理器发送的所述待升级的固件的最新固件版本,具体包括:
所述FPGA通过该FPGA与处理器之间的本地总线LocalBus接口,接收所述处理器发送的所述待升级的固件的最新固件版本。
由于LocalBus接口速率较高,并且其数据位可扩展,因而可实现更高的传输速率,进一步缩短固件升级的时间。
较佳地,所述利用预先加载的带有烧写功能的固件版本,以及所述最新固件版本,对所述固件进行升级,具体包括:
所述FPGA利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存在该FPGA外部的配置芯片中的所述固件所在的版本区域;
所述FPGA从所述版本区域中加载所述最新固件版本,完成对所述固件的升级过程。
较佳地,所述配置芯片包括第一配置芯片和第二配置芯片;
所述带有烧写功能的固件版本是预先烧写在所述第一配置芯片和/或所述第二配置芯片中的;
所述FPGA利用预先加载的带有烧写功能的固件版本,将所述最新固件版 本烧入保存在所述第一配置芯片中的所述固件所在的版本区域;
所述FPGA预先从所述第一配置芯片或者所述第二配置芯片加载所述带有烧写功能的固件版本。
从而,当需要对所述固件进行多次升级时,无需通过JTAG接口,FPGA只需直接加载所述带有烧写功能的固件版本,并根据所述带有烧写功能的固件版本,即可将待升级的固件的最新固件版本烧入待升级的固件所在的版本区域,从而完成对所述固件的升级,大大节省了固件升级的时间。
较佳地,所述第一配置芯片对应字节外设接口(Byte Peripheral Interface,BPI)加载模式,所述第二配置芯片对应串行外设接口(Serial Peripheral Interface,SPI)加载模式。
较佳地,所述FPGA当预先从所述第一配置芯片中加载所述带有烧写功能的固件版本时,所述FPGA预先从所述第一配置芯片加载所述带有烧写功能的固件版本,具体包括:
所述FPGA根据处理器发送的加载模式设置信号,确定采用BPI加载模式从所述第一配置芯片中加载所述带有烧写功能的固件版本;
所述FPGA根据所述处理器发送的版本区域选择信号,确定所述带有烧写功能的固件版本在所述第一配置芯片中的偏移地址;
所述FPGA接收到所述处理器发送的程序加载控制信号后,根据所述第一配置芯片的所述偏移地址,加载所述带有烧写功能的固件版本。
较佳地,所述FPGA当预先从所述第二配置芯片中加载所述带有烧写功能的固件版本时,所述FPGA预先从所述第二配置芯片中加载所述带有烧写功能的固件版本,具体包括:
所述FPGA根据处理器发送的加载模式设置信号,确定采用SPI加载模式从所述第二配置芯片中加载所述带有烧写功能的固件版本;
所述FPGA接收到所述处理器发送的程序加载控制信号后,从所述第二配置芯片中加载所述带有烧写功能的固件版本。
本发明实施例提供的一种固件升级装置,包括:
接收单元,用于接收待升级的固件的最新固件版本;
执行单元,用于利用预先加载的带有烧写功能的固件版本,以及所述最新固件版本,对所述固件进行升级。
较佳地,所述接收单元具体用于:
接收处理器发送的所述待升级的固件的最新固件版本。
较佳地,所述接收单元接收处理器发送的所述待升级的固件的最新固件版本时,具体用于:
通过该接收单元与处理器之间的本地总线LocalBus接口,接收所述处理器发送的所述待升级的固件的最新固件版本。
较佳地,所述执行单元具体用于:
利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存在该装置外部的配置芯片中的所述固件所在的版本区域;
从所述版本区域中加载所述最新固件版本,完成对所述固件的升级过程。
较佳地,所述配置芯片包括第一配置芯片和第二配置芯片;
所述带有烧写功能的固件版本是预先烧写在所述第一配置芯片和/或所述第二配置芯片中的;
所述执行单元利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存在所述第一配置芯片中的所述固件所在的版本区域;
所述执行单元预先从所述第一配置芯片或者所述第二配置芯片加载所述带有烧写功能的固件版本。
较佳地,所述第一配置芯片对应BPI加载模式,所述第二配置芯片对应SPI加载模式。
较佳地,所述执行单元当预先从所述第一配置芯片中加载所述带有烧写功能的固件版本时,具体用于:
根据处理器发送的加载模式设置信号,确定采用字节外设接口BPI加载模 式从所述第一配置芯片中加载所述带有烧写功能的固件版本;
根据所述处理器发送的版本区域选择信号,确定所述带有烧写功能的固件版本在所述第一配置芯片中的偏移地址;
接收到所述处理器发送的程序加载控制信号后,根据所述第一配置芯片的所述偏移地址,加载所述带有烧写功能的固件版本。
较佳地,所述执行单元当预先从所述第二配置芯片中加载所述带有烧写功能的固件版本时,具体用于:
根据处理器发送的加载模式设置信号,确定采用串行外设接口SPI加载模式从所述第二配置芯片中加载所述带有烧写功能的固件版本;
接收到所述处理器发送的程序加载控制信号后,从所述第二配置芯片中加载所述带有烧写功能的固件版本。
本发明实施例提供的一种固件升级系统,包括:
配置芯片,用于保存固件;
FPGA,用于接收待升级的固件的最新固件版本;以及利用预先加载的带有烧写功能的固件版本和所述最新固件版本,对所述待升级的固件进行升级。
较佳地,该系统还包括:
处理器,用于发送所述待升级的固件的最新固件版本给所述FPGA。
较佳地,所述FPGA通过该FPGA与处理器之间的本地总线LocalBus接口,接收所述处理器发送的所述待升级的固件的最新固件版本。
较佳地,所述配置芯片包括第一配置芯片和第二配置芯片;所述带有烧写功能的固件版本是预先烧写在所述第一配置芯片和/或所述第二配置芯片中的;
所述FPGA利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存在所述第一配置芯片中的所述固件所在的版本区域;
所述FPGA预先从所述第一配置芯片或者所述第二配置芯片中加载所述带有烧写功能的固件版本。。
较佳地,所述第一配置芯片对应BPI加载模式,所述第二配置芯片对应 SPI加载模式。
所述处理器的通用输入和/或输出GPIO接口与所述FPGA的专用模式配置管脚相连接;所述处理器的GPIO接口还与所述FPGA的程序加载控制信号对应的管脚相连接;所述处理器的GPIO接口还与所述第一配置芯片的最高位地址线相连接;
所述FPGA当预先从所述第一配置芯片中加载所述带有烧写功能的固件版本时:
所述FPGA通过专用模式配置管脚接收所述处理器通过GPIO接口发送的加载模式设置信号,所述FPGA根据处理器发送的加载模式设置信号,确定采用字节外设接口BPI加载模式从所述第一配置芯片中加载所述带有烧写功能的固件版本;
所述FPGA接收所述第一配置芯片发送的版本区域选择信号,其中,该版本区域选择信号是所述第一配置芯片通过最高位地址线接收到的由所述处理器通过所述GPIO接口发送的;所述FPGA根据所述处理器发送的版本区域选择信号,确定所述带有烧写功能的固件版本在所述第一配置芯片中的偏移地址;
所述FPGA通过程序加载控制信号对应的管脚接收所述处理器通过GPIO接口发送的程序加载控制信号,所述FPGA接收到所述处理器发送的程序加载控制信号后,根据所述第一配置芯片的所述偏移地址,加载所述带有烧写功能的固件版本。
较佳地,所述处理器的通用输入和/或输出GPIO接口与所述FPGA的专用模式配置管脚相连接;所述处理器的GPIO接口还与所述FPGA的程序加载控制信号对应的管脚相连接;
所述FPGA当预先从所述第二配置芯片中加载所述带有烧写功能的固件版本时:
所述FPGA通过专用模式配置管脚接收所述处理器通过GPIO接口发送的 加载模式设置信号,所述FPGA根据处理器发送的加载模式设置信号,确定采用串行外设接口SPI加载模式从所述第二配置芯片中加载所述带有烧写功能的固件版本;
所述FPGA通过程序加载控制信号对应的管脚接收所述处理器通过GPIO接口发送的程序加载控制信号,所述FPGA接收到所述处理器发送的程序加载控制信号后,从所述第二配置芯片中加载所述带有烧写功能的固件版本。
附图说明
图1为本发明实施例提供的一种固件升级的系统架构图;
图2为本发明实施例提供的一种固件升级的流程示意图;
图3为本发明实施例提供的一种处理器触发FPGA采用BPI加载模式加载固件版本的时序图;
图4为本发明实施例提供的一种处理器触发FPGA采用SPI加载模式加载固件版本的时序图;
图5为本发明实施例提供的一种固件升级方法的流程示意图;
图6为本发明实施例提供的一种固件升级装置的结构示意图。
具体实施方式
本发明实施例提供了一种固件升级方法、装置及系统,用以提升固件升级的速率、节省时间。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为本发明实施例提供的一种固件升级的系统架构图。
该系统包括FPGA,第一配置芯片、第二配置芯片和处理器。第一配置芯片对应BPI加载模式,第二配置芯片对应SPI加载模式。其中,第一配置芯片 的地址空间分为两部分:版本1区域和版本2区域,用以存放不同的固件版本,并且版本1区域对应低位地址区域,版本2区域对应高位地址区域。处理器与FPGA之间通过本地总线LocalBus接口相连接,处理器与FPGA之间存在状态及控制信号,处理器与第一配置芯片之间也存在状态及控制信号。具体地,处理器与FPGA之间的状态及控制信号包括:程序加载控制信号(PROGRAM#)、加载模式设置信号(MODE)、加载完成标识信号(DONE);处理器与第一配置芯片之间的状态及控制信号包括:版本区域选择信号(RS)。并且,处理器的GPIO接口分别与FPGA的PROGRAM#信号对应的管脚、专用模式配置管脚、MODE信号对应的管脚、DONE信号对应的管脚相连接,GPIO接口还与第一配置芯片的最高位地址线相连接。
较佳地,本发明实施例中采用的LocalBus接口为8位并行LocalBus接口,其接口速率约为33MHz,当然也可以将数据位宽扩展为16位或32位等,以实现更高的传输速率。
上述状态及控制信号均由处理器侧的GPIO控制,各信号的定义参见表1所示。其中,表中提及的方向均与处理器侧为基准,例如,PROGRAM#信号的方向为输出,表示PROGRAM#从处理器的GPIO接口输出;DONE信号的方向为输入,表示DONE信号由FPGA输入处理器的GPIO接口。
表1
在本实施例中,由于第一配置芯片对应BPI加载模式,并且设置第一配置芯片的版本1区域为默认版本区域,对FPGA外部的配置芯片的固件版本进行升级时,默认将最新的固件版本存放于第一配置芯片的版本1区域。当然,具体实施中,也可以将第一配置芯片的版本2区域设置为默认版本区域,进而将最新的固件版本默认存放于版本2区域。
下面以图1中所示的FPGA及配置芯片为例,介绍FPGA外部的配置芯片中的固件升级过程,完整的固件升级流程如图2所示。
在对固件进行升级前,先按照本发明实施例提供的方法进行升级前的硬件、固件、软件等方面的准备,然后通过本发明实施例提供的方法执行升级过程。
(一)升级前的硬件准备
对固件升级前,单板FPGA芯片相关的硬件电路按照图1所示进行连接。
(二)升级前的固件准备
对固件进行第一次升级时,在升级前,需要在FPGA外部的配置芯片中烧入含有烧写功能的固件版本。在此之后,对本固件需要第二次或多次升级时,就无需重新在配置芯片中烧写所述含有烧写功能的固件版本。本实施例中,FPGA外部有两种类型的配置芯片,因此可以在第一配置芯片和第二配置芯片中随机选择一个配置芯片,将所述含有烧写功能的固件版本烧入保存在该配置芯片中,或者,在第一配置芯片和第二配置芯片中同时烧写所述含有烧写功能的固件版本。
所述含有烧写功能的固件版本,也就是可以利用该含有烧写功能的固件版 本对配置芯片的固件程序进行烧写。
具体可用过如下方式之一在配置芯片中烧写所述含有烧写功能的固件版本:
方式一:通过编程器为FPGA外部的第二配置芯片(或者第一配置芯片的版本2区域)烧入含有烧写功能的固件版本,并完成配置芯片在单板中的安装或焊接;
方式二:通过JTAG下载电缆为已安装在单板上的FPGA外部的第二配置芯片(或者第一配置芯片的版本2区域)烧入含有烧写功能的固件版本。
当然,除上述两种方式外,也可以采用其他的方式,只要能够将含有烧写功能的固件版本烧写在FPGA外部的第二配置芯片(或者第一配置芯片的版本2区域)即可,本发明对此实现方式不作限定。
(三)升级前的软件准备
处理器的相关模块中具备相关程序,用以将待升级的固件的最新固件版本按字节从LocalBus接口发送给FPGA,以及设置上述状态及控制信号。
(四)执行升级过程
步骤一:FPGA从配置芯片中加载预先烧写的含有烧写功能的固件版本。
具体地,FPGA从配置芯片中加载预先烧写的含有烧写功能的固件版本时,可采用如下方式之一:
方式一:BPI加载模式
图3为处理器触发FPGA采用BPI加载模式加载含有烧写功能的固件版本的时序图。处理器操作GPIO,将MODE信号的状态值设置为010,表示令FPGA采用BPI加载模式从第一配置芯片加载含有烧写功能的固件版本。其次,处理器通过GPIO设置RS信号为高电平,表示令FPGA加载时依据的偏移地址为第一配置芯片中版本2区域所在的地址。最后,处理器通过GPIO向PROGRAM#信号发送低脉冲,此时FPGA的DONE信号变为低电平,表示FPGA已启动加载的过程。当DONE信号由低电平变为高电平后,表示加载过 程完成。
具体地,可通过处理器检测DONE信号的电平高低,以确定FPGA是否完成上述加载过程。
方式二:SPI加载模式
图4为处理器触发FPGA采用SPI加载模式加载含有烧写功能的固件版本的时序图。处理器操作GPIO,将MODE信号的状态值设置为001,表示令FPGA采用BPI加载模式从第二配置芯片加载含有烧写功能的固件版本。此时,RS信号对SPI加载模式不产生影响,此处保持低电平。之后,处理器通过GPIO向PROGRAM#信号发送低脉冲,此时FPGA的DONE信号变为低电平,表示FPGA已启动加载的过程。当DONE信号由低电平变为高电平后,表示加载过程完成。
具体地,可通过处理器检测DONE信号的电平高低,以确定FPGA是否完成上述加载过程。
通过以上任意一种方式,FPGA均可完成从配置芯片中加载含有烧写功能的固件版本的过程,从而FPGA就可以具备烧写功能,以便执行后续的将待升级的固件的最新固件版本烧入所述待升级的固件所在的版本区域。
步骤二:FPGA接收处理器发送的待升级的固件的最新固件版本,并对第一配置芯片中的固件进行更新升级。
处理器通过本地总线LocalBus接口将待升级的固件的最新固件版本发送给FPGA。
FPGA接收到该最新固件版本之后,根据预先加载的带有烧写功能的固件版本,按照相应的时序,将最新固件版本烧入保存在第一配置芯片的版本1区域。
具体地,FPGA可根据处理器的GPIO发送的状态及控制信号,确定待升级的固件所在的配置芯片或者配置芯片中的版本区域,以及执行最新固件程序的烧写过程。
步骤三:FPGA从第一配置芯片中加载更新后的所述最新固件版本。
当上述第一配置芯片中的固件版本升级完成后,处理器通过GPIO设置相应地状态及控制信号,以使得FPGA从第一配置芯片中加载更新后的最新的固件版本,从而整个固件升级过程结束。
FPGA从第一配置芯片中加载最新的固件版本的过程与上述FPGA从配置芯片中加载带有烧写功能的固件版本的原理类似。首先,处理器通过GPIO设置MODE信号,将FPGA加载模式设为BPI主动加载模式;其次,处理器通过GPIO将RS信号设置为低电平,指示FPGA从第一配置芯片的版本1区域进行版本程序的加载;之后,处理器通过GPIO向PROGRAM#信号发送低脉冲,FPGA执行加载过程;最后,处理器检测DONE信号,当DONE信号由低电平变为高电平后,确认最新固件版本加载完成。
可以理解的是,上述升级前的硬件准备、升级前的固件准备、升级前的软件准备这三个步骤,并无严格的先后顺序,只要在执行升级过程这一步骤前完成相应地硬件、固件及软件方面的准备即可。
基于上述论述,在FPGA侧,参见图5,本发明实施例提供的一种固件升级方法,包括:
S101、接收待升级的固件的最新固件版本;
S102、利用预先加载的带有烧写功能的固件版本,以及所述最新固件版本,对所述固件进行升级。
较佳地,所述接收待升级的固件的最新固件版本,具体包括:
FPGA接收处理器发送的所述待升级的固件的最新固件版本。
较佳地,所述FPGA接收处理器发送的所述待升级的固件的最新固件版本,具体包括:
所述FPGA通过该FPGA与处理器之间的本地总线LocalBus接口,接收所述处理器发送的所述待升级的固件的最新固件版本。
较佳地,本发明实施例中FPGA通过该FPGA与处理器之间的本地总线 LocalBus接口,接收所述处理器发送的所述待升级的固件的最新固件版本,当然,也可以通过其他速率较高的通信接口实现上述过程,本发明对此不作限定。
较佳地,所述处理器,例如可以为ARM处理器、COM-E模块等。
较佳地,所述利用预先加载的带有烧写功能的固件版本,以及所述最新固件版本,对所述固件进行升级,具体包括:
所述FPGA利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存在该FPGA外部的配置芯片中的所述固件所在的版本区域;
所述FPGA从所述版本区域中加载所述最新固件版本,完成对所述固件的升级过程。
也就是说,FPGA通过预先加载带有烧写功能的固件版本,就可以具备烧写功能,从而无需通过JTAG接口即可实现将待升级的固件的最新固件版本烧写保存到配置芯片中,以完成对配置芯片中固件程序的升级。
具体地,FPGA加载带有烧写功能的固件版本后,可以理解为FPGA中具备一烧写控制器,通过该烧写控制器,并根据相应的时序,即可将待升级的固件的最新固件版本烧入配置芯片中。
其中,所述带有烧写功能的固件版本,具体为带有烧写功能的任意的固件版本,不限制在此版本上扩展其他辅助功能。
较佳地,所述配置芯片包括第一配置芯片和第二配置芯片,其中,第一配置芯片对应BPI加载模式,第二配置芯片对应SPI加载模式。
较佳地,所述带有烧写功能的固件版本是预先烧写在所述第一配置芯片和/或所述第二配置芯片中的。
所述FPGA利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存在所述第一配置芯片中的所述待升级的固件所在的版本区域;
所述FPGA预先从所述第一配置芯片或者所述第二配置芯片加载所述带有烧写功能的固件版本。
也就是说,所述带有烧写功能的固件版本可以预先烧写在所述第一配置芯 片中;或者,所述带有烧写功能的固件版本可以预先烧写在所述第二配置芯片中;或者,所述带有烧写功能的固件版本可以预先同时烧写在所述第一配置芯片和所述第二配置芯片中。当所述带有烧写功能的固件版本预先烧写在所述第一配置芯片中时,所述FPGA从第一配置芯片中加载所述带有烧写功能的固件版本;当所述带有烧写功能的固件版本预先烧写在所述第二配置芯片中时,所述FPGA从第二配置芯片中加载所述带有烧写功能的固件版本;当所述带有烧写功能的固件版本预先同时烧写在所述第一配置芯片和所述第二配置芯片中时,所述FPGA从所述第一配置芯片和所述第二配置芯片中选择其一,并从中加载所述带有烧写功能的固件版本。
当然,除上述情况外,本发明实施例所述的配置芯片,也可以只包括第一配置芯片,所述第一配置芯片对应BPI加载模式。当所述配置芯片只包含第一配置芯片时,所述带有烧写功能的固件版本预先烧写在所述第一配置芯片中;从而,所述FPGA预先从所述第一配置芯片加载所述带有烧写功能的固件版本;所述FPGA利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存所述第一配置芯片中的所述待升级的固件所在的版本区域。
需要说明的是,所述的第一配置芯片和第二配置芯片中的第一和第二并不表示任何顺序、数量或者重要性,只是用来区分不同类型的配置芯片。例如,也可以将对应SPI加载模式的配置芯片称为第一配置芯片,将对应BPI加载模式的配置芯片称为第二配置芯片。
较佳地,所述FPGA当预先从所述第一配置芯片中加载所述带有烧写功能的固件版本时,所述FPGA预先从所述第一配置芯片加载所述带有烧写功能的固件版本,具体包括:
所述FPGA根据处理器发送的加载模式设置信号,确定采用BPI加载模式从所述第一配置芯片中加载所述带有烧写功能的固件版本;
较佳地,加载模式设置信号例如可以为MODE信号,该MODE信号由MODE[2]、MODE[1]、MODE[0]组成一组信号,比如,处理器可以设定该MODE 信号的状态值为010,表示BPI加载模式。并且,可通过将FPGA的MODE管脚与处理器的GPIO接口相连接以使FPGA接收处理器发送的MODE信号,并根据该MODE信号确定加载模式。
所述FPGA根据所述处理器发送的版本区域选择信号,确定所述带有烧写功能的固件版本在所述第一配置芯片中的偏移地址;
较佳地,所述第一配置芯片的地址空间应至少可以容纳两个固件版本,可以根据第一配置芯片的偏移地址将第一配置芯片分为两个版本区域,并将其中一个版本区域设置为默认版本区域,当需要更新固件时,将最新的固件版本存放于该默认版本区域。例如,将低位地址设置为默认版本区域,当然也可以将高位地址设置为默认版本区域,本发明对此不作限定。
较佳地,所述版本区域选择信号,例如可以为RS信号。本实施例中,将处理器的GPIO接口与第一配置芯片的最高位地址线相连接,根据RS的电平高低选择偏移地址。
所述FPGA接收到所述处理器发送的程序加载控制信号后,根据所述第一配置芯片的所述偏移地址,加载所述带有烧写功能的固件版本。
较佳地,所述程序加载控制信号,例如可以为PROGRAM#信号,其中“#”表示该信号为低电平时有效。当FPGA接收到所述处理器发送的PROGRAM#信号为低脉冲时,对FPGA中的信号进行采样,进而从指定位置加载所述带有烧写功能的固件版本。
较佳地,所述FPGA当预先从所述第二配置芯片中加载所述带有烧写功能的固件版本时,所述FPGA预先从所述第二配置芯片中加载所述带有烧写功能的固件版本,具体包括:
所述FPGA根据处理器发送的加载模式设置信号,确定采用SPI加载模式从所述第二配置芯片中加载所述带有烧写功能的固件版本;
这里,加载模式设置信号例如可以为MODE信号。
所述FPGA接收到所述处理器发送的程序加载控制信号后,从所述第二配 置芯片中加载所述带有烧写功能的固件版本。
这里,所述程序加载控制信号,例如可以为PROGRAM#信号,其中“#”表示该信号为低电平时有效。
较佳地,处理器根据加载完成标识信号(DONE),确定FPGA是否完成加载所述带有烧写功能的固件版本的过程;以及根据所述DONE信号,确定FPGA是否完成加载待升级的固件的最新的固件版本的过程。具体地,处理器检测FPGA中的DONE信号的电平的高低,当DONE信号由低电平变为高电平时,处理器确定FPGA已完成固件程序的加载过程。
相应地,在FPGA侧,参见图6,本发明实施例提供的一种固件升级装置,包括:
接收单元11,用于接收待升级的固件的最新固件版本;
执行单元12,用于利用预先加载的带有烧写功能的固件版本,以及所述最新固件版本,对所述固件进行升级。
较佳地,所述接收单元11具体用于:
接收处理器发送的所述待升级的固件的最新固件版本。
较佳地,所述接收单元11接收处理器发送的所述待升级的固件的最新固件版本时,具体用于:
通过该接收单元11与处理器之间的本地总线LocalBus接口,接收所述处理器发送的所述待升级的固件的最新固件版本。
较佳地,所述执行单元12具体用于:
利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存在该装置外部的配置芯片中的所述固件所在的版本区域;
从所述版本区域中加载所述最新固件版本,完成对所述固件的升级过程。
较佳地,所述配置芯片包括第一配置芯片和第二配置芯片;
所述带有烧写功能的固件版本是预先烧写在所述第一配置芯片和/或所述第二配置芯片中的;
所述执行单元利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存在所述第一配置芯片中的所述待升级的固件所在的版本区域;
所述执行单元预先从所述第一配置芯片或者所述第二配置芯片加载所述带有烧写功能的固件版本。
较佳地,所述第一配置芯片对应BPI加载模式,所述第二配置芯片对应SPI加载模式。
当然,除上述情况外,本发明实施例所述的配置芯片,也可以只包括第一配置芯片,所述第一配置芯片对应BPI加载模式。当所述配置芯片只包含第一配置芯片时,所述带有烧写功能的固件版本预先烧写在所述第一配置芯片中;从而,所述执行单元12预先从所述第一配置芯片加载所述带有烧写功能的固件版本;所述执行单元12利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存所述第一配置芯片中的所述待升级的固件所在的版本区域。
较佳地,所述执行单元12当预先从所述第一配置芯片中加载所述带有烧写功能的固件版本时,具体用于:
根据处理器发送的加载模式设置信号,确定采用BPI加载模式从所述第一配置芯片中加载所述带有烧写功能的固件版本;
较佳地,所述加载模式设置信号,例如可以为MODE信号。
根据所述处理器发送的版本区域选择信号,确定所述带有烧写功能的固件版本在所述第一配置芯片中的偏移地址;
较佳地,所述版本区域选择信号,例如可以为RS信号。
接收到所述处理器发送的程序加载控制信号后,根据所述第一配置芯片的所述偏移地址,加载所述带有烧写功能的固件版本。
较佳地,所述程序加载控制信号,例如可以为PROGRAM#信号,其中“#”表示该信号为低电平时有效。
较佳地,所述执行单元12当预先从所述第二配置芯片中加载所述带有烧 写功能的固件版本时,具体用于:
根据处理器发送的加载模式设置信号,确定采用SPI加载模式从所述第二配置芯片中加载所述带有烧写功能的固件版本;
接收到所述处理器发送的程序加载控制信号后,从所述第二配置芯片中加载所述带有烧写功能的固件版本。
本发明实施例提供的固件升级装置,例如可以为FPGA。
上述各功能单元,均由具有接收、处理等功能的控制处理器等实体装置实现。
本发明实施例提供了一种固件升级系统,包括:
配置芯片,用于保存固件;
FPGA,用于接收待升级的固件的最新固件版本;以及利用预先加载的带有烧写功能的固件版本和所述最新固件版本,对所述待升级的固件进行升级。
较佳地,该系统还包括:
处理器,用于发送所述待升级的固件的最新固件版本给所述FPGA。
较佳地,所述FPGA通过该FPGA与处理器之间的本地总线LocalBus接口,接收所述处理器发送的所述待升级的固件的最新固件版本。
较佳地,所述配置芯片包括第一配置芯片和第二配置芯片;所述带有烧写功能的固件版本是预先烧写在所述第一配置芯片和/或所述第二配置芯片中的;
所述FPGA利用预先加载的带有烧写功能的固件版本,将所述最新固件版本烧入保存在所述第一配置芯片中的所述固件所在的版本区域;
所述FPGA预先从所述第一配置芯片或者所述第二配置芯片中加载所述带有烧写功能的固件版本。。
较佳地,所述第一配置芯片对应BPI加载模式,所述第二配置芯片对应SPI加载模式。
较佳地,所述处理器的通用输入和/或输出GPIO接口与所述FPGA的专用模式配置管脚相连接;所述处理器的GPIO接口还与所述FPGA的程序加载控 制信号对应的管脚相连接;所述处理器的GPIO接口还与所述第一配置芯片的最高位地址线相连接;
所述FPGA当预先从所述第一配置芯片中加载所述带有烧写功能的固件版本时:
所述FPGA通过专用模式配置管脚接收所述处理器通过GPIO接口发送的加载模式设置信号,所述FPGA根据处理器发送的加载模式设置信号,确定采用字节外设接口BPI加载模式从所述第一配置芯片中加载所述带有烧写功能的固件版本;
所述FPGA接收所述第一配置芯片发送的版本区域选择信号,其中,该版本区域选择信号是所述第一配置芯片通过最高位地址线接收到的由所述处理器通过所述GPIO接口发送的;所述FPGA根据所述处理器发送的版本区域选择信号,确定所述带有烧写功能的固件版本在所述第一配置芯片中的偏移地址;
所述FPGA通过程序加载控制信号对应的管脚接收所述处理器通过GPIO接口发送的程序加载控制信号,所述FPGA接收到所述处理器发送的程序加载控制信号后,根据所述第一配置芯片的所述偏移地址,加载所述带有烧写功能的固件版本。
较佳地,所述加载模式设置信号,例如可以为MODE信号;所述程序加载控制信号,例如可以为PROGRAM#信号;所述版本区域选择信号,例如可以为RS信号。
较佳地,所述处理器的通用输入和/或输出GPIO接口与所述FPGA的专用模式配置管脚相连接;所述处理器的GPIO接口还与所述FPGA的程序加载控制信号对应的管脚相连接;
所述FPGA当预先从所述第二配置芯片中加载所述带有烧写功能的固件版本时:
所述FPGA通过专用模式配置管脚接收所述处理器通过GPIO接口发送的 加载模式设置信号,所述FPGA根据处理器发送的加载模式设置信号,确定采用串行外设接口SPI加载模式从所述第二配置芯片中加载所述带有烧写功能的固件版本;
所述FPGA通过程序加载控制信号对应的管脚接收所述处理器通过GPIO接口发送的程序加载控制信号,所述FPGA接收到所述处理器发送的程序加载控制信号后,从所述第二配置芯片中加载所述带有烧写功能的固件版本。
较佳地,所述加载模式设置信号,例如可以为MODE信号;所述程序加载控制信号,例如可以为PROGRAM#信号。
较佳地,处理器的GPIO接口与所述FPGA的加载完成标识信号相连接,处理器通过该GPIO接口检测加载完成标识信号,通过该加载完成标识信号的电平高低,确定FPGA加载过程是否完成。例如,所述加载完成标识信号可以为DONE信号,当DONE信号的电平为低电平时,表示FPGA正在执行加载过程;当当DONE信号的电平为高电平时,表示FPGA已完成加载过程。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设 备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。