《机架式服务器系统的固件更新方法及其装置.pdf》由会员分享,可在线阅读,更多相关《机架式服务器系统的固件更新方法及其装置.pdf(19页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104102519A43申请公布日20141015CN104102519A21申请号201410356833122申请日20140724G06F9/44520060171申请人英业达科技有限公司地址201114上海市闵行区漕河泾出口加工区浦星路789号申请人英业达股份有限公司72发明人杨浩锐74专利代理机构上海翼胜专利商标事务所普通合伙31218代理人孙佳胤翟羽54发明名称机架式服务器系统的固件更新方法及其装置57摘要本发明公开了一种机架式服务器系统的固件更新方法,适用于通过一控制芯片模组更新一待更新芯片模组的固件,所述更新方法包括以下步骤通过所述控制芯片模组发送可形成一更新。
2、固件的多个数据包给所述待更新芯片模组;通过所述控制芯片模组发送一验证所述多个数据包的命令至所述待更新芯片模组;通过所述控制芯片模组从所述待更新芯片模组获得所述多个数据包对应的多个验证信息;通过所述控制芯片模组判断所述多个数据包对应的多个验证信息是否全部正确,以确认所述待更新芯片模组收到的所述多个数据包是否出错。本发明能够有效解决现有技术中更新固件缓慢和耗时较长的问题,从而可以节省大量更新时间,使得更新固件的速度大幅提升。51INTCL权利要求书3页说明书11页附图4页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书11页附图4页10申请公布号CN104102519ACN10。
3、4102519A1/3页21一种机架式服务器系统的固件更新方法,适用于通过一控制芯片模组更新一待更新芯片模组的固件,其中所述控制芯片模组为一机架式服务器系统的一机架管理控制器,所述机架式服务器系统包括连接所述机架管理控制器的至少一服务器,所述至少一服务器包含所述待更新芯片模组,所述机架管理控制器可控制所述至少一服务器的开机与关机,其特征在于,所述更新方法包括以下步骤通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组;通过所述控制芯片模组发送一验证所述多个数据包的命令至所述待更新芯片模组;通过所述控制芯片模组从所述待更新芯片模组获得所述多个数据包对应的多个验证信息;通过所述。
4、控制芯片模组判断所述多个数据包对应的多个验证信息是否全部正确,以确认所述待更新芯片模组收到的所述多个数据包是否出错。2根据权利要求1所述的机架式服务器系统的固件更新方法,其特征在于,在通过所述控制芯片模组判断所述多个数据包对应的多个验证信息是否正确的步骤中,包括若其中有验证信息不正确,进一步包括A、通过所述控制芯片模组将出错的验证信息所对应的数据包重新发送给所述待更新芯片模组;B、通过所述控制芯片模组从所述待更新芯片模组获得重新发送给所述待更新芯片模组的数据包对应的验证信息;C、通过所述控制芯片模组判断重新发送给所述待更新芯片模组的数据包对应的验证信息是否正确;若正确,则所述控制芯片模组重新发。
5、送给所述待更新芯片模组的数据包没有出错,若不正确,循环执行步骤A、B、C,直到所述控制芯片模组从所述待更新芯片模组获得的验证信息中不存在错误的验证信息。3根据权利要求1所述的机架式服务器系统的固件更新方法,其特征在于,在通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组的步骤之前,进一步包括通过所述控制芯片模组将更新固件分解成所述多个数据包。4根据权利要求1所述的机架式服务器系统的固件更新方法,其特征在于,在通过所述控制芯片模组判断所述多个数据包对应的多个验证信息是否正确的步骤中,包括若所述多个验证信息正确,则待更新芯片模组收到的各数据包没有出错。5根据权利要求1所述的机。
6、架式服务器系统的固件更新方法,其特征在于,所述待更新芯片模组是一具有固件的芯片,所述具有固件的芯片设置于一服务器的一主板上。6根据权利要求1所述的机架式服务器系统的固件更新方法,其特征在于,在通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组的步骤之前进一步包括通过所述控制芯片模组发送一更新开始命令至所述待更新芯片模组;通过所述控制芯片模组从所述待更新芯片模组获得一运行状态信息;通过所述控制芯片模组判断所述运行状态信息是否为一第一运行状态,若不是,则所述待更新芯片模组切换为第一运行状态。权利要求书CN104102519A2/3页37根据权利要求6所述的机架式服务器系统的固。
7、件更新方法,其特征在于,在通过所述控制芯片模组发送一更新开始命令至所述待更新芯片模组的步骤之后进一步包括通过所述控制芯片模组从所述待更新芯片模组等待接收一运行状态信息;若等待接收的时间超过一预设的第一时间阈值时,则所述控制芯片模组重新发送一更新开始命令至所述待更新芯片模组,并且记录重新发送更新开始命令的次数。8根据权利要求7所述的机架式服务器系统的固件更新方法,其特征在于,在所述控制芯片模组重新发送一更新开始命令至所述待更新芯片模组,并且记录重新发送更新开始命令的次数的步骤之后,进一步包括通过所述控制芯片模组判断重新发送更新开始命令的次数是否大于一预设的重发次数最大值;若是,则停止更新固件的操。
8、作。9根据权利要求2所述的机架式服务器系统的固件更新方法,其特征在于,在所述控制芯片模组从所述待更新芯片模组获得的验证信息中不存在错误的验证信息的步骤之后,进一步包括通过所述控制芯片模组发送一完成更新固件的命令至所述待更新芯片模组;通过所述控制芯片模组从所述待更新芯片模组获得一完成更新固件的响应,所述待更新芯片模组已标记为一固件更新成功状态。10一种固件更新装置,适用于通过一控制芯片模组更新一待更新芯片模组的固件,所述控制芯片模组为一机架式服务器系统的一机架管理控制器,所述机架式服务器系统包括连接所述机架管理控制器的至少一服务器,所述至少一服务器包含所述待更新芯片模组,所述机架管理控制器可控制。
9、所述至少一服务器的开机与关机,其特征在于,所述固件更新装置包括数据包发送模块,用以通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组;验证信息请求模块,与所述数据包发送模块相连,用以通过所述控制芯片模组发送一验证所述多个数据包的命令至所述待更新芯片模组;验证信息获取模块,与所述验证信息请求模块相连,用以通过所述控制芯片模组从所述待更新芯片模组获得所述多个数据包对应的多个验证信息;验证信息判断模块,与所述验证信息获取模块相连,用以通过所述控制芯片模组判断所述多个数据包对应的多个验证信息是否全部正确,以确认所述待更新芯片模组收到的所述多个数据包是否出错。11根据权利要求10所。
10、述固件更新装置,其特征在于,进一步包括数据包重发模块,与所述验证信息判断模块相连,用于在所述多个验证信息中有验证信息不正确,通过所述控制芯片模组将出错的验证信息所对应的数据包重新发送给所述待更新芯片模组;验证信息重获模块,与所述数据包重发模块相连,用于通过所述控制芯片模组从所述待更新芯片模组获得重新发送给所述待更新芯片模组的数据包对应的验证信息;验证信息重判模块,与所述验证信息重获模块相连,用于通过所述控制芯片模组判断重新发送给所述待更新芯片模组的数据包对应的验证信息是否正确,当验证信息不正确权利要求书CN104102519A3/3页4时,调用所述数据包重发模块。12根据权利要求10所述固件更。
11、新装置,其特征在于,所述待更新芯片模组是一具有固件的芯片,所述具有固件的芯片设置于一服务器的一主板上。13根据权利要求10所述固件更新装置,其特征在于,进一步包括更新开始命令发送模块,用以通过所述控制芯片模组发送一更新开始命令至所述待更新芯片模组;运行状态获取模块,与所述更新开始命令发送模块相连,用以通过所述控制芯片模组从所述待更新芯片模组获得一运行状态信息;运行状态判断模块,与所述运行状态获取模块相连,用以通过所述控制芯片模组判断所述运行状态信息是否为一第一运行状态,若不是,则所述待更新芯片模组切换为第一运行状态。14根据权利要求13所述固件更新装置,其特征在于,进一步包括等待接收模块,用以。
12、通过所述控制芯片模组从所述待更新芯片模组等待接收一运行状态信息;更新开始命令重发模块,与所述等待接收模块相连,用以若等待接收的时间超过一预设的第一时间阈值时,则所述控制芯片模组重新发送一更新开始命令至所述待更新芯片模组,并且记录重新发送更新开始命令的次数。15根据权利要求14所述固件更新装置,其特征在于,进一步包括重发次数判断模块,用以通过所述控制芯片模组判断重新发送更新开始命令的次数是否大于一预设的重发次数最大值,若是,则停止更新固件的操作。16根据权利要求11所述固件更新装置,其特征在于,进一步包括完成更新请求模块,用以通过所述控制芯片模组发送一完成更新固件的命令至所述待更新芯片模组;完成。
13、更新响应模块,与所述完成更新请求模块相连,用以通过所述控制芯片模组从所述待更新芯片模组获得一完成更新固件的响应,所述待更新芯片模组已标记为一固件更新成功状态。权利要求书CN104102519A1/11页5机架式服务器系统的固件更新方法及其装置技术领域0001本发明涉及服务器架构领域,具体的说,是一种机架式服务器系统的固件更新方法及其装置,适用于通过一控制芯片模组更新一待更新芯片模组的固件。背景技术0002目前服务器广为各企业所使用,发展的范围除了结合国际网络与电信业务的应用外,也更深入到普通人的生活中,例如金融、财经、网络银行等,这些都必须依托服务器强大的运算能力。0003如今服务器的种类有很。
14、多种,比较常见的有机架式服务器与塔式服务器。其中,机架服务器是一种优化结构的塔式服务器,其设计宗旨主要是为了尽可能减少服务器空间的占用。一般而言,机架服务器的宽度为19英寸,高度以U为单位1U4445毫米,通常有1U,2U,4U,5U等几种标准的服务器。而为了要提升目前服务器的基板的应用层面,系统厂商通常会将服务器的基板设计成可以与各种类型例如1U,2U及4U的系统相容。0004而在服务器机架系统中的主板包含了多种嵌入式芯片例如作为控制芯片、计算功耗芯片的CORTEXM3或CORTEX4芯片等,这些嵌入式芯片都需要固件来配合运行。倘若在服务器机架系统出货之后,需要更新上述芯片的固件,可以采用的。
15、做法是通过一设置在服务器机架内的机架管理控制器RACKMANAGEMENTCONTROLLER,简称RMC来进行更新。该机架管理控制器包括一ARM9芯片,且运行于一嵌入式LINUX系统。当需要更新服务器机架系统中某一主板的嵌入式芯片的固件时,由机架管理控制器读取固件文件,并且将固件文件分解成若干个数据包发送至待更新的芯片。在现有的更新方法中,每发送一个数据包,机架管理控制器均会等待芯片的返回,并且检查数据包CRC是否正确,若正确才会发送下一个数据包。于是,目前更新芯片固件比较缓慢,用时较长。0005有鉴于此,亟需提供一种新的机架式服务器系统的固件更新方法或装置来解决上述问题。发明内容0006本。
16、发明的目的在于,提供一种机架式服务器系统的固件更新方法,其能够有效解决现有技术中更新固件缓慢和耗时较长的问题,从而可以节省大量更新时间,使得更新固件的速度大幅提升。0007为实现上述目的,本发明提供一种机架式服务器系统的固件更新方法,适用于通过一控制芯片模组更新一待更新芯片模组的固件,所述控制芯片模组为一机架式服务器系统的一机架管理控制器,所述机架式服务器系统包括连接所述机架管理控制器的至少一服务器,所述至少一服务器包含所述待更新芯片模组,所述机架管理控制器可控制所述至少一服务器的开机与关机,所述更新方法包括以下步骤通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组;通过。
17、所述控制芯片模组发送一验证所述多个数据包的命令至所述待更新芯片模组;通过所述控制芯片模组从所述待更新芯片模组说明书CN104102519A2/11页6获得所述多个数据包对应的多个验证信息;通过所述控制芯片模组判断所述多个数据包对应的多个验证信息是否全部正确,以确认所述待更新芯片模组收到的所述多个数据包是否出错。0008作为可选的技术方案,在通过所述控制芯片模组判断所述多个数据包对应的多个验证信息是否正确的步骤中,包括若其中有验证信息不正确,进一步包括A、通过所述控制芯片模组将出错的验证信息所对应的数据包重新发送给所述待更新芯片模组;B、通过所述控制芯片模组从所述待更新芯片模组获得重新发送给所述。
18、待更新芯片模组的数据包对应的验证信息;C、通过所述控制芯片模组判断重新发送给所述待更新芯片模组的数据包对应的验证信息是否正确;若正确,则所述控制芯片模组重新发送给所述待更新芯片模组的数据包没有出错,若不正确,循环执行步骤A、B、C,直到所述控制芯片模组从所述待更新芯片模组获得的验证信息中不存在错误的验证信息。0009作为可选的技术方案,在通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组的步骤之前,进一步包括通过所述控制芯片模组将更新固件分解成所述多个数据包。0010作为可选的技术方案,在通过所述控制芯片模组判断所述多个数据包对应的多个验证信息是否正确的步骤中,包括若所述。
19、多个验证信息正确,则待更新芯片模组收到的各数据包没有出错。0011作为可选的技术方案,所述待更新芯片模组是一具有固件的芯片,所述具有固件的芯片设置于一服务器的一主板上。0012作为可选的技术方案,通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组的步骤之前进一步包括通过所述控制芯片模组发送一更新开始命令至所述待更新芯片模组;通过所述控制芯片模组从所述待更新芯片模组获得一运行状态信息;通过所述控制芯片模组判断所述运行状态信息是否为一第一运行状态,若不是,则所述待更新芯片模组切换为第一运行状态。0013作为可选的技术方案,在通过所述控制芯片模组发送一更新开始命令至所述待更新芯。
20、片模组的步骤之后进一步包括通过所述控制芯片模组从所述待更新芯片模组等待接收一运行状态信息;若等待接收的时间超过一预设的第一时间阈值时,则所述控制芯片模组重新发送一更新开始命令至所述待更新芯片模组,并且记录重新发送更新开始命令的次数。0014作为可选的技术方案,在所述控制芯片模组重新发送一更新开始命令至所述待更新芯片模组,并且记录重新发送更新开始命令的次数的步骤之后,进一步包括通过所述控制芯片模组判断重新发送更新开始命令的次数是否大于一预设的重发次数最大值;若是,则停止更新固件的操作。0015作为可选的技术方案,在所述控制芯片模组从所述待更新芯片模组获得的验证信息中不存在错误的验证信息的步骤之后。
21、,进一步包括通过所述控制芯片模组发送一完成更新固件的命令至所述待更新芯片模组;通过所述控制芯片模组从所述待更新芯片模组获得一完成更新固件的响应,所述待更新芯片模组已标记为一固件更新成功状态。0016本发明的另一目的在于,提供一种固件更新装置,适用于通过一控制芯片模组更新一待更新芯片模组的固件,所述控制芯片模组为一机架式服务器系统的一机架管理控制说明书CN104102519A3/11页7器,所述机架式服务器系统包括连接所述机架管理控制器的至少一服务器,所述至少一服务器包含所述待更新芯片模组,所述机架管理控制器可控制所述至少一服务器的开机与关机,所述固件更新装置包括数据包发送模块,用以通过所述控制。
22、芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组;验证信息请求模块,与所述数据包发送模块相连,用以通过所述控制芯片模组发送一验证所述多个数据包的命令至所述待更新芯片模组;验证信息获取模块,与所述验证信息请求模块相连,用以通过所述控制芯片模组从所述待更新芯片模组获得所述多个数据包对应的多个验证信息;验证信息判断模块,与所述验证信息获取模块相连,用以通过所述控制芯片模组判断所述多个数据包对应的多个验证信息是否全部正确,以确认所述待更新芯片模组收到的所述多个数据包是否出错。0017作为可选的技术方案,所述固件更新装置进一步包括数据包重发模块,与所述验证信息判断模块相连,用于在所述多个验证。
23、信息中有验证信息不正确,通过所述控制芯片模组将出错的验证信息所对应的数据包重新发送给所述待更新芯片模组;验证信息重获模块,与所述数据包重发模块相连,用于通过所述控制芯片模组从所述待更新芯片模组获得重新发送给所述待更新芯片模组的数据包对应的验证信息;验证信息重判模块,与所述验证信息重获模块相连,用于通过所述控制芯片模组判断重新发送给所述待更新芯片模组的数据包对应的验证信息是否正确,当验证信息不正确时,调用所述数据包重发模块。0018作为可选的技术方案,所述待更新芯片模组是一具有固件的芯片,所述具有固件的芯片设置于一服务器的一主板上。0019作为可选的技术方案,所述固件更新装置进一步包括更新开始命。
24、令发送模块,用以通过所述控制芯片模组发送一更新开始命令至所述待更新芯片模组;运行状态获取模块,与所述更新开始命令发送模块相连,用以通过所述控制芯片模组从所述待更新芯片模组获得一运行状态信息;运行状态判断模块,与所述运行状态获取模块相连,用以通过所述控制芯片模组判断所述运行状态信息是否为一第一运行状态,若不是,则所述待更新芯片模组切换为第一运行状态。0020作为可选的技术方案,所述固件更新装置进一步包括等待接收模块,用以通过所述控制芯片模组从所述待更新芯片模组等待接收一运行状态信息;更新开始命令重发模块,与所述等待接收模块相连,用以若等待接收的时间超过一预设的第一时间阈值时,则所述控制芯片模组重。
25、新发送一更新开始命令至所述待更新芯片模组,并且记录重新发送更新开始命令的次数。0021作为可选的技术方案,所述固件更新装置进一步包括重发次数判断模块,用以通过所述控制芯片模组判断重新发送更新开始命令的次数是否大于一预设的重发次数最大值,若是,则停止更新固件的操作。0022作为可选的技术方案,所述固件更新装置进一步包括完成更新请求模块,用以通过所述控制芯片模组发送一完成更新固件的命令至所述待更新芯片模组;完成更新响应模块,与所述完成更新请求模块相连,用以通过所述控制芯片模组从所述待更新芯片模组获得一完成更新固件的响应,所述待更新芯片模组已标记为一固件更新成功状态。0023本发明的优点在于,通过所。
26、述机架式服务器系统的固件更新方法及其装置,能够有效解决现有技术更新芯片固件缓慢和耗时较长的问题,从而可以节省大量更新时间,提升更新固件的速度,以进一步提高升级工作的效率。说明书CN104102519A4/11页8附图说明0024图1是本发明一实施例中机架式服务器系统的固件更新方法的具体实施步骤流程示意图。0025图2是现有机架式服务器系统的固件更新方法的信息交互示意图。0026图3是本发明所述机架式服务器系统的固件更新方法的信息交互示意图。0027图4是本发明一实施例中所述固件更新装置所在服务器的架构示意图。0028图5是本发明一实施例中所述固件更新装置的架构图。具体实施方式0029下面结合附。
27、图对本发明提供的所述机架式服务器系统的固件更新方法及其装置的具体实施做详细说明。0030图1是本发明一实施例中机架式服务器系统的固件更新方法具体实施步骤流程示意图。参见图1所示,本发明提供一种机架式服务器系统的固件更新方法,适用于通过一控制芯片模组更新一待更新芯片模组的固件。在本实施例中,所述控制芯片模组为一机架式服务器系统的一机架管理控制器RACKMANAGEMENTCONTROLLER,简称RMC,以对待更新芯片模组所具有固件的芯片进行固件更新。所述机架式服务器系统包括连接所述机架管理控制器的至少一服务器,所述至少一服务器包含所述待更新芯片模组,所述机架管理控制器可控制所述至少一服务器的开。
28、机与关机。所述机架管理控制器具有一ARM系列芯片例如ARM9芯片且运行着一嵌入式LINUX系统,但不以此限定本发明请求保护的范围。在其他实施例中,所述控制芯片模组也可以为一服务器的一基板管理控制器,所述基板管理控制器可控制所述服务器的开机与关机,所述服务器包含所述待更新芯片模组。此外,所述待更新芯片模组是一具有固件的芯片,所述具有固件的芯片设置于一服务器的一主板上。所述待更新芯片模组可以控制风扇转速的控制芯片,或可以计算功耗的芯片等。所述机架管理控制器将所取得的供更新使用的固件分解成若干个数据包,以便后续发送给需要更新的节点。0031本发明所述机架式服务器系统的固件更新方法包括以下步骤步骤S1。
29、01、通过所述控制芯片模组发送一更新开始命令至所述待更新芯片模组;步骤S103、通过所述控制芯片模组从所述待更新芯片模组获得一运行状态信息;步骤S105、通过所述控制芯片模组判断所述运行状态信息是否为一第一运行状态,若不是,则所述待更新芯片模组切换为第一运行状态;步骤S110、通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组;步骤S120、通过所述控制芯片模组发送一验证所述多个数据包的命令至所述待更新芯片模组;步骤S130、通过所述控制芯片模组从所述待更新芯片模组获得所述多个数据包对应的多个验证信息;步骤S140、通过所述控制芯片模组判断所述多个数据包对应的多个验证信息。
30、是否全部正确,以确认所述待更新芯片模组收到的所述多个数据包是否出错;步骤S151、通过所述控制芯片模组将出错的验证信息所对应的数据包重新发送给所述待更新芯片模组;步骤S153、通过所述控制芯片模组从所述待更新芯片模组获得重新发送给所述待更新芯片模组的数据包对应的验证信息;步骤S155、通过所述控制芯片模组判断重新发送给所述待更新芯片模组的数据包对应的验证信息是否正确;若正确,则所述说明书CN104102519A5/11页9控制芯片模组重新发送给所述待更新芯片模组的数据包没有出错,若不正确,循环执行步骤S151、S153、S155,直到所述控制芯片模组从所述待更新芯片模组获得的验证信息中不存在错。
31、误的验证信息;步骤S161、通过所述控制芯片模组发送一完成更新固件的命令至所述待更新芯片模组;步骤S163、通过所述控制芯片模组从所述待更新芯片模组获得一完成更新固件的响应,所述待更新芯片模组已标记为一固件更新成功状态。0032以下将对上述步骤进一步详细描述。0033在步骤S101中,所述控制芯片模组发送一更新开始命令至所述待更新芯片模组,以尝试与所述待更新芯片模组建立一物理链路。其中,所述待更新芯片模组为一具有固件的芯片,具有固件的芯片设置于一服务器的一主板上。所述更新开始命令中包含更新固件应用程序的首地址、每一数据包的大小以及数据包的数量等信息。当发送该更新开始命令后,表示准备开始更新固件。
32、,并且等待所述待更新芯片模组的回复。0034在步骤S103中,在所述待更新芯片模组接收到更新开始命令后,通过所述控制芯片模组等待接收从所述待更新芯片模组返回的一运行状态信息,所述运行状态信息也就是设置在待更新芯片模组的芯片所属的主板的当前运行状态,包括BOOTCODE和RUNTIME两种运行状态,BOOTCODE运行状态用于更新固件操作,而RUNTIME运行状态用于主板正常工作。0035在步骤S105中,接着,通过所述控制芯片模组判断所述运行状态信息是否为一第一运行状态即能够进行更新固件的状态,例如BOOTCODE运行状态,若设置在待更新芯片模组的芯片所属的主板的当前运行状态为RUNTIME运。
33、行状态,则自动切换至BOOTCODE运行状态,从而为后继的更新固件做好准备。即,BOOTCODE运行状态能够进行更新固件,RUNTIME运行状态不能够进行更新固件。需注意的是,若所述控制芯片模组判断等待接收的时间超过一预设的第一时间阈值时,则所述控制芯片模组重新发送一更新开始命令至所述待更新芯片模组,并且记录重新发送更新开始命令的次数。进一步,所述控制芯片模组判断重新发送更新开始命令的次数是否大于一预设的重发次数最大值,若是,则停止更新固件的操作。为了保证更新固件工作的效率,在本发明的实施例中,设有一重发次数最大值,例如3次,若重新发送更新开始命令的次数超过3次后,停止建立物理链接,即停止更新。
34、固件操作。上述步骤S101S105是可选步骤,用于使所述控制芯片模组尝试与所述待更新芯片模组建立物理链接。由于可能受环境因素例如网络环境的影响,不能保证所述控制芯片模组首次就能够与所述待更新芯片模组成功建立物理链接,因此允许所述控制芯片模组多次尝试与所述待更新芯片模组建立物理链接。0036在步骤S110中,通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组,并且开始连续不中断的发送多个包含更新固件的数据包给所述待更新芯片模组,直至所述多个数据包发送完毕。在通过所述控制芯片模组发送可形成一更新固件的多个数据包给所述待更新芯片模组的步骤之前,进一步包括通过所述控制芯片模组将更。
35、新固件分解成所述多个数据包。当需要更新所述待更新芯片模组例如服务器机架系统中任一主板的嵌入式芯片的固件时,所述控制芯片模组首先读取更新固件,然后将所述更新固件拆分为多个数据包,以准备之后发送至所述待更新芯片模组。在本发明的实施例中,所述控制芯片模组会先发送一更新固件的命令例如,SETFWIMAGE命令至所述待更新芯片模组,接着开始连续不中断的发送多个包含更新固件的数据包给所述待更新芯片模组即待更新固件的芯片的引导代码BOOTCODE,直至所述多个数据包发送完毕,以保说明书CN104102519A6/11页10证所述更新固件的数据包能够被快速且可靠的传输。0037在步骤S120中,通过所述控制芯。
36、片模组发送一验证所述多个数据包的命令至所述待更新芯片模组,以验证待更新芯片模组所接收的所述多个数据包是否正确由于在传送过程中数据包可能会出错。当更新固件被拆分为多个数据包进行传送时,需要对所传送的多个数据包进行CRC即CYCLICREDUNDANCYCHECK的缩写,循环冗余校验验证,以保证所传送的更新固件的完整性和可靠性。在本发明的实施例中,通过发送一验证所述多个数据包的命令例如,CHECKFWIMAGE命令至所述待更新芯片模组,以获取所述多个数据包的多个验证信息。同时,经研究,发现现有技术造成目前更新芯片固件缓慢和耗时较长的原因在于,在现有机架式服务器系统的固件更新方法中,控制芯片模组每次。
37、发送一个数据包给待更新芯片模组,都会等待所述待更新芯片模组即设置在待更新芯片模组中的芯片返回单个被传送数据包的CRC信息,然后控制芯片模组再检查该单个数据包的CRC信息是否正确,若正确才会再依次发送下一个数据包,若不正确则重新发送该单个数据包。由于每发送完一个数据包后均需要等待所述待更新芯片模组的响应,若数据包较多即更新固件较大,于是会花费较长的等待时间,以至造成现有技术更新芯片固件缓慢和耗时较长的情况。而在本发明的实施例中,所述控制芯片模组将不再每发送一个数据包后等待待更新芯片模组的响应,而是连续不中断且一次性将所有数据包全部发送完毕,再检验所述多个数据包的多个CRC信息包括正确及出错的全部。
38、CRC信息。0038在步骤S130中,通过所述控制芯片模组接收从所述待更新芯片模组返回的所述多个数据包的多个验证信息。0039在步骤S140中,通过所述控制芯片模组判断所述多个数据包对应的多个验证信息是否全部正确。若其中某个验证信息不正确,则说明其所对应的数据包出错。若不正确,则控制芯片模组会进一步发送一重新更新固件的命令例如,RESETFWIMAGE命令至所述待更新芯片模组,并且将其中出错的数据包重新发送给所述待更新芯片模组,具体步骤如下文所述。0040在步骤S140之后进一步包括步骤S151、通过所述控制芯片模组将出错的验证信息所对应的所有出错的数据包重新统一发送给所述待更新芯片模组;步骤。
39、S153、通过所述控制芯片模组从所述待更新芯片模组获得重新发送给所述待更新芯片模组的数据包对应的验证信息;步骤S155、通过所述控制芯片模组判断重新发送给所述待更新芯片模组的数据包对应的验证信息是否正确;若正确,则所述控制芯片模组重新发送给所述待更新芯片模组的数据包没有出错,若不正确,循环执行步骤S151、S153、S155,直到所述控制芯片模组从所述待更新芯片模组获得的验证信息中不存在错误的验证信息即多个验证信息为全部正确。0041通过循环执行步骤S151、S153和S155,以保证所述多个数据包均正确,即所述芯片所获得的更新固件是正确的。另外,在将其中所有出错的数据包一次性地重新发送的过程。
40、中,重新发送的数据包个数为当前出错的数据包的最大值,并且等待一次响应。例如总共出错的数据包为3个,则将该3个出错的数据包再一次统一的发送,并且等待1次响应。而在现有技术中,重新发送数据包次数为当前出错的数据包个数的累加值,并且等待多次响应。例如,总共出错的数据包为3个,则第一次将第一个数据包进行重发,并且等待第一次响应,第二次将第二数据包进行重发,并且等待第二次响应,第三次将第三数据包进行重说明书CN104102519A107/11页11发,并且等待第三次响应。因此本发明能够有效地解决在发送多个数据包过程中繁琐地等待待更新芯片模组响应这一步骤,从而节约大量时间,提升了固件更新速度。0042在步。
41、骤S155之后,可以进一步包括步骤S161、通过所述控制芯片模组发送一完成更新固件的命令至所述待更新芯片模组;步骤S163、通过所述控制芯片模组从所述待更新芯片模组获得一完成更新固件的响应,所述待更新芯片模组已标记为一固件更新成功状态。0043当所述多个数据包的多个验证信息全部正确之后,所述控制芯片模组发送一完成更新固件的命令例如,COMPLETE命令至所述待更新芯片模组。所述待更新芯片模组接收到完成更新固件的命令后,更新固件标识例如FLAG1,表示固件更新成功,同时该标识也用于BOOTCODE/RUNTIME运行状态的切换,因此该标识也可以被称为切换模式标识,并执行固件更新应用程序,之后并返。
42、回一完成更新固件的响应至控制芯片模组。在执行固件更新应用程序过程中,提供两种方式。优选的,一种方式是设置在所述待更新芯片模组中的芯片先将所有数据包在随机存取内存即RAM中收集,然后再写入只读内存即ROM中,以更新固件。另一种方式是所述芯片一边在RAM中收集数据包,一边将其写入至ROM中,从而完成更新固件的操作。所述控制芯片模组接收到从所述待更新芯片模组返回的一完成更新固件的响应后,表示所述固件更新已完成。需注意的是,设置在待更新芯片模组的芯片所属的主板重新启动后,会自动检查更新固件标识,若发现FLAG1时,会自动切换至RUNTIME运行状态。0044以下将提供一实施例,并结合图2和图3来进一步。
43、说明本发明所述机架式服务器系统的固件更新方法及现有技术机架式服务器系统的固件更新方法。0045图2是现有机架式服务器系统的固件更新方法的信息交互示意图。图3是本发明所述机架式服务器系统的固件更新方法的信息交互示意图。0046参考图2所示,假设发送一个数据包需要1秒,等待响应需要1S,一共发送10个包。0047步骤S211通过控制芯片模组发送第一个数据包至待更新芯片模组。0048步骤S212通过控制芯片模组发送数据包验证信息命令至待更新芯片模组。0049步骤S213通过控制芯片模组接收第一个数据包的验证信息。0050步骤S214通过控制芯片模组判断验证信息是否正确,若正确,则发送第二个数据包。0。
44、051步骤S215通过控制芯片模组发送第N个数据包至待更新芯片模组,其中N为小于10。0052步骤S216通过控制芯片模组发送第N个数据包的验证信息命令至待更新芯片模组。0053步骤S217通过控制芯片模组接收第N个数据包的验证信息。0054步骤S218通过控制芯片模组判断该第N个数据包的验证信息是否正确,若不正确,重新发送第N个数据包。0055步骤S219通过控制芯片模组再次判断第N个数据包的验证信息是否正确,若正确,则发送第N1个数据包。0056因此,由上述流程可知,若发送10个数据包过程中,未有出错包的情况下,需花时说明书CN104102519A118/11页12间约为20秒。当出错1个。
45、数据包的情况下,需花时间约为20秒1秒1秒即22秒。当出错2个数据包的情况下,需花时间约为20秒2秒2秒即24秒。当出错3个数据包的情况下,需花时间约为20秒3秒3秒即26秒。当出错N个数据包的情况下,需花时间约为20秒N秒N秒即20秒2N秒。0057接着,参考图3所示,假设序列式地发送10个数据包需要1秒,等待响应需要1S,一共发送10个包。0058步骤S311通过控制芯片模组发送10个数据包至待更新芯片模组。0059步骤S312通过控制芯片模组发送10个数据包的验证信息命令至待更新芯片模组。0060步骤S313通过控制芯片模组接收10个数据包的验证信息。0061步骤S314通过控制芯片模组。
46、判断10个数据包的验证信息是否正确,若发现有3个数据包不正确,则将其中出错的3个数据包进行第一次的重新发送。0062步骤S315通过控制芯片模组再次判断所述出错的3个包的验证信息是否正确,若正确,则表示完成更新固件的传送,若仍然发现有2个包的验证信息不正确,则将出错的2个数据包进行第二次的重新发送。0063步骤S316通过控制芯片模组再次判断所述出错的2个包的验证信息是否正确,若正确,则表示完成更新固件的传送,若仍然发现有1个包的验证信息不正确,则将出错的1个数据包进行第三次的重新发送。0064步骤S317通过控制芯片模组再次判断所述出错的1个包的验证信息是否正确,若正确,则表示完成更新固件的。
47、传送。0065因此,由上述流程可知,若发送10个数据包过程中,未有出错包的情况下,需花时间近似为2秒假设认为发送1个数据包的时间相当于同时发送10个数据包的时间。在实务操作中,考虑到数据包自身数据的大小以及网络环境,同时发送10个数据包的时间应稍大于发送1个数据包的时间。当第1次有数据包出错的情况下,需花时间约为2秒1秒1秒即4秒。当第2次有数据包出错的情况下,需花时间约为4秒1秒1秒即6秒。当第3次有数据包出错的情况下,需花时间约为6秒1秒1秒即8秒。当第N次有数据包出错的情况下,需花时间约为2N秒1秒1秒即2N2秒。0066因此,上述内容可知,本发明在将所有出错的数据包一次性地重新发送的过。
48、程中,重新发送的数据包个数为当前出错的数据包的最大值,并且等待一次响应。而在现有技术中,重新发送数据包次数为当前出错的数据包个数的累加值,并且等待多次响应。于是,本发明能够有效地解决在发送多个数据包过程中繁琐地等待所述待更新芯片模组响应这一步骤,从而节约大量时间,提升了固件更新速度。0067图4是本发明一实施例中所述固件更新装置所在服务器的架构示意图。参见图4所示,根据本发明一实施例,本发明所述一种固件更新装置500,适用于通过一控制芯片模组410更新一待更新芯片模组420的固件。在本实施例中,所述控制芯片模组410为一机架式服务器系统400的一机架管理控制器,以对待更新芯片模组420所具有固。
49、件的芯片430进行固件更新。所述机架式服务器系统400包括连接所述机架管理控制器的至少一服务器图中未示,所述至少一服务器包含所述待更新芯片模组420,所述机架管理控制器可控制所述至少一服务器的开机与关机。所述机架管理控制器具有一ARM系列芯片且运行着一说明书CN104102519A129/11页13嵌入式LINUX系统,但不以此限定本发明请求保护的范围。在其他实施例中,所述控制芯片模组410也可以为一服务器图中未示的一基板管理控制器,所述基板管理控制器可控制所述服务器的开机与关机,所述服务器包含所述待更新芯片模组420。此外,所述待更新芯片模组420是一具有固件的芯片430,所述具有固件的芯片430设置于一服务器的一主板图中未示上。0068图5是本发明一实施例中所述固件更新装置的架构图。参见图5及图4所示,所述固件更新装置500包括一数据包发送模块510、一验证信息请求模块520、一验证信息获取模块530和一验证信息判断模块540。在本发明一实施例中,所述固件更新装置500可以设置在控制芯片模组内,用于对一服务器机架系统中的至少一主板的至少一芯片进行固件更新。而在其他实施例中,所述固件更新装置500也可以设置在服务器机架系统的其他设备内,以对至少一主板的至少一芯片进行固件更新,当然,所述固件更新装置500也可以是独立一体的。0069其中,数据包发送模块510,用以通过所述控。