《对芯片进行动态升级的方法、系统及基板管理控制器.pdf》由会员分享,可在线阅读,更多相关《对芯片进行动态升级的方法、系统及基板管理控制器.pdf(16页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102308281 A (43)申请公布日 2012.01.04 CN 102308281 A *CN102308281A* (21)申请号 201180001508.8 (22)申请日 2011.07.21 G06F 9/445(2006.01) G06F 1/24(2006.01) (71)申请人 华为技术有限公司 地址 518129 广东省深圳市龙岗区坂田华为 总部办公楼 (72)发明人 刘洪广 张羽 许利霞 (74)专利代理机构 广州三环专利代理有限公司 44202 代理人 郝传鑫 熊永强 (54) 发明名称 对芯片进行动态升级的方法、 系统及基板管 理控制器。
2、 (57) 摘要 本发明涉及通信领域, 特别涉及一种对芯片 进行动态升级的方法、 系统及基板管理控制器, 其 中所述方法包括 : 获取用于对芯片进行升级的升 级文件 ; 基于所述升级文件对用于存储所述芯片 的数据的闪存中的数据进行升级, 并且此时不对 所述芯片进行复位操作 ; 当通过检测获知与所述 芯片相连的业务系统的状态为业务空闲状态时, 将所述闪存中升级之后的数据复制到所述芯片中 的随机存储器中, 并对所述芯片进行复位操作。 本 发明提高了系统的可用度和可维护性。 (85)PCT申请进入国家阶段日 2011.10.21 (86)PCT申请的申请数据 PCT/CN2011/077447 20。
3、11.07.21 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 8 页 附图 4 页 CN 102308288 A1/3 页 2 1. 一种对芯片进行动态升级的方法, 其特征在于, 包括 : 获取用于对芯片进行升级的升级文件 ; 基于所述升级文件对用于存储所述芯片的数据的闪存中的数据进行升级, 并且此时不 对所述芯片进行复位操作 ; 当通过检测获知与所述芯片相连的业务系统的状态为业务空闲状态时, 将所述闪存中 升级之后的数据复制到所述芯片中的随机存储器中, 并对所述芯片进行复位操作。 2. 如权利要求 1 所述的对芯片进行动态升。
4、级的方法, 其特征在于, 当通过检测获知业 务系统的状态为业务空闲状态之后, 将所述闪存中升级之后的数据复制到所述芯片中的随 机存储器中之前, 还包括 : 锁定所述芯片的外围输入输出接口的当前状态。 3. 如权利要求 1 所述的对芯片进行动态升级的方法, 其特征在于, 当获取到用于对芯片进行升级的升级文件时, 对所述获取的升级文件进行循环冗余校 验, 并得到校验结果 ; 当得到的校验结果为所述升级软件无损坏, 则基于所述升级文件对用于存储所述芯片 的数据的闪存中的数据进行升级 ; 当得到的校验结果为所述升级软件损坏, 则通知上层软件升级失败。 4. 如权利要求 1-3 中任一项所述的对芯片进行。
5、动态升级的方法, 其特征在于, 所述闪 存内置或外置于所述芯片, 所述升级文件为 VME 升级文件, 所述基于所述升级文件对用于 存储所述芯片的数据的闪存中的数据进行升级, 并且此时不对所述芯片进行复位操作, 具 体包括 : 获取完整的 VME 升级文件, 并去除所述文件中用于复位芯片的操作指令 ; 执行 VME 升级文件主循环体, 按顺序逐一字节地获取所述 VME 升级文件的内容 ; 对于验证合法的字节数据, 进入对应的分支处理流程, 由所述分支处理流程按照所述 分支处理流程所支持的方式读取所述字节数据 ; 当所述分支处理流程执行完成后, 返回主循环体继续获取字节数据, 并再次发送到继 续获。
6、取的字节数据对应的分支处理流程, 直至所述 VME 升级文件被顺序获取完成, 并被各 分支处理流程读取完成。 5. 如权利要求 4 所述的对芯片进行动态升级的方法, 其特征在于, 所述检测为 : 通过 升级进程定时查询业务系统的状态参数来获知所述业务系统的状态是否处于业务空闲状 态 ; 当所述升级进程查询到所述业务系统的状态时处于业务空闲状态时, 则认定通过检测 获知与所述芯片相连的业务系统的状态为业务空闲状态。 6. 如权利要求 4 所述的对芯片进行动态升级的方法, 其特征在于, 所述检测为 : 挂起升 级进程, 通过一专注于业务系统状态监控的进程实时监控所述业务系统的状态来获知所述 业务系。
7、统的状态是否处于业务空闲状态 ; 当专注于所述业务系统状态监控的进程监控到所述业务系统的状态时处于业务空闲 状态时, 唤醒所述升级进程, 则认定通过检测获知与所述芯片相连的业务系统的状态为业 务空闲状态。 7. 如权利要求 4 所述的对芯片进行动态升级的方法, 其特征在于, 所述将所述闪存中 权 利 要 求 书 CN 102308281 A CN 102308288 A2/3 页 3 升级之后的数据复制到所述芯片中的随机存储器中, 并对所述芯片进行复位操作, 具体包 括 : 复位所述芯片的联合测试行动小组模块, 使所述联合测试行动小组模块进入空闲状 态 ; 使能所述芯片中的随机存储器, 使所述。
8、随机存储器进入可擦除、 编程状态 ; 擦除所述随机存储器中现有的配置信息 ; 再次使所述随机存储器进入可擦除、 编程状态 ; 将所述闪存中升级之后的数据复制到所述随机存储器中 ; 复位所述芯片的联合测试行动小组模块, 使所述联合测试行动小组模块进入空闲状 态。 8. 如权利要求 1 所述的对芯片进行动态升级的方法, 其特征在于, 所述芯片为复杂可 编程逻辑器件 CPLD、 现场可编程门阵列 FPGA 以及基本输入输出系统 BIOS 中任一种。 9. 一种基板管理控制器, 其特征在于, 包括 : 获取模块, 用于获取对所述基板管理控制器所管理的芯片进行升级的升级文件 ; 闪存更新模块, 用于基于。
9、所述获取模块所述获取的升级文件对存储所述芯片的数据的 闪存中的数据进行升级, 并且禁止对所述芯片进行复位操作 ; 状态检测模块, 用于检测与所述芯片相连的业务系统的状态是否为业务空闲状态, 并 产生检测结果 ; 内存更新模块, 用于当所述状态检测模块检测获知与所述芯片相连的业务系统的状态 为业务空闲状态时, 将所述闪存中升级之后的数据复制到所述芯片中的随机存储器中, 并 对所述芯片进行复位操作。 10. 如权利要求 9 所述的基板管理控制器, 其特征在于, 还包括 : 锁定模块, 用于锁定所述芯片的外围输入输出接口的当前状态。 11. 如权利要求 9 所述的基板管理控制器, 其特征在于, 所述。
10、获取模块还用于对所述获 取的升级文件进行循环冗余校验, 并得到校验结果 ; 当得到的校验结果为所述升级软件无 损坏, 则将获取的升级文件发送给所述闪存更新模块 ; 当得到的校验结果为所述升级软件 损坏, 则通知上层软件升级失败。 12. 如权利要求 9-11 中任一项所述的基板管理控制器, 其特征在于, 所述闪存内置或 外置于所述芯片, 所述升级文件为 VME 升级文件, 所述闪存更新模块具体包括 : 复位去除模块, 用于获取完整的 VME 升级文件, 并去除所述文件中用于复位芯片的操 作指令 ; 主循环体执行模块, 用于执行 VME 升级文件主循环体, 按顺序逐一字节地获取所述 VME 升级。
11、文件的内容, 直至所述 VME 升级文件被所述主体循环执行模块顺序获取完成 ; 验证模块, 用于对所述主循环体执行模块所获取的 VME 升级文件的内容进行合法性验 证, 并得到验证结果 ; 多个分支处理模块, 用于对发送给所述分支处理模块的经所述验证模块验证合法的字 节数据, 按照所述分支处理模块所支持的方式进行读取, 并在读取操作完成后, 通知所述主 体循环执行模块。 13. 如权利要求 12 所述的基板管理控制器, 其特征在于, 所述状态检测模块包括第一 权 利 要 求 书 CN 102308281 A CN 102308288 A3/3 页 4 状态检测模块, 所述第一状态检测模块用于通。
12、过升级进程定时查询业务系统的状态参数来 获知所述业务系统的状态是否处于业务空闲状态 ; 当所述升级进程查询到所述业务系统的状态时处于业务空闲状态时, 则认定通过检测 获知与所述芯片相连的业务系统的状态为业务空闲状态。 14. 如权利要求 12 所述的基板管理控制器, 其特征在于, 所述状态检测模块包括第二 状态检测模块, 所述第二状态检测模块用于挂起升级进程, 并通过一专注于业务系统状态 监控的进程实时监控所述业务系统的状态来获知所述业务系统的状态是否处于业务空闲 状态 ; 当专注于所述业务系统状态监控的进程监控到所述业务系统的状态时处于业务空闲 状态时, 唤醒所述升级进程, 则认定通过检测获。
13、知与所述芯片相连的业务系统的状态为业 务空闲状态。 15. 如权利要求 12 所述的基板管理控制器, 其特征在于, 所述内存更新模块具体包括 : 复位模块, 用于复位所述芯片的联合测试行动小组模块, 使所述联合测试行动小组模 块进入空闲状态 ; 使能模块, 用于使能所述芯片中的随机存储器, 使所述随机存储器进入可擦除、 编程状 态 ; 擦除模块, 用于擦除所述随机存储器中现有的配置信息 ; 复制模块, 用于将所述闪存中升级之后的数据复制到所述随机存储器中。 16. 如权利要求 9 所述的基板管理控制器, 其特征在于, 所述基板管理控制器所管理的 芯片复杂可编程逻辑器件 CPLD、 现场可编程门。
14、阵列 FPGA 以及基本输入输出系统 BIOS 中任 一种。 17. 一种芯片升级系统, 其特征在于, 包括 : 芯片, 所述芯片包括用于存储所述芯片数据的内置或外置的闪存、 用于存储所述芯片 数据的内置于所述芯片中的随机存储器以及用于与所述芯片外部连接设备进行通信的外 围输入输出接口 ; 和, 用于对所述芯片进行升级管理的基板管理控制器, 所述基板管理控制器为权利要求 9 所述的基板管理控制器。 18. 如权利要求 17 所述的芯片升级系统, 其特征在于, 所述芯片为复杂可编程逻辑器 件 CPLD、 现场可编程门阵列 FPGA 以及基本输入输出系统 BIOS 中任一种。 权 利 要 求 书 。
15、CN 102308281 A CN 102308288 A1/8 页 5 对芯片进行动态升级的方法、 系统及基板管理控制器 技术领域 0001 本发明涉及通信领域, 特别涉及一种对芯片进行动态升级的方法、 一种芯片升级 系统以及一种基板管理控制器。 背景技术 0002 容错机系统的复杂可编程逻辑器件 (Complex Programmable Logic Device, CPLD) 位于业务系统与基板管理控制器 (Baseboard Management Controller, BMC) 系统之 间, 其主要作用是对 BMC 系统主控芯片的外围功能扩展, 从而起到与业务系统间的桥梁作 用。系统。
16、中 CPLD 肩负着业务系统上、 下电时序控制, CPU 多种状态参数获取, 外围总线模拟 等重要工作。 0003 由于功能的改进、 系统维护等原因, 存在对CPLD内部逻辑进行升级的需求。 图1是 现有的通过普通在系统编程(In System Program, ISP)对CPLD进行在线升级的方案。 如图 1 所示, 该方案在硬件层面将一嵌入式 CPU 的四个通用输入 / 输出接口 (General Purpose Input/Output, GPIO)分别与CPLD上联合测试行动小组(Joint Test Action Group, JTAG) 模块的 TDI、 TDO、 TCK 和 TM。
17、S 信号引脚相连 ; 在软件层面在嵌入式 CPU 上运行一 ISP 服务软 件, 用于解析升级文件。在上述软硬件基础上, 通过单一的升级文件实现 CPLD 的内部逻辑 的在线升级。 0004 该方案实现了升级软件的在线加载, 但是在对 CPLD 进行升级操作的过程中, 所述 升级操作不可中断, 一旦启动升级操作后, CPLD 现有逻辑就会失效, 必然迫使业务系统首先 下电, 然后才能完成升级操作, 直至升级结束。这样增加了系统停机时间, 降低了系统的可 用度。 发明内容 0005 本发明实施例提供一种对芯片进行动态升级的方法和一种基板管理控制器以及 一种芯片升级系统, 提高了系统的可用度和可维。
18、护性。 0006 本发明实施例提供的一种对芯片进行动态升级的方法包括 : 0007 获取用于对芯片进行升级的升级文件 ; 0008 基于所述升级文件对用于存储所述芯片的数据的闪存中的数据进行升级, 并且此 时不对所述芯片进行复位操作 ; 0009 当通过检测获知与所述芯片相连的业务系统的状态为业务空闲状态时, 将所述闪 存中升级之后的数据复制到所述芯片中的随机存储器中, 并对所述芯片进行复位操作。 0010 另外, 本发明实施了提供的一种基板管理控制器其用于执行本发明的对芯片进行 动态升级的方法, 该基板管理控制器包括 : 0011 获取模块, 用于获取对所述基板管理控制器所管理的芯片进行升级。
19、的升级文件 ; 0012 闪存更新模块, 用于基于所述获取模块所述获取的升级文件对存储所述芯片的数 据的闪存中的数据进行升级, 并且禁止对所述芯片进行复位操作 ; 说 明 书 CN 102308281 A CN 102308288 A2/8 页 6 0013 状态检测模块, 用于检测与所述芯片相连的业务系统的状态是否为业务空闲状 态, 并产生检测结果 ; 0014 内存更新模块, 用于当所述状态检测模块检测获知与所述芯片相连的业务系统的 状态为业务空闲状态时, 将所述闪存中升级之后的数据复制到所述芯片中的随机存储器 中, 并对所述芯片进行复位操作。 0015 另外, 本发明实施例还提供一种芯片。
20、升级系统, 其包括 : 0016 芯片, 所述芯片包括用于存储所述芯片数据的内置或外置的闪存、 用于存储所述 芯片数据的内置于所述芯片中的随机存储器以及用于与所述芯片外部连接设备进行通信 的外围输入输出接口 ; 0017 和, 0018 用于对所述芯片进行升级管理的基板管理控制器, 所述基板管理控制器为上述的 本发明所提供的一种基板管理控制器。 0019 , 本发明实施例中所述芯片为复杂可编程逻辑器件 CPLD、 现场可编程门阵列 FPGA 以及基本输入输出系统 BIOS 中任一种。 0020 上述技术方案中, 并非一次性完成芯片升级, 而是将升级分为独立多个阶段, 本发 明实施例包括对芯片的。
21、闪存进行升级的阶段, 在该阶段由于闪存的非易失性, 使得即使后 续升级过程中业务系统下电, 也不会影响系统的性能, 并且在该阶段不对芯片进行复位操 作, 因此, 在尚未对芯片执行后续升级时, 保证芯片中原有的数据能正常运行。 另外, 本发明 实施例是当业务系统的状态自动转换为业务空闲状态时, 方将闪存中的升级后的数据复制 到芯片中的随机存储器中, 以完成对芯片的完整升级, 采用这样的方式的好处在于, 将强制 要求业务系统在升级整个过程中停机下电改变为被动等待业务系统主动停止业务, 可大大 减少系统停机时间, 提高系统的可靠性和可维护性。另外, 本发明在将所述闪存中升级之 后的数据复制到所述芯片。
22、中的随机存储器中之前, 锁定所述芯片的输入输出接口的当前状 态, 使得在对芯片进行升级的后续过程中, 不会因为输入输出接口的不可控而导致业务系 统的误操作。 附图说明 0021 图 1 是现有技术的通过普通在系统编程 ISP 对 CPLD 进行在线升级的硬件连接示 意图 ; 0022 图 2 是本发明的 CPLD 芯片升级系统的一个实施例的硬件连接示意图 ; 0023 图 3 是本发明的 CPLD 芯片升级系统的另一个实施例的硬件连接示意图 ; 0024 图 4 是本发明的对 CPLD 芯片进行动态升级的方法的一个实施例的流程示意图 ; 0025 图 5 是本发明的升级 FLASH 数据的主干。
23、及分支处理流程的架构图 ; 0026 图 6 是本发明的基板管理控制器 (BMC) 的一个实施例的结构框架示意图。 具体实施例 0027 由于目前的对基于基板管理控制器所管理的芯片(比如CPLD)进行升级的过程借 助于 CPU 和 ISP 服务软件, 通过单一的升级文件实现芯片的内部逻辑的在线升级, 这样的 升级方式使得一旦启动升级操作, 芯片的现有逻辑就会失效, 必然迫使与芯片线路的业务 说 明 书 CN 102308281 A CN 102308288 A3/8 页 7 系统下电, 直至升级结束方能完成升级操作, 这样增加了系统停机时间, 降低了系统的可用 性。 本发明提供了一种对芯片进行。
24、动态升级的方法和一种基板管理控制器以及一种芯片升 级系统, 将升级分为独立多个阶段, 本发明包括对芯片的闪存进行升级的阶段, 在该阶段由 于闪存的非易失性, 使得即使后续升级过程中业务系统下电, 也不会影响系统的性能, 并且 在该阶段不对芯片进行复位操作, 因此, 在尚未对芯片执行后续升级时, 保证芯片中原有的 数据能正常运行。 另外, 本发明是当业务系统的状态自动转换为业务空闲状态时, 方将闪存 中的升级后的数据复制到芯片中的随机存储器中, 以完成对芯片的完整升级, 采用这样的 方式的好处在于, 将强制要求业务系统在升级整个过程中停机下电改变为被动等待业务系 统主动停止业务, 可大大减少系统。
25、停机时间, 提高系统的可靠性和可维护性。另外, 本发明 在将所述闪存中升级之后的数据复制到所述芯片中的随机存储器中之前, 锁定所述芯片的 外围输入输出接口的当前状态, 使得在对芯片进行升级的后续过程中, 不会因为外围输入 输出接口的不可控而导致业务系统的误操作。 0028 本发明的技术方案可通过基板管理控制器 (Baseboard Management Controller, BMC) 来完成对复杂可编程逻辑器件 (Complex Programmable Logic Device, CPLD)、 现场 可编程门阵列 (Field-Programmable Gate Array, FPGA) 。
26、以及基本输入输出系统 (Basic Input Output System, BIOS)所在芯片的升级。 本发明实施例的所述芯片(CPLD芯片、 FPGA 芯片以及基本输入输出系统 (Basic Input Output System, BIOS) 所在芯片 ) 包括用于存 储所述芯片数据的内置或外置的闪存、 用于存储所述芯片数据的内置于所述芯片中的随机 存储器以及用于与所述芯片外部连接设备进行通信的输入输出接口。 0029 下面以 BMC 对 CPLD 进行升级为例, 结合图 2 至图 6 来具体说明本发明实施例提供 的技术方案的详细内容。 0030 图 2 是本发明的 CPLD 芯片升级系。
27、统的一个实施例的硬件连接示意图。如图 2 所 示, 本发明的 CPLD 芯片升级系统包括 BMC210 和 CPLD211, 它们采用通用的 ISP 硬件连接方 式, 其中 BMC210 的四个通用输入 / 输出接口 (General Purpose Input/Output, GPIO) 分别 与 CPLD211 上联合测试行动小组 (Joint Test Action Group, JTAG) 模块的 TDI、 TDO、 TCK 和 TMS 信号引脚相连, 通过 BMC 的四个 GPIO 的输入、 输出来建立与 CPLD 的数据连接。 0031 而具体实现中, 本发明的 CPLD 可为 S。
28、andy Bridge 4P 系统的 CPLD, 此时为考虑 CPLD 内部逻辑开发调试阶段的应用场景, 预留了 CPLD 与计算机 (PC) 的开发工具建立连接 的接口, 同时还要满足 BMC 的 GPIO 端口能与 CPLD 的 JTAG 模块中的接口相连, 因此, 具体实 现中, 本发明的 CPLD 芯片升级系统还可为图 3 所示的另一个实施例的硬件连接示意图。具 体的, 如图 3 所示, 在本实施例中 BMC310 和 CPLD311 之间通过多路选择器 (MUX)312 间接相 连, 其中, BMC310 和 PC314 引出的信号经过 MUX 进行二选一到达 CPLD311, PC。
29、314 的 JTAG 模 块的接口可与 MUX312 上的 TDI1、 TDO1、 TCK1 和 TMS1 信号引脚相连, BMC310 的 GPIO 端口能 与 MUX312 上的 TDI0、 TDO0、 TCK0 和 TMS0 信号引脚相连, 具体实现中, 当 PC314 的 JTAG 连接 到 MUX 上时, MUX312 将 CPLD311 连接到 PC314 上, 否则, MUX312 将 CPLD311 连接到 BMC310 上。通常情况下, 当 CPLD311 系统不需要进行开发调试时, 其必然不会连接到 PC314 上, 此 时 BMC310 和 CPLD311 则可保持连接状。
30、态, 这就为 CPLD 的动态升级提供了硬件条件。 0032 图4是本发明的对CPLD芯片进行动态升级的方法的一个实施例的流程示意图。 如 图 4 所示, 本实施例的方法包括 : 说 明 书 CN 102308281 A CN 102308288 A4/8 页 8 0033 步骤S400, 获取用于对CPLD芯片进行升级的升级文件。 具体实现中, 在步骤S400, 可将升级文件 ( 比如, 本发明中可使用 VME 升级文件 ) 的压缩包以网络传输 ( 比如, 可从板 级管理(Onboard Administration, OA)处获取升级文件的压缩包)或者本地拷贝的方式传 送至 BMC 中特定。
31、路径下, 由 BMC 执行解压缩操作, 并保存解压缩之后的升级文件。另外, 为 确保升级文件的可靠性, 可选的, 在步骤S400当获取到用于对CPLD芯片进行升级的升级文 件时, 对所述获取的升级文件进行循环冗余校验 (CRC 校验 ), 并得到校验结果 ; 当得到的校 验结果为所述升级软件无损坏, 表示可执行后续的升级操作 ; 而当得到的校验结果为所述 升级软件损坏, 则通知上层软件升级失败。通过 CRC 校验保证了升级文件的有效性。 0034 步骤 S401, 基于所述升级文件对用于存储所述 CPLD 芯片的数据的闪存 (FLASH 存 储器 ) 中的数据进行升级, 并且此时不对所述芯片进。
32、行复位操作。具体实现中, CPLD 芯片 内部内置有 FLASH 和 SRAM(FPGA 芯片和 BIOS 所在芯片没有内置的 FLASH, 因此当采用本发 明对它们进行升级时, 需要为它们外置 FLASH), 其中 FPGA 需要外置一块 FLASH 然后由所述 FLASH 配合 FPGA 内部的 RAM 完成数据升级, 而 BIOS 所在芯片, 需要外置两块 FLASH, 由所述 两块 FLASH 共同实现数据升级 )FLASH 用于保存 CPLD 运行的逻辑数据, 断电时不会丢失, SRAM 也用于存储逻辑数据, 但是 SRAM 中的逻辑数据在断电后会自动丢失, 因此, 本发明在 步骤 。
33、S401 首先对 CPLD 芯片中的 FLASH 进行数据升级。具体的, 在步骤 S401, 本发明中 BMC 可通过运行 VME 升级文件来完成对 FLASH 中数据的升级。BMC 首先获取到原始的完整 VME 文件, 然后去除文件中的复位 CPLD 的相关操作指令, 然后采用在线升级软件运行 VME 升级 文件完成对 FLASH 数据的加载。而在采用在线升级软件运行 VME 升级文件时, 通过如下方 式实现 : 执行 VME 升级文件主循环体, 按顺序逐一字节地获取所述 VME 升级文件的内容 ; 对 于验证合法的字节数据, 进入对应的分支处理流程, 由所述分支处理流程按照所述分支处 理流。
34、程所支持的方式读取所述字节数据 ; 当所述分支处理流程执行完成后, 返回主循环体 继续获取字节数据, 并再次发送到继续获取的字节数据对应的分支处理流程, 直至所述 VME 升级文件被顺序获取完成, 并被各分支处理流程读取完成。图 5 示出了升级 FLASH 数据的 主干及分支处理流程的架构图, 图中的 STATE、 SIR 等均为分支处理流程所使用的分支处理 函数。本实施例利用 FLASH 的断电不丢失数据的特点, 使得 CPLD 异常掉电并重新上电后, 能从 FLASH 中获取到最新的逻辑数据进行运行, 使系统能在上电后保证最新的逻辑数据的 自动生效。并且在该阶段不对 CPLD 芯片进行复位。
35、操作, 因此, 在尚未对 CPLD 芯片执行后续 升级时, 保证 CPLD 芯片中原有的数据能正常运行。 0035 步骤 S402, 检测与 CPLD 相连的业务系统的状态是否为业务空调状态, 并得到检测 结果, 当检测结果为是时, 执行步骤 S403 或步骤 S404( 当实施例中不包括步骤 S403 时, 当 检测结果为是时, 直接执行步骤 S404。) ; 当检测结果为否时, 停留在步骤 S402 继续进行检 测。具体实现中, 在步骤 S402 可通过两种不同的方式实现对业务系统状态的检测, 其中一 种方式为 : 通过升级进程定时查询业务系统的状态参数来获知所述业务系统的状态是否处 于业。
36、务空闲状态 ; 当所述升级进程查询到所述业务系统的状态时处于业务空闲状态时, 则 认定通过检测获知与所述芯片相连的业务系统的状态为业务空闲状态。另一种方式为 : 挂 起升级进程, 通过一专注于业务系统状态监控的进程实时监控所述业务系统的状态来获知 所述业务系统的状态是否处于业务空闲状态 ; 当专注于所述业务系统状态监控的进程监控 到所述业务系统的状态时处于业务空闲状态时, 唤醒所述升级进程, 则认定通过检测获知 说 明 书 CN 102308281 A CN 102308288 A5/8 页 9 与所述芯片相连的业务系统的状态为业务空闲状态。在步骤 S402 采用上述两种方式中任 一种完成检测。
37、动作均可。 0036 步骤 S403, 锁定所述 CPLD 芯片的外围输入输出接口的当前状态。具体实现中, 可 选的, 可在本发明的升级方法中包括步骤 S403, 在步骤 S403 中, BMC 通过向 CPLD 发送控制 指令, 以锁定所述 CPLD 输入输出接口的当前状态, 这样做的好处在于, 使得在对 CPLD 芯片 进行升级的后续过程中, 不会因为 CPLD 的输入输出接口的不可控而导致业务系统的误操 作。 具体的, 可通过如下方式完成对CPLD的输入输出接口的状态的锁定 : 复位JTAG, 使CPLD 内部的 JTAG 模块进入 IDLE 状态, 准备接受后续指令 ; 校验 IDCO。
38、DE 指令, 从 TDO 端口获取数 据, 检查 JTAG 逻辑是否正常 ; 发送采样指令, 向 JTAG 发送 sample 指令, 获取当前 CPLD 外围 输入输出接口所处的状态参数, 并锁存 ; 锁定操作结束。 0037 步骤 S404, 将所述闪存中升级之后的数据复制到所述 CPLD 芯片中的随机存储器 中, 并对所述CPLD芯片进行复位操作。 具体实现中, CPLD芯片中除包括FLASH之外, 还会包 括 SRAM 或 DRAM 形式的随机存储器, 当在步骤 S402 确定业务系统状态为空闲状态时, 在步 骤 S404, BMC 将会将 CPLD 芯片的闪存中的升级数据移至所述 C。
39、PLD 芯片中的随机存储器中, 从而实现 CPLD 上的升级数据的正式生效。而在步骤 S404, BMC 具体可执行如下流程 : 复位 JTAG 模块, 使 CPLD 内部的 JTAG 模块进入 IDLE 状态, 准备接受指令 ; 发送 SRAM enable 指 令, 使能 CPLD 内部 SRAME, 使其进入允许擦除、 编程的状态, 为后续指令创建运行条件 ; 延时 等待, 等待前面指令的完成 ; 发送擦除指令, 用于擦除现有内部配置 ; 延时等待, 等待前面 指令的完成 ; 发送ENABLE指令, 使其允许擦除、 编程 ; 延时等待, 等前面待指令的完成 ; 发送 DISENABLE 。
40、指令, 完成在其之前发送的指令操作, 实现新逻辑从 FLASH 向 SRAM 的加载动作 ; 发送 BYPASS 指令, 使 CPLD 的 JTAG 模块处于旁通状态, 与其他模块断开关联, 即 CPLD 新逻 辑正常工作。复位 JTAG 模块, 使其进入 IDLE 状态 ; 0038 由步骤 S402 至步骤 S404 可看出, 本发明实施例是当业务系统的状态自动转换为 业务空闲状态时, 方将闪存中的升级后的数据复制到芯片中的随机存储器中, 以完成对芯 片的完整升级, 采用这样的方式的好处在于, 将强制要求业务系统在升级整个过程中停机 下电改变为被动等待业务系统主动停止业务, 可大大减少系统。
41、停机时间, 提高系统的可靠 性和可维护性。 0039 综上所述, 上述实施例中, 通过将 CPLD 的升级分为独立多个阶段, 首先包括对 CPLD 芯片的闪存进行升级的阶段, 在该阶段由于闪存的非易失性, 使得即使后续升级过程 中业务系统下电, 也不会影响系统的性能, 并且在该阶段不对 CPLD 芯片进行复位操作, 因 此, 在尚未对 CPLD 芯片执行后续升级时, 保证 CPLD 芯片中原有的数据能正常运行。另外, 上述实施例是当业务系统的状态自动转换为业务空闲状态时, 方将闪存中的升级后的数据 复制到CPLD芯片中的随机存储器中, 以完成对CPLD芯片的完整升级, 采用这样的方式的好 处在。
42、于, 将强制要求业务系统在升级整个过程中停机下电改变为被动等待业务系统主动停 止业务, 可大大减少系统停机时间, 提高系统的可靠性和可维护性。另外, 上述实施例可选 的可在将所述闪存中升级之后的数据复制到所述 CPLD 芯片中的随机存储器中之前, 锁定 所述CPLD芯片外围输入输出接口当前状态, 使得在对CPLD芯片进行升级的后续过程中, 不 会因为外围输入输出接口的不可控而导致业务系统的误操作。 0040 相应的, 图6是本发明的基板管理控制器(BMC)的一个实施例的结构框架示意图。 说 明 书 CN 102308281 A CN 102308288 A6/8 页 10 其可用于对复杂可编程。
43、逻辑器件 (Complex Programmable Logic Device, CPLD)、 现场可编 程门阵列 (Field-Programmable Gate Array, FPGA) 以及基本输入输出系统 (Basic Input Output System, BIOS) 所在芯片的升级, 比如其可通过实施本发明图 4 所示的方法来对 CPLD 进行升级。具体的, 如图 6 所示, 本发明的 BMC 包括获取模块 61、 闪存更新模块 62、 状 态检测模块 63、 锁定模块 64、 内存更新模块 65, 其中 : 0041 所述获取模块 61, 用于获取对所述基板管理控制器所管理的芯。
44、片进行升级的升级 文件。具体实现中, 可将升级文件 ( 比如, 本发明中可使用 VME 升级文件 ) 的压缩包以网络 传输 ( 比如, 可从板级管理 (Onboard Administration, OA) 处获取升级文件的压缩包 ) 或 者本地拷贝的方式传送至 BMC 中, 由 BMC 执行解压缩操作, 并保存解压缩之后的升级文件。 另外, 为确保升级文件的可靠性, 可选的, 本发明的获取模块 61 还用于当获取到用于对芯 片进行升级的升级文件时, 对所述获取的升级文件进行循环冗余校验 (CRC 校验 ), 并得到 校验结果 ; 当得到的校验结果为所述升级软件无损坏, 表示可执行后续的升级操。
45、作 ; 而当 得到的校验结果为所述升级软件损坏, 则通知上层软件升级失败。通过 CRC 校验保证了升 级文件的有效性。 0042 所述闪存更新模块 62, 用于基于所述获取模块 6 所述获取的升级文件对存储所述 芯片的数据的闪存中的数据进行升级, 并且禁止对所述芯片进行复位操作。具体实现中, CPLD 芯片内部内置有 FLASH 和 SRAM(FPGA 芯片和 BIOS 所在芯片没有内置的 FLASH, 因此 当采用本发明对它们进行升级时, 需要为它们外置 FLASH), 其中 FPGA 需要外置一块 FLASH 然后由所述 FLASH 配合 FPGA 内部的 RAM 完成数据升级, 而 BI。
46、OS 所在芯片, 需要外置两块 FLASH, 由所述两块 FLASH 共同实现数据升级 ), FLASH 用于保存芯片运行的逻辑数据, 断电 时不会丢失, SRAM 也用于存储逻辑数据, 但是 SRAM 中的逻辑数据在断电后会自动丢失, 本 发明通过闪存更新模块 62 首先将对芯片进行升级的数据更新到 FLASH 中。具体的, 本发明 中闪存更新模块 62 可通过运行 VME 升级文件来完成对 FLASH 中数据的升级。进一步如图 6 所示, 本发明的闪存更新模块 62 可进一步包括复位去除模块 621、 主循环体执行模块 622、 验证模块 623、 多个分支处理模块 624, 其中 : 所。
47、述复位去除模块 621, 用于获取完整的 VME 升级文件, 并去除所述文件中用于复位芯片的操作指令。所述主循环体执行模块 622, 用于 执行 VME 升级文件主循环体, 按顺序逐一字节地获取所述 VME 升级文件的内容, 直至所述 VME 升级文件被所述主体循环执行模块顺序获取完成。所述验证模块 623, 用于对所述主循 环体执行模块 622 所获取的 VME 升级文件的内容进行合法性验证, 并得到验证结果。所述 多个分支处理模块624, 用于对发送给所述分支处理模块624的经所述验证模块623验证合 法的字节数据, 按照所述分支处理模块 624 所支持的方式进行读取, 并在读取操作完成后。
48、, 通知所述主体循环执行模块 622。图 5 示出了升级 FLASH 数据的主干及分支处理流程的架 构图, 该架构图体现出主循环体执行模块622、 验证模块623、 多个分支处理模块624相互配 合实现 FLASH 数据更新的流程, 图中的 STATE、 SIR 等均为分支处理模块 624 中执行的分支 处理流程所使用的分支处理函数。本实施例利用 FLASH 的断电不丢失数据的特点, 使得芯 片异常掉电并重新上电后, 能从 FLASH 中获取到最新的逻辑数据进行运行, 使系统能在上 电后保证最新的逻辑数据的自动生效。 并且在该阶段不对芯片进行复位操作, 因此, 在尚未 对芯片执行后续升级时, 。
49、保证芯片中原有的数据能正常运行。 0043 所述状态检测模块 63, 用于检测与所述芯片相连的业务系统的状态是否为业务空 说 明 书 CN 102308281 A CN 102308288 A7/8 页 11 闲状态, 并产生检测结果。 如图6所示, 本发明的状态检测模块63可进一步包括第一状态检 测模块 631 和第二状态检测模块 632 中至少一种。其中 : 所述第一状态检测模块 631, 用于 通过升级进程定时查询业务系统的状态参数来获知所述业务系统的状态是否处于业务空 闲状态 ; 当所述升级进程查询到所述业务系统的状态时处于业务空闲状态时, 则认定通过 检测获知与所述芯片相连的业务系统的状态为业务空闲状态。所述第二状态检测模块 632 则用于挂起升级进程, 并通过一专注于业务系统状态监控的进程实时监控所述业务系统的 状态来获知所述业务系统的状态是否处于业务空闲状态 ; 当专注于所述业务系统状态监控 的进程监控到所述业务系统的状态时处于业务空闲状态时, 唤醒所述升级进程, 则认定通 过检测获知与所述芯片相连的业务系统的状态为业务空闲状态。 0044 所述锁定模块 64, 用于锁定所述芯片的外围输入输出接。