一种代码升级方法及系统与流程

文档序号:12271000阅读:351来源:国知局
一种代码升级方法及系统与流程

本发明涉及软件升级技术领域,尤其涉及一种代码升级方法及系统。



背景技术:

随着移动通信系统的快速发展,移动通信基站作为室外大型实时通信设备,需要通过软件及固件的在线动态加载升级来满足日益增长的系统需求,并且移动运营商要求各基站产品在硬件设备不替换的情况下通过升级软件来实现产品所需功能。

在基站设备板卡中,基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)的逻辑配置芯片的外设部件互联标准总线(Peripheral Component Interconnect express,PCIe)初始化代码和工程固件代码存储在FPGA逻辑配置芯片之外的FLASH存储器(闪存)中。当需要对FPGA逻辑配置芯片的工程固件代码升级时,直接将FLASH存储器中存储的工程固件代码进行升级即可。但是,如果对FLASH存储器中的代码升级错误或升级失败,会导致FPGA逻辑配置芯片不能正常加载代码,从而不能正常工作,导致设备板卡处于瘫痪状态。



技术实现要素:

基于上述现有技术的缺陷和不足,本发明提出一种代码升级方法及系统,保证对逻辑配置芯片加载的代码进行升级时能够升级成功,且在出现代码升级失败时,不会导致设备板卡不能正常工作。

一种代码升级方法,应用于主控设备,该方法包括:

向控制器发送代码升级指令,所述代码升级指令使所述控制器控制逻辑配置芯片断开与第一存储器的连接,完成与第二存储器的连接;

将升级代码通过所述逻辑配置芯片,存储到所述第二存储器;

判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功;

如果所述逻辑配置芯片从所述第二存储器加载所述升级代码成功,则向所述控制器发送存储器切换指令,所述存储器切换指令使所述控制器控制所述逻辑配置芯片断开与所述第二存储器的连接,完成与所述第一存储器的连接;

将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器。

可选的,所述判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功,包括:

等待所述逻辑配置芯片复位并从所述第二存储器加载代码进行重配置之后,判断所述逻辑配置芯片从所述第二存储器加载的代码与所述升级代码是否相同;

如果所述逻辑配置芯片从所述第二存储器加载的代码与所述升级代码相同,则判断所述逻辑配置芯片从所述第二存储器加载所述升级代码成功;

如果所述逻辑配置芯片从所述第二存储器加载的代码与所述升级代码不同,则判断所述逻辑配置芯片从所述第二存储器加载所述升级代码失败。

可选的,所述判断所述逻辑配置芯片加载的代码与所述升级代码是否相同,包括:

读取所述逻辑配置芯片加载的代码;

将所述代码与所述升级代码进行比较;

如果所述代码与所述升级代码相同,则判断所述逻辑配置芯片加载的代码与所述升级代码相同;

如果所述代码与所述升级代码不同,则判断所述逻辑配置芯片加载的代码与所述升级代码不同。

可选的,该方法还包括:

如果判断所述逻辑配置芯片从所述第二存储器加载所述升级代码失败,则重复将升级代码通过所述逻辑配置芯片,存储到所述第二存储器,并判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功;

如果在设定的重复次数内,判断所述逻辑配置芯片从所述第二存储器加载所述升级代码均失败,则确认所述逻辑配置芯片从所述第二存储器加载所述升级代码失败;

如果在设定的重复次数中的某一次判断中,判断所述逻辑配置芯片从所述第二存储器加载所述升级代码成功,则停止重复将升级代码通过所述逻辑配置芯片,存储到所述第二存储器,并向所述控制器发送存储器切换指令。

可选的,所述将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器之后,该方法还包括:

判断所述逻辑配置芯片从所述第一存储器加载所述升级代码是否成功;

如果所述逻辑配置芯片从所述第一存储器加载所述升级代码失败,则重复将升级代码通过所述逻辑配置芯片,存储到所述第一存储器,并判断所述逻辑配置芯片从所述第一存储器加载所述升级代码是否成功;

如果在设定的重复次数内,判断所述逻辑配置芯片从所述第一存储器加载所述升级代码均失败,则确认所述逻辑配置芯片从所述第一存储器加载所述升级代码失败;

如果在设定的重复次数中的某一次判断中,判断所述逻辑配置芯片从所述第一存储器加载所述升级代码成功,则停止重复将升级代码通过所述逻辑配置芯片,存储到所述第一存储器。

一种代码升级方法,应用于控制器,所述控制器用于与第一存储器或者第二存储器连接,该方法包括:

接收主控设备发送的代码升级指令;

依据所述代码升级指令,控制所述逻辑配置芯片断开与第一存储器的连接,并完成与第二存储器的连接,以使所述主控设备将升级代码通过所述逻辑配置芯片,存储到所述第二存储器中;

复位所述逻辑配置芯片,以使所述逻辑配置芯片从所述第二存储器中加载所述升级代码;

接收所述主控设备在判断所述逻辑配置芯片从所述第二存储器加载所述升级代码成功之后发送的存储器切换指令;

控制所述逻辑配置芯片断开与所述第二存储器的连接,并完成与所述第一存储器的连接,以使所述主控设备将升级代码通过所述逻辑配置芯片,存储到所述第一存储器。

可选的,在控制所述逻辑配置芯片与第一存储器的连接,并完成与第二存储器的连接,以使所述主控设备将升级代码通过所述逻辑配置芯片,存储到所述第二存储器中之后,在复位所述逻辑配置芯片之前,该方法还包括:

接收所述第二存储器发送的表征存储所述升级代码完成的信息。

一种代码升级系统,包括:

主控设备、第一存储器、第二存储器及控制器;

其中,所述主控设备、所述第一存储器、所述第二存储器及所述控制器分别与逻辑配置芯片连接;

所述第一存储器与所述第二存储器,均用于存储代码;

所述主控设备,用于向控制器发送代码升级指令;将升级代码通过所述逻辑配置芯片,存储到所述第二存储器;判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功;如果所述逻辑配置芯片从所述第二存储器加载所述升级代码成功,则向所述控制器发送存储器切换指令;将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器;

所述控制器,与所述第一存储器或所述第二存储器连接,用于接收主控设备发送的代码升级指令;依据所述代码升级指令,控制逻辑配置芯片断开与第一存储器的连接,并完成与第二存储器的连接;复位所述逻辑配置芯片,以使所述逻辑配置芯片从所述第二存储器中加载所述升级代码;接收所述主控设备发送的存储器切换指令;控制所述逻辑配置芯片断开与所述第二存储器的连接,并完成与所述第一存储器的连接;

可选的,所述主控设备判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功时,具体用于:

等待所述逻辑配置芯片复位并从所述第二存储器加载代码进行重配置之后,判断所述逻辑配置芯片从所述第二存储器加载的代码与所述升级代码是否相同;

如果所述逻辑配置芯片从所述第二存储器加载的代码与所述升级代码相同,则判断所述逻辑配置芯片从所述第二存储器加载所述升级代码成功;

如果所述逻辑配置芯片从所述第二存储器加载的代码与所述升级代码不同,则判断所述逻辑配置芯片从所述第二存储器加载所述升级代码失败。

可选的,所述主控设备判断所述逻辑配置芯片加载的代码与所述升级代码是否相同时,具体用于:

读取所述逻辑配置芯片加载的代码;

将所述代码与所述升级代码进行比较;

如果所述代码与所述升级代码相同,则判断所述逻辑配置芯片加载的代码与所述升级代码相同;

如果所述代码与所述升级代码不同,则判断所述逻辑配置芯片加载的代码与所述升级代码不同。

可选的,所述主控设备还用于:

如果判断所述逻辑配置芯片从所述第二存储器加载所述升级代码失败,则重复将升级代码通过所述逻辑配置芯片,存储到所述第二存储器,并判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功;

如果在设定的重复次数内,判断所述逻辑配置芯片从所述第二存储器加载所述升级代码均失败,则确认所述逻辑配置芯片从所述第二存储器加载所述升级代码失败;

如果在设定的重复次数中的某一次判断中,判断所述逻辑配置芯片从所述第二存储器加载所述升级代码成功,则停止重复将升级代码通过所述逻辑配置芯片,存储到所述第二存储器,并向所述控制器发送存储器切换指令。

可选的,所述主控设备将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器之后,所述主控设备还用于:

判断所述逻辑配置芯片从所述第一存储器加载所述升级代码是否成功;

如果所述逻辑配置芯片从所述第一存储器加载所述升级代码失败,则重复将升级代码通过所述逻辑配置芯片,存储到所述第一存储器,并判断所述逻辑配置芯片从所述第一存储器加载所述升级代码是否成功;

如果在设定的重复次数内,判断所述逻辑配置芯片从所述第一存储器加载所述升级代码均失败,则确认所述逻辑配置芯片从所述第一存储器加载所述升级代码失败;

如果在设定的重复次数中的某一次判断中,判断所述逻辑配置芯片从所述第一存储器加载所述升级代码成功,则停止重复将升级代码通过所述逻辑配置芯片,存储到所述第一存储器。

可选的,所述控制器,在断开逻辑配置芯片与第一存储器的连接,并完成所述逻辑配置芯片与第二存储器的连接之后,在复位所述逻辑配置芯片之前,还用于:

接收所述第二存储器发送的表征存储所述升级代码完成的信息。

本发明提出的代码升级方法,应用于主控设备,该方法包括:向控制器发送代码升级指令,控制逻辑配置芯片断开与第一存储器的连接,完成与第二存储器的连接;其中,所述第一存储器与所述第二存储器相同;主控设备先将升级代码通过所述逻辑配置芯片,存储到所述第二存储器;并判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功;如果所述逻辑配置芯片从所述第二存储器加载所述升级代码成功,则向控制器发送存储器切换指令,控制所述逻辑配置芯片断开与所述第二存储器的连接,完成与所述第一存储器的连接,并将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器。采用本发明技术方案,在对逻辑配置芯片的代码进行升级时,先将升级代码下载到与第一存储器相同的第二存储器中,当检验逻辑配置芯片能够正常加载第二存储器中的升级代码时,再将升级代码下载到第一存储器中。该方案保证了加载到第一存储器中的升级代码是正确的升级代码,而且将升级代码下载到第二存储器失败时,不会影响第一存储器中的代码,逻辑配置芯片能够从第一存储器加载代码继续工作,不会导致设备板卡不能正常工作。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明提供的一种代码升级方法的流程示意图;

图2是本发明提供的一种代码升级方法中的设备连接关系示意图;

图3是本发明提供的另一种代码升级方法的流程示意图;

图4是本发明提供的另一种代码升级方法的流程示意图;

图5是本发明提供的另一种代码升级方法的流程示意图;

图6是本发明提供的一种代码升级系统的组成示意图;

图7是本发明提供的一种代码升级系统的工作流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种代码升级方法,应用于主控设备,参见图1所示,该方法包括:

S101、向控制器发送代码升级指令,所述代码升级指令使所述控制器控制逻辑配置芯片断开与第一存储器的连接,完成与第二存储器的连接;

具体的,所述主控设备、逻辑配置芯片、第一存储器、第二存储器及控制器的连接关系如图2所述。所述主控设备通过PCIe总线与FPGA逻辑配置芯片(以下简称逻辑配置芯片)连接。在逻辑配置芯片内部,PCIe CORE模块用于实现与主控设备之间的PCIe总线对接;先入先出(First IN First Out,FIFO)模块为逻辑配置芯片内部总线转换模块,用于逻辑配置芯片内部数据及控制连接口转换;FLASH CTRL模块实现对控制器的控制,具体为向控制器发送控制信号。控制器为复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD),通过CTRL1和CTRL2总线分别实现对第一存储器FLASH1和第二存储器FLASH2(以下用FLASH1代表第一存储器,用FLASH2代表第二存储器)的控制,具体为:当连接CTRL1时,FLASH1开始工作,并通过DATA1总线与逻辑配置芯片连接通信;当连接CTRL2时,FLASH2开始工作,并通过DATA2总线与逻辑配置芯片连接通信。FLASH1、FLASH2为相同的掉电非遗失数据存储芯片,用于存储逻辑配置芯片动态加载配置代码,并分别通过DATA1、DATA2总线完成逻辑配置芯片的配置启动。

在正常情况下,基站设备上电后,CPLD控制器(以下简称控制器)率先启动,并缺省将逻辑配置芯片的CTRL控制信号从逻辑配置芯片接到FLASH1的CTRL1控制信号上,事先存储在FLASH1当中的逻辑配置芯片动态加载配置启动代码通过DATA1总线完成逻辑配置芯片的配置启动;FLASH2当中的逻辑配置芯片动态加载配置启动代码与FLASH1当中的逻辑配置芯片动态加载配置启动代码是完全一样的,逻辑配置芯片在基站设备中动态加载配置启动是缺省由FLASH1完成的,FLASH2当中的逻辑配置芯片动态加载配置启动代码在逻辑配置芯片正常动态加载配置启动过程中是不工作的。

当需要对逻辑配置芯片动态加载配置启动的代码进行升级时,需要首先对FLASH2中的代码进行升级试验,当FLASH2中的代码升级成功时,再对FLASH1中的代码进行升级。因此,在对逻辑配置芯片动态加载配置启动的代码进行升级时,主控设备向控制器发送代码升级指令,使控制器通过断开CTRL1,连接CTRL2,从而断开逻辑配置芯片与FLASH1的连接,完成逻辑配置芯片与FLASH2的连接。

基于上述本发明实施例技术方案,在对FLASH1进行代码升级之前,首先对FLASH2代码进行升级试验,当对FLASH2代码升级成功时,再对FLASH1的代码进行升级。因此,显而易见的,FLASH2与FLASH1应当是相同的存储器,理论上其内部构成及存储容量等参数完全相同,才能保证对FLASH2代码升级的过程与对FLASH1代码升级的过程完全相同。事实上,FLASH1与FLASH2在某些不影响代码升级过程的参数上,可以有略微不同,比如在存储容量方面,FLASH1与FLASH2在保证足够存储升级代码的前提下,可以有适当范围的差异。

S102、将升级代码通过所述逻辑配置芯片,存储到所述第二存储器;

具体的,主控设备将升级代码通过PCIe总线发送至逻辑配置芯片中的PCIe CORE模块,升级代码进一步地通过PCIe CORE模块、FIFO模块、及DATE2总线,到达FLASH2存储器,FLASH2存储器对收到的升级代码进行存储。

S103、判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功;

具体的,主控设备将升级代码存储到FLASH2完成后,控制器自动复位逻辑配置芯片,逻辑配置芯片重新启动并从FLASH2中加载升级代码进行重配置。主控设备通过对比逻辑配置芯片从FLASH2存储器中加载的升级代码与自身记录的升级代码是否相同,来进一步验证所述逻辑配置芯片从FLASH2中加载升级代码是否成功:如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码相同,则所述逻辑配置芯片从FLASH2中加载升级代码成功,也就是说对FLASH2中的代码进行升级成功了;如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码不同,则所述逻辑配置芯片从FLASH2中加载升级代码失败,也就是说对FLASH2中的代码进行升级失败了。

如果所述逻辑配置芯片从所述第二存储器加载所述升级代码成功,则执行步骤S104、向所述控制器发送存储器切换指令,所述存储器切换指令使所述控制器控制所述逻辑配置芯片断开与所述第二存储器的连接,完成与所述第一存储器的连接;

具体的,当所述逻辑配置芯片从FLASH2中加载升级代码成功时,说明对FLASH2中的代码升级成功了。由于正常情况下,逻辑配置芯片启动时都是默认从FLASH1中加载代码进行配置的,因此,还需要进一步对FLASH1中的代码进行升级,才能保证逻辑配置芯片每次启动时,都加载升级的代码。

需要说明的是,当所述逻辑配置芯片从FLASH2中加载升级代码失败时,说明对FLASH2中的代码升级失败了。这时,放弃对FLASH1中的代码的升级工作,对逻辑配置芯片或对基站设备板卡进行断电重启,逻辑配置芯片默认从FLASH1中加载代码进行重配置,由于FLASH1中的代码是能够支持逻辑配置芯片正常工作的代码,因此,逻辑配置芯片依然能够正常工作。

当主控设备验证对FLASH2中的代码升级成功时,向控制器发送存储器切换指令,此时,控制器断开CTRL2,连接CTRL1,从而断开逻辑配置芯片与第二存储器的连接,完成逻辑配置芯片与第一存储器的连接。

S105、将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器。

具体的,主控设备将升级代码通过PCIe总线发送至逻辑配置芯片中的PCIe CORE模块,升级代码进一步地通过PCIe CORE模块、FIFO模块、及DATE1总线,到达FLASH1存储器,FLASH1存储器对收到的升级代码进行存储。

本发明提出的代码升级方法,应用于主控设备,该方法包括:向控制器发送代码升级指令,控制逻辑配置芯片断开与第一存储器的连接,完成与第二存储器的连接;其中,所述第一存储器与所述第二存储器相同;主控设备先将升级代码通过所述逻辑配置芯片,存储到所述第二存储器;并判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功;如果所述逻辑配置芯片从所述第二存储器加载所述升级代码成功,则向控制器发送存储器切换指令,控制所述逻辑配置芯片断开与所述第二存储器的连接,完成与所述第一存储器的连接,并将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器。采用本发明技术方案,在对逻辑配置芯片的代码进行升级时,先将升级代码下载到与第一存储器相同的第二存储器中,当检验逻辑配置芯片能够正常加载第二存储器中的升级代码时,再将升级代码下载到第一存储器中。该方案保证了加载到第一存储器中的升级代码是正确的升级代码,而且将升级代码下载到第二存储器失败时,不会影响第一存储器中的代码,逻辑配置芯片能够从第一存储器加载代码继续工作,不会导致设备板卡不能正常工作。

可选的,在本发明的另一个实施例中,所述判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功,包括:

等待所述逻辑配置芯片复位并从所述第二存储器加载代码进行重配置之后,判断所述逻辑配置芯片从所述第二存储器加载的代码与所述升级代码是否相同;

如果所述逻辑配置芯片从所述第二存储器加载的代码与所述升级代码相同,则判断所述逻辑配置芯片从所述第二存储器加载所述升级代码成功;

如果所述逻辑配置芯片从所述第二存储器加载的代码与所述升级代码不同,则判断所述逻辑配置芯片从所述第二存储器加载所述升级代码失败。

具体的,主控设备将升级代码存储到FLASH2完成后,控制器自动复位逻辑配置芯片,逻辑配置芯片重新启动并从FLASH2中加载升级代码进行重配置。主控设备通过PCIe总线读取逻辑配置芯片中的配置代码,通过对比逻辑配置芯片中的配置代码与自身记录的升级代码是否相同,来判断所述逻辑配置芯片从FLASH2中加载升级代码是否成功:如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码相同,则所述逻辑配置芯片从FLASH2中加载升级代码成功;如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码不同,则所述逻辑配置芯片从FLASH2中加载升级代码失败。

进一步的,当判断逻辑配置芯片从FLASH2中加载升级代码成功时,说明对FLASH2中的代码升级成功,可以继续后续流程,对FLASH1中的代码进行升级;当判断逻辑配置芯片从FLASH2中加载升级代码失败时,说明对FLASH2中的代码升级失败,不能继续对FLASH1中的代码进行升级,结束代码升级流程。

可选的,在本发明的另一个实施例中,所述判断所述逻辑配置芯片加载的代码与所述升级代码是否相同,包括:

读取所述逻辑配置芯片加载的代码;

具体的,基站设备中的主控设备通过控制界面和PCIe总线,将逻辑配置芯片完成重配置后,正在运行的从FLASH 2中加载的代码,读取回主控设备。

将所述代码与所述升级代码进行比较;

如果所述代码与所述升级代码相同,则判断所述逻辑配置芯片加载的代码与所述升级代码相同;

如果所述代码与所述升级代码不同,则判断所述逻辑配置芯片加载的代码与所述升级代码不同。

具体的,如果通过对比,确认从逻辑配置芯片中读取的,正在运行的代码与自身存储的升级代码相同,则说明逻辑配置芯片中正在运行的就是升级代码,即所述逻辑配置芯片从FLASH2中加载的代码与升级代码相同,也就是说,对FLASH2中的代码升级成功;相反,如果从逻辑配置芯片中读取的,正在运行的代码与自身存储的升级代码不同,则说明逻辑配置芯片中正在运行的不是正确的升级代码,即所述逻辑配置芯片从FLASH2中加载的代码与升级代码不同,也就是说,对FLASH2中的代码升级失败。

可选的,在本发明的另一个实施例中,如图3所示,该方法还包括:

如果判断所述逻辑配置芯片从所述第二存储器加载所述升级代码失败,则重复将升级代码通过所述逻辑配置芯片,存储到所述第二存储器,并判断所述逻辑配置芯片从所述第二存储器加载所述升级代码是否成功;

具体的,如果对FLASH2当中的代码升级失败,是不允许将存储到FLASH2中的升级代码存储到FLASH1中的,即不允许对FLASH1中的代码进行升级,以免对FLASH1中的代码升级也失败,导致逻辑配置芯片无法工作。当主控设备判断所述逻辑配置芯片从FLASH2中加载所述升级代码失败,即对FLASH2中的代码升级失败时,本发明实施例检查升级代码是否正确,以及检查需要进行代码升级的逻辑配置芯片是否存在硬件故障。如果升级代码错误或逻辑配置芯片存在硬件故障,则首先更换正确的升级代码,以及排除逻辑配置芯片故障。当确认升级代码正确,且逻辑配置芯片没有硬件故障时,进行重复多次FLASH2动态加载,并复位逻辑配置芯片,使逻辑配置芯片从FLASH2中读取代码进行重配置,进一步判断逻辑配置芯片从FLASH2中加载所述升级代码是否成功。

如果在设定的重复次数内,判断所述逻辑配置芯片从所述第二存储器加载所述升级代码均失败,则确认所述逻辑配置芯片从所述第二存储器加载所述升级代码失败;

如果在设定的重复次数中的某一次判断中,判断所述逻辑配置芯片从所述第二存储器加载所述升级代码成功,则停止重复将升级代码通过所述逻辑配置芯片,存储到所述第二存储器,并向所述控制器发送存储器切换指令。

具体的,如果在设定的重复次数内,逻辑配置芯片均不能从FLASH2中成功加载所述升级代码,则说明逻辑配置芯片从FLASH2中加载升级代码确实是不能成功。也就是说,设定次数的,重复将升级代码存储到FLASH2中均失败。此时,应当停止对存储器中的代码的升级工作,进一步检查软硬件方面的问题。

如果逻辑配置芯片在某一次从FLASH2中加载所述升级代码的过程中,成功地从FLASH2中加载了所述升级代码,则说明已经成功地将升级代码存储到FLASH2中,即对FLASH2中代码升级成功,此时,停止重复将升级代码存储到FLASH2中。

可选的,在本发明的另一个实施例中,如图4所示,在所述将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器之后,该方法还包括:

S406、判断所述逻辑配置芯片从所述第一存储器加载所述升级代码是否成功;

具体的,虽然FLASH2与FLASH1是完全相同的存储器,但是,由于偶然因素或线路问题,对FLASH2中的代码升级成功,并不意味着对FLASH1中的代码升级一定成功。因此,为了保证对FLASH1中的代码升级成功,确保逻辑配置芯片正常工作,本发明实施例在将升级代码存储到FLASH1中之后,进一步判断是否存储成功,即判断是否对FLASH1中的代码升级成功。

判断的方法,同样是复位逻辑配置芯片,使逻辑配置芯片从FLASH1中加载升级代码并进行重配置,如果逻辑配置芯片从FLASH1中加载升级代码成功,则说明对FLASH1中的代码升级成功。具体的,在逻辑配置芯片复位并从FLASH1中加载代码重配置之后,主控设备读取逻辑配置芯片中运行的代码,并与升级代码进行对比,如果逻辑配置芯片中运行的代码与升级代码相同,则说明逻辑配置芯片从FLASH1中加载升级代码成功,即将升级代码存储到FLASH1成功;否则,则说明逻辑配置芯片从FLASH1中加载升级代码失败,即将升级代码存储到FLASH1失败。

如果所述逻辑配置芯片从所述第一存储器加载所述升级代码失败,则重复将升级代码通过所述逻辑配置芯片,存储到所述第一存储器,并判断所述逻辑配置芯片从所述第一存储器加载所述升级代码是否成功;

具体的,当主控设备判断所述逻辑配置芯片从FLASH1中加载所述升级代码失败,即对FLASH1中的代码升级失败时,本发明实施例检查升级代码是否正确,以及检查需要进行代码升级的逻辑配置芯片是否存在硬件故障。如果升级代码错误或逻辑配置芯片存在硬件故障,则首先更换正确的升级代码,以及排除逻辑配置芯片故障。当确认升级代码正确,且逻辑配置芯片没有硬件故障时,进行重复多次FLASH1动态加载,并复位逻辑配置芯片,使逻辑配置芯片从FLASH1中读取代码进行重配置,进一步判断逻辑配置芯片从FLASH1中加载所述升级代码是否成功。

如果在设定的重复次数内,判断所述逻辑配置芯片从所述第一存储器加载所述升级代码均失败,则确认所述逻辑配置芯片从所述第一存储器加载所述升级代码失败;

如果在设定的重复次数中的某一次判断中,判断所述逻辑配置芯片从所述第一存储器加载所述升级代码成功,则停止重复将升级代码通过所述逻辑配置芯片,存储到所述第一存储器。

具体的,如果在设定的重复次数内,逻辑配置芯片均不能从FLASH1中成功加载所述升级代码,则说明逻辑配置芯片从FLASH1中加载升级代码确实是不能成功。也就是说,设定次数的,重复将升级代码存储到FLASH1中均失败。此时,应当进一步检查软硬件方面的问题。

如果逻辑配置芯片在某一次从FLASH1中加载所述升级代码的过程中,成功地从FLASH1中加载了所述升级代码,则说明已经成功地将升级代码存储到FLASH1中,即对FLASH1中代码升级成功,此时,停止重复将升级代码存储到FLASH1中。

本实施例中的步骤S401~S405对应图1所示的方法的实施例中的步骤S101~S105,其具体内容请参见对应的方法实施例的内容,此处不再赘述。

本发明另一实施例还公开了另一种代码升级方法,应用于控制器,所述控制器用于与第一存储器或者第二存储器连接,参见图5所示,该方法包括:

S501、接收主控设备发送的代码升级指令;

具体的,在本发明实施例所适用的代码升级系统中,主控设备、逻辑配置芯片、第一存储器、第二存储器及控制器的连接关系如图2所述。主控设备通过PCIe总线与FPGA逻辑配置芯片(以下简称逻辑配置芯片)连接。控制器为复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD),通过CTRL1和CTRL2总线分别实现对第一存储器FLASH1和第二存储器FLASH2(以下用FLASH1代表第一存储器,用FLASH2代表第二存储器)的控制,具体为:当连接CTRL1时,FLASH1开始工作,并通过DATA1总线与逻辑配置芯片连接通信;当连接CTRL2时,FLASH2开始工作,并通过DATA2总线与逻辑配置芯片连接通信。FLASH1、FLASH2为相同的掉电非遗失数据存储芯片,用于存储逻辑配置芯片动态加载配置代码,并分别通过DATA1、DATA2总线完成逻辑配置芯片的配置启动。

当逻辑配置芯片需要进行功能升级时,需要对FLASH1和FLASH2中的代码进行升级,逻辑配置芯片从FLASH1或FLASH2中加载代码进行重配置,即实现了逻辑配置芯片功能升级。由于FLASH1和FLASH2与逻辑配置芯片的连接是由控制器控制的,因此,在需要进行代码升级时,主控设备首先向控制器发送代码升级指令,控制器接收代码升级指令后,根据代码升级方案,实现对FLASH1和FLASH2的控制。

S502、依据所述代码升级指令,控制所述逻辑配置芯片断开与第一存储器的连接,并完成与第二存储器的连接,以使所述主控设备将升级代码通过所述逻辑配置芯片,存储到所述第二存储器中;

在正常情况下,基站设备上电后,CPLD控制器(以下简称控制器)率先启动,并缺省将逻辑配置芯片的CTRL控制信号从逻辑配置芯片接到FLASH1的CTRL1控制信号上,事先存储在FLASH1当中的逻辑配置芯片动态加载配置启动代码通过DATA1总线完成逻辑配置芯片的配置启动;FLASH2当中的逻辑配置芯片动态加载配置启动代码与FLASH1当中的逻辑配置芯片动态加载配置启动代码是完全一样的,逻辑配置芯片在基站设备中动态加载配置启动是缺省由FLASH1完成的,FLASH2当中的逻辑配置芯片动态加载配置启动代码在逻辑配置芯片正常动态加载配置启动过程中是不工作的。

当需要对逻辑配置芯片动态加载配置启动的代码进行升级时,本发明实施例首先对FLASH2中的代码进行升级试验,当FLASH2中的代码升级成功时,再对FLASH1中的代码进行升级。因此,在对逻辑配置芯片动态加载配置启动的代码进行升级时,主控设备向控制器发送代码升级指令,控制器接收代码升级指令后,通过断开CTRL1,连接CTRL2,实现断开逻辑配置芯片与FLASH1的连接,完成逻辑配置芯片与FLASH2的连接。进一步地,主控设备通过逻辑配置芯片,将升级代码存储到FLASH2中。

基于上述本发明实施例技术方案,在对FLASH1进行代码升级之前,首先对FLASH2代码进行升级试验,当对FLASH2代码升级成功时,再对FLASH1的代码进行升级。因此,显而易见的,FLASH2与FLASH1应当是相同的存储器,理论上其内部构成及存储容量等参数完全相同,才能保证对FLASH2代码升级的过程与对FLASH1代码升级的过程完全相同。事实上,FLASH1与FLASH2在某些不影响代码升级过程的参数上,可以有略微不同,比如在存储容量方面,FLASH1与FLASH2在保证足够存储升级代码的前提下,可以有适当范围的差异。

S503、复位所述逻辑配置芯片,以使所述逻辑配置芯片从所述第二存储器中加载所述升级代码;

具体的,在步骤S502中,主控设备将升级代码存储到FLASH2中之后,控制器控制逻辑配置芯片复位并重新启动。此时,由于逻辑配置芯片与FLASH2连接,逻辑配置芯片从FLASH2中加载代码并进行重配置。

S504、接收所述主控设备在判断所述逻辑配置芯片从所述第二存储器加载所述升级代码成功之后发送的存储器切换指令;

具体的,主控设备将升级代码存储到FLASH2完成后,控制器自动复位逻辑配置芯片,逻辑配置芯片重新启动并从FLASH2中加载升级代码进行重配置。主控设备通过对比逻辑配置芯片从FLASH2存储器中加载的升级代码与自身记录的升级代码是否相同,来进一步验证所述逻辑配置芯片从FLASH2中加载升级代码是否成功:如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码相同,则所述逻辑配置芯片从FLASH2中加载升级代码成功,也就是说对FLASH2中的代码进行升级成功了;如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码不同,则所述逻辑配置芯片从FLASH2中加载升级代码失败,也就是说对FLASH2中的代码进行升级失败了。

当所述逻辑配置芯片从FLASH2中加载升级代码成功后,由于正常情况下,逻辑配置芯片启动时都是默认从FLASH1中加载代码进行配置的,因此,还需要进一步对FLASH1中的代码进行升级,才能保证逻辑配置芯片每次启动时,都加载升级的代码。基于上述逻辑配置器件的工作模式,接下来还需要对FLASH1中的代码进行升级,因此,主动设备向控制器发送存储器切换指令,使所述控制器断开逻辑配置芯片与FLASH2的连接,完成与FLASH1的连接,以便于主控设备通过逻辑配置芯片,将升级代码存储到FLASH1中。

S505、控制所述逻辑配置芯片断开与所述第二存储器的连接,并完成与所述第一存储器的连接,以使所述主控设备将升级代码通过所述逻辑配置芯片,存储到所述第一存储器。

具体的,控制器断开CTRL2,连接CTRL1,从而断开逻辑配置芯片与第二存储器的连接,完成逻辑配置芯片与第一存储器的连接。此时FLASH1开始工作,主控设备通过PCIe总线、逻辑配置芯片,以及DATE1总线,将升级代码存储到FLASH1,完成对FLASH1中代码的升级。

本发明提出的代码升级方法,控制器接收主控设备发送的代码升级指令;断开逻辑配置芯片与第一存储器的连接,并完成所述逻辑配置芯片与第二存储器的连接,以使所述主控设备将升级代码通过所述逻辑配置芯片,存储到所述第二存储器中;然后控制器复位所述逻辑配置芯片,以使所述逻辑配置芯片从所述第二存储器中加载所述升级代码;当主控设备判断所述逻辑配置芯片从所述第二存储器加载所述升级代码成功之后,控制器接收主控设备发送的存储器切换指令;断开所述逻辑配置芯片与所述第二存储器的连接,并完成所述逻辑配置芯片与所述第一存储器的连接,以使所述主控设备将升级代码通过所述逻辑配置芯片,存储到所述第一存储器。该方案通过控制器实现对不同存储设备的控制,使主控设备在对第二存储器代码升级成功后,再对第一存储器的代码进行升级,确保成功升级第一存储器代码,并且,在对第二存储器代码升级失败时,不会丢失第一存储器的代码,逻辑配置芯片可以从第一存储器中加载正常代码继续工作,不会导致设备板卡不能正常工作。

可选的,在本发明的另一个实施例中,在控制所述逻辑配置芯片断开与第一存储器的连接,并完成与第二存储器的连接,以使所述主控设备将升级代码通过所述逻辑配置芯片,存储到所述第二存储器中之后,在复位所述逻辑配置芯片之前,该方法还包括:

接收所述第二存储器发送的表征存储所述升级代码完成的信息。

具体的,当将升级代码存储到FLASH2完成时,FLASH2通过CTRL2向控制器发送表征存储升级代码完成的信息。控制器收到所述表征存储升级代码完成的信息后,确认将升级代码存储到FLASH2完成,然后,控制器执行复位逻辑配置芯片的动作。

本发明另一实施例还公开了一种代码升级系统,参见图6所示,该系统包括:

主控设备601、第一存储器602、第二存储器603及控制器604;

其中,所述主控设备601、所述第一存储器602、所述第二存储器603及所述控制器604分别与逻辑配置芯片连接;

所述第一存储器602与所述第二存储器603,均用于存储代码;

具体的,所述主控设备601通过PCIe总线与FPGA逻辑配置芯片(以下简称逻辑配置芯片)连接。第一存储器FLASH1和第二存储器FLASH2(以下用FLASH1代表第一存储器,用FLASH2代表第二存储器)为相同的掉电非遗失数据存储芯片,用于存储逻辑配置芯片动态加载配置代码,并分别通过DATA1、DATA2总线完成逻辑配置芯片的配置启动。

所述代码升级系统进行逻辑配置芯片动态加载代码升级的过程如图7所示;其中:

所述主控设备601,用于向控制器604发送代码升级指令;将升级代码通过所述逻辑配置芯片,存储到所述第二存储器603;判断所述逻辑配置芯片从所述第二存储器603加载所述升级代码是否成功;如果所述逻辑配置芯片从所述第二存储器603加载所述升级代码成功,则向所述控制器604发送存储器切换指令;将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器602;

所述控制器604,与所述第一存储器602或所述第二存储器603连接,用于接收主控设备601发送的代码升级指令;依据所述代码升级指令,控制逻辑配置芯片断开与第一存储器602的连接,并完成与第二存储器603的连接;复位所述逻辑配置芯片,以使所述逻辑配置芯片从所述第二存储器603中加载所述升级代码;接收所述主控设备601发送的存储器切换指令;控制所述逻辑配置芯片断开与所述第二存储器603的连接,并完成与所述第一存储器602的连接;

具体的,所述控制器604为复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD),通过CTRL1和CTRL2总线分别实现对第一存储器FLASH1和第二存储器FLASH2(以下用FLASH1代表第一存储器,用FLASH2代表第二存储器)的控制,具体为:当连接CTRL1时,FLASH1开始工作,并通过DATA1总线与逻辑配置芯片连接通信;当连接CTRL2时,FLASH2开始工作,并通过DATA2总线与逻辑配置芯片连接通信。

在正常情况下,基站设备上电后,CPLD控制器(以下简称控制器)率先启动,并缺省将逻辑配置芯片的CTRL控制信号从逻辑配置芯片接到FLASH1的CTRL1控制信号上,事先存储在FLASH1当中的逻辑配置芯片动态加载配置启动代码通过DATA1总线完成逻辑配置芯片的配置启动;FLASH2当中的逻辑配置芯片动态加载配置启动代码与FLASH1当中的逻辑配置芯片动态加载配置启动代码是完全一样的,逻辑配置芯片在基站设备中动态加载配置启动是缺省由FLASH1完成的,FLASH2当中的逻辑配置芯片动态加载配置启动代码在逻辑配置芯片正常动态加载配置启动过程中是不工作的。

当需要对逻辑配置芯片动态加载配置启动的代码进行升级时,需要首先对FLASH2中的代码进行升级试验,当FLASH2中的代码升级成功时,再对FLASH1中的代码进行升级。因此,在对逻辑配置芯片动态加载配置启动的代码进行升级时,主控设备601向控制器604发送代码升级指令,使控制器604通过断开CTRL1,连接CTRL2,从而使逻辑配置芯片断开与FLASH1的连接,完成与FLASH2的连接。

主控设备601将升级代码通过PCIe总线发送至逻辑配置芯片中,升级代码进一步地通过所述逻辑配置芯片,到达FLASH2存储器,FLASH2存储器对收到的升级代码进行存储。

控制器604控制逻辑配置芯片复位并重新启动。此时,由于逻辑配置芯片与FLASH2连接,逻辑配置芯片从FLASH2中加载代码并进行重配置。

主控设备601通过对比逻辑配置芯片从FLASH2存储器中加载的升级代码与自身记录的升级代码是否相同,来进一步验证所述逻辑配置芯片从FLASH2中加载升级代码是否成功:如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码相同,则所述逻辑配置芯片从FLASH2中加载升级代码成功,也就是说对FLASH2中的代码进行升级成功了;如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码不同,则所述逻辑配置芯片从FLASH2中加载升级代码失败,也就是说对FLASH2中的代码进行升级失败了。

当所述逻辑配置芯片从FLASH2中加载升级代码成功时,说明对FLASH2中的代码升级成功了。正常情况下,逻辑配置芯片启动时默认从FLASH1中加载代码进行配置的,因此,还需要进一步对FLASH1中的代码进行升级,才能保证逻辑配置芯片每次启动时,都加载升级的代码。当主控设备601验证对FLASH2中的代码升级成功时,向控制器604发送存储器切换指令。

控制器604接收到存储器切换指令后,断开CTRL2,连接CTRL1,从而使逻辑配置芯片断开与第二存储器603的连接,完成与第一存储器602的连接。

最后,主控设备601通过逻辑配置芯片,将升级代码存储到FLASH1中,完成对FLASH1中的代码升级。

基于上述本发明实施例技术方案,在对FLASH1进行代码升级之前,先对FLASH2代码进行升级试验,当对FLASH2代码升级成功时,再对FLASH1的代码进行升级。因此,FLASH2与FLASH1应当是相同的存储器,理论上其各方面参数完全相同,才能保证对FLASH2代码升级的过程与对FLASH1代码升级的过程完全相同。事实上,FLASH1与FLASH2在某些不影响代码升级过程的参数上,可以有略微不同,比如在存储容量方面,FLASH1与FLASH2在保证足够存储升级代码的前提下,可以有适当范围的差异。

本发明提出的代码升级系统,进行代码升级时,首先由主控设备601向控制器604发送代码升级指令,控制器604控制逻辑配置芯片断开与第一存储器602的连接,完成与第二存储器603的连接;然后主控设备601先将升级代码通过所述逻辑配置芯片,存储到所述第二存储器603;并判断所述逻辑配置芯片从所述第二存储器603加载所述升级代码是否成功;如果所述逻辑配置芯片从所述第二存储器603加载所述升级代码成功,则向控制器604发送存储器切换指令;控制器604控制所述逻辑配置芯片断开与所述第二存储器603的连接,完成与所述第一存储器602的连接;主控设备601将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器602。采用本发明技术方案,在对逻辑配置芯片的代码进行升级时,先将升级代码下载到第二存储器603中,当检验逻辑配置芯片能够正常加载第二存储器603中的升级代码时,再将升级代码下载到第一存储器602中。该方案保证了加载到第一存储器602中的升级代码是正确的升级代码,而且将升级代码下载到第二存储器603失败时,不会影响第一存储器602中的代码,逻辑配置芯片能够从第一存储器602加载代码继续工作,不会导致设备板卡不能正常工作。

可选的,在本发明的另一个实施例中,所述主控设备601判断所述逻辑配置芯片从所述第二存储器603加载所述升级代码是否成功时,具体用于:

等待所述逻辑配置芯片复位并从所述第二存储器603加载代码进行重配置之后,判断所述逻辑配置芯片从所述第二存储器603加载的代码与所述升级代码是否相同;

如果所述逻辑配置芯片从所述第二存储器603加载的代码与所述升级代码相同,则判断所述逻辑配置芯片从所述第二存储器603加载所述升级代码成功;

如果所述逻辑配置芯片从所述第二存储器603加载的代码与所述升级代码不同,则判断所述逻辑配置芯片从所述第二存储器603加载所述升级代码失败。

具体的,主控设备601将升级代码存储到FLASH2完成后,控制器604自动复位逻辑配置芯片,逻辑配置芯片重新启动并从FLASH2中加载升级代码进行重配置。主控设备601通过PCIe总线读取逻辑配置芯片中的配置代码,通过对比逻辑配置芯片中的配置代码与自身记录的升级代码是否相同,来判断所述逻辑配置芯片从FLASH2中加载升级代码是否成功:如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码相同,则所述逻辑配置芯片从FLASH2中加载升级代码成功;如果逻辑配置芯片从FLASH2中加载升级代码与自身记录的升级代码不同,则所述逻辑配置芯片从FLASH2中加载升级代码失败。

进一步的,当判断逻辑配置芯片从FLASH2中加载升级代码成功时,说明对FLASH2中的代码升级成功,可以继续后续流程,对FLASH1中的代码进行升级;当判断逻辑配置芯片从FLASH2中加载升级代码失败时,说明对FLASH2中的代码升级失败,不能继续对FLASH1中的代码进行升级,结束代码升级流程。

可选的,在本发明的另一个实施例中,所述主控设备601判断所述逻辑配置芯片加载的代码与所述升级代码是否相同时,具体用于:

读取所述逻辑配置芯片加载的代码;

具体的,基站设备中的主控设备601通过控制界面和PCIe总线,将逻辑配置芯片完成重配置后,正在运行的从FLASH 2中加载的代码,读取回主控设备601。

将所述代码与所述升级代码进行比较;

如果所述代码与所述升级代码相同,则判断所述逻辑配置芯片加载的代码与所述升级代码相同;

如果所述代码与所述升级代码不同,则判断所述逻辑配置芯片加载的代码与所述升级代码不同。

具体的,如果通过对比,确认从逻辑配置芯片中读取的,正在运行的代码与自身存储的升级代码相同,则说明逻辑配置芯片中正在运行的就是升级代码,即所述逻辑配置芯片从FLASH2中加载的代码与升级代码相同,也就是说,对FLASH2中的代码升级成功;相反,如果从逻辑配置芯片中读取的,正在运行的代码与自身存储的升级代码不同,则说明逻辑配置芯片中正在运行的不是正确的升级代码,即所述逻辑配置芯片从FLASH2中加载的代码与升级代码不同,也就是说,对FLASH2中的代码升级失败。

可选的,在本发明的另一个实施例中,所述主控设备601还用于:

如果判断所述逻辑配置芯片从所述第二存储器603加载所述升级代码失败,则重复将升级代码通过所述逻辑配置芯片,存储到所述第二存储器603,并判断所述逻辑配置芯片从所述第二存储器603加载所述升级代码是否成功;

具体的,如果对FLASH2当中的代码升级失败,是不允许将存储到FLASH2中的升级代码存储到FLASH1中的,即不允许对FLASH1中的代码进行升级,以免对FLASH1中的代码升级也失败,导致逻辑配置芯片无法工作。当主控设备601判断所述逻辑配置芯片从FLASH2中加载所述升级代码失败,即对FLASH2中的代码升级失败时,本发明实施例检查升级代码是否正确,以及检查需要进行代码升级的逻辑配置芯片是否存在硬件故障。如果升级代码错误或逻辑配置芯片存在硬件故障,则首先更换正确的升级代码,以及排除逻辑配置芯片故障。当确认升级代码正确,且逻辑配置芯片没有硬件故障时,进行重复多次FLASH2动态加载,并复位逻辑配置芯片,使逻辑配置芯片从FLASH2中读取代码进行重配置,进一步判断逻辑配置芯片从FLASH2中加载所述升级代码是否成功。

如果在设定的重复次数内,判断所述逻辑配置芯片从所述第二存储器603加载所述升级代码均失败,则确认所述逻辑配置芯片从所述第二存储器603加载所述升级代码失败;

如果在设定的重复次数中的某一次判断中,判断所述逻辑配置芯片从所述第二存储器603加载所述升级代码成功,则停止重复将升级代码通过所述逻辑配置芯片,存储到所述第二存储器603,并向所述控制器604发送存储器切换指令。

具体的,如果在设定的重复次数内,逻辑配置芯片均不能从FLASH2中成功加载所述升级代码,则说明逻辑配置芯片从FLASH2中加载升级代码确实是不能成功。也就是说,设定次数的,重复将升级代码存储到FLASH2中均失败。此时,应当停止对存储器中的代码的升级工作,进一步检查软硬件方面的问题。

如果逻辑配置芯片在某一次从FLASH2中加载所述升级代码的过程中,成功地从FLASH2中加载了所述升级代码,则说明已经成功地将升级代码存储到FLASH2中,即对FLASH2中代码升级成功,此时,停止重复将升级代码存储到FLASH2中。

可选的,在本发明的另一个实施例中,所述主控设备601将所述升级代码通过所述逻辑配置芯片,存储到所述第一存储器602之后,所述主控设备601还用于:

判断所述逻辑配置芯片从所述第一存储器602加载所述升级代码是否成功;

具体的,虽然FLASH2与FLASH1是完全相同的存储器,但是,由于偶然因素或线路问题,对FLASH2中的代码升级成功,并不意味着对FLASH1中的代码升级一定成功。因此,为了保证对FLASH1中的代码升级成功,确保逻辑配置芯片正常工作,本发明实施例在将升级代码存储到FLASH1中之后,进一步判断是否存储成功,即判断是否对FLASH1中的代码升级成功。

判断的方法,同样是复位逻辑配置芯片,使逻辑配置芯片从FLASH1中加载升级代码并进行重配置,如果逻辑配置芯片从FLASH1中加载升级代码成功,则说明对FLASH1中的代码升级成功。具体的,在逻辑配置芯片复位并从FLASH1中加载代码重配置之后,主控设备601读取逻辑配置芯片中运行的代码,并与升级代码进行对比,如果逻辑配置芯片中运行的代码与升级代码相同,则说明逻辑配置芯片从FLASH1中加载升级代码成功,即将升级代码存储到FLASH1成功;否则,则说明逻辑配置芯片从FLASH1中加载升级代码失败,即将升级代码存储到FLASH1失败。

如果所述逻辑配置芯片从所述第一存储器602加载所述升级代码失败,则重复将升级代码通过所述逻辑配置芯片,存储到所述第一存储器602,并判断所述逻辑配置芯片从所述第一存储器602加载所述升级代码是否成功;

具体的,当主控设备601判断所述逻辑配置芯片从FLASH1中加载所述升级代码失败,即对FLASH1中的代码升级失败时,本发明实施例检查升级代码是否正确,以及检查需要进行代码升级的逻辑配置芯片是否存在硬件故障。如果升级代码错误或逻辑配置芯片存在硬件故障,则首先更换正确的升级代码,以及排除逻辑配置芯片故障。当确认升级代码正确,且逻辑配置芯片没有硬件故障时,进行重复多次FLASH1动态加载,并复位逻辑配置芯片,使逻辑配置芯片从FLASH1中读取代码进行重配置,进一步判断逻辑配置芯片从FLASH1中加载所述升级代码是否成功。

如果在设定的重复次数内,判断所述逻辑配置芯片从所述第一存储器602加载所述升级代码均失败,则确认所述逻辑配置芯片从所述第一存储器602加载所述升级代码失败;

如果在设定的重复次数中的某一次判断中,判断所述逻辑配置芯片从所述第一存储器602加载所述升级代码成功,则停止重复将升级代码通过所述逻辑配置芯片,存储到所述第一存储器602。

具体的,如果在设定的重复次数内,逻辑配置芯片均不能从FLASH1中成功加载所述升级代码,则说明逻辑配置芯片从FLASH1中加载升级代码确实是不能成功。也就是说,将升级代码存储到FLASH1中均失败。此时,应当进一步检查软硬件方面的问题。

如果逻辑配置芯片在某一次从FLASH1加载所述升级代码的过程中,成功地从FLASH1中加载了所述升级代码,则说明已经成功地将升级代码存储到FLASH1中,即对FLASH1中代码升级成功,此时,停止重复将升级代码存储到FLASH1中。

可选的,在本发明的另一个实施例中,所述控制器604,在断开逻辑配置芯片与第一存储器602的连接,并完成所述逻辑配置芯片与第二存储器603的连接之后,在复位所述逻辑配置芯片之前,还用于:

接收所述第二存储器603发送的表征存储所述升级代码完成的信息。

具体的,当将升级代码存储到FLASH2完成时,FLASH2通过CTRL2向控制器604发送表征存储升级代码完成的信息。控制器604收到所述表征存储升级代码完成的信息后,确认将升级代码存储到FLASH2完成,然后,控制器604执行复位逻辑配置芯片的动作。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1