交换芯片热重启的方法和装置、电子设备和存储介质与流程

未命名 07-19 阅读:232 评论:0


1.本发明是关于电子通信领域,特别是关于一种交换芯片热重启的方法和装置、电子设备和存储介质。


背景技术:

2.热重启warmreboot,指在设备重启过程中能够保证业务不中断的重启类型。在以太网交换机领域中,指在交换机设备重启过程,保证转发面业务不断流,并且需要做到重启后软件能够重新接管运行中的交换芯片。
3.在现有技术中,常见技术方案是cpu通过交换系统内核提供的kexec实现重启,该方案实际在于能够在操作系统内核下直接启动另一个操作系统内核,从而跳过boot阶段,减少重启时间。在该现有技术方案的重启过程中,cpu不会复位,其中设备外设的复位一般由cpu的复位信号控制,并且不会经过bootloader阶段,从而使得硬件外设的状态能够得到保持。
4.然而,部分cpu不支持kexec或者对kexec的支持存在一些限制。例如nxpls1023acpu,通过kexec重启,nxpls1023acpu会出现msi中断无法工作的问题。
5.公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。


技术实现要素:

6.本发明的目的在于提供一种交换芯片热重启的方法和装置、电子设备和存储介质,其能够解决部分cpu不支持kexec或者对kexec的支持存在限制的问题,实现了保持交换芯片转发功能正常的热重启。
7.为实现上述目的,本发明的实施例提供了一种交换芯片热重启的方法。
8.在本发明的一个或多个实施方式中,所述方法包括:在可擦除可编程逻辑器件epld接收到cpu复位信号后,控制引导加载程序bootloader读取所述epld的热重启寄存器的值;判断所述epld的热重启寄存器的值是否为预定义值;以及若是,阻止所述epld向所述交换芯片的外设传递所述cpu复位信号,并控制所述bootloader不对所述交换芯片的外设执行初始化。
9.在本发明的一个或多个实施方式中,所述交换芯片的外设包括phy芯片、光模块收发器。
10.在本发明的一个或多个实施方式中,控制所述bootloader不对所述交换芯片的外设执行初始化,具体包括:控制所述bootloader不对所述交换芯片的外设执行初始化,以及重置所述热重启寄存器,将热重启参数传递到所述交换芯片的操作系统内核的启动参数中。
11.在本发明的一个或多个实施方式中,所述方法还包括:根据所述启动参数启动所述操作系统内核;以及所述操作系统内核和上层应用根据操作系统内核的内核参数执行对
应的软件初始化逻辑。
12.在本发明的一个或多个实施方式中,所述操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑,具体包括:所述上层应用通过解析所述操作系统内核启动的cmdline文件获取启动类型,执行对应的软件初始化逻辑。
13.在本发明的一个或多个实施方式中,所述方法还包括:若所述热重启寄存器的值不是预定义值,根据所述交换芯片的操作系统内核的启动参数启动所述操作系统内核;所述操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑。
14.在本发明的一个或多个实施方式中,所述方法还包括:在cpu复位前,执行所述重启寄存器的数据写入。
15.在本发明的另一个方面当中,提供了一种交换芯片热重启的装置,其包括加载模块、判断模块和处理模块。
16.加载模块,用于在可擦除可编程逻辑器件epld接收到cpu复位信号时,控制引导加载程序bootloader读取所述epld中热重启寄存器的值。
17.判断模块,用于判断所述epld的热重启寄存器是否为预定义值。
18.处理模块,用于阻止所述epld向所述交换芯片的外设传递所述cpu复位信号,并控制所述bootloader不对所述交换芯片的外设执行初始化。
19.在本发明的一个或多个实施方式中,所述处理模块还用于:控制所述bootloader不对所述交换芯片的外设执行初始化,以及重置所述热重启寄存器,将所述热重启参数传递到所述交换芯片的操作系统内核的启动参数中。
20.在本发明的一个或多个实施方式中,所述处理模块还用于:根据所述启动参数启动所述操作系统内核;以及所述操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑。
21.在本发明的一个或多个实施方式中,所述处理模块还用于:所述上层应用通过解析所述操作系统内核启动的cmdline文件获取启动类型,执行对应的软件初始化逻辑。
22.在本发明的一个或多个实施方式中,所述判断模块还用于:若所述热重启寄存器的值不是预定义值,根据所述交换芯片的操作系统内核的启动参数启动所述操作系统内核;所述操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑。
23.在本发明的一个或多个实施方式中,所述加载模块还用于:在cpu复位前,执行所述重启寄存器的数据写入。
24.在本发明的另一个方面当中,提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的交换芯片热重启的方法。
25.在本发明的另一个方面当中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的交换芯片热重启的方法的步骤。
26.与现有技术相比,根据本发明实施方式的一种交换芯片热重启的方法,解决部分cpu不支持kexec或者对kexec的支持存在限制的问题,通过在epld中添加热重启寄存器,实现cpu复位信号对交换芯片外设的屏蔽;通过bootloader读取热重启寄存器并执行不同的
软件逻辑,在热重启时不进行外设的初始化,并将热重启信息通过内核传参传递给操作系统内核和上层应用,实现了保持交换芯片转发功能正常的热重启。
附图说明
27.图1是根据本发明一实施方式的交换芯片热重启的方法的流程图;
28.图2是根据本发明一实施方式的交换芯片热重启的方法的具体流程图;
29.图3是根据本发明一实施方式的交换芯片热重启的方法的装置的结构图;
30.图4是根据本发明一实施方式的交换芯片热重启的方法的计算设备的硬件结构图。
具体实施方式
31.下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
32.除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
33.以下结合附图,详细说明本发明各实施例提供的技术方案。
34.实施例1
35.如图1至图2所示,介绍本发明的一个实施例中交换芯片热重启的方法,该方法包括如下步骤。
36.在步骤s101中,在可擦除可编程逻辑器件epld接收到cpu复位信号后,控制引导加载程序bootloader读取所述epld的热重启寄存器的值。
37.epld(erasableprogrammablelogicdevice,可擦除可编辑逻辑器件)是一种集成电路,其包括一系列的编程逻辑器件,能够在一块芯片内实现期望的逻辑功能。在具体的应用场景中,epld可以是被集成在交换芯片中,epld可以与相关附属电路配合控制相应的逻辑信号并实现上述的各种逻辑功能。
38.在本实施例中,在epld中添加一个自定义的热重启寄存器,即warmreset寄存器,并通过对该热重启寄存器的值的设置,实现对cpu传递的复位信号的控制。
39.引导加载程序bootloader,是嵌入式系统在上电后执行的第一段代码,包含外设的初始化逻辑,通过bootloader程序能够初始化硬件设备、建立内存空间的映射图,为调用操作系统内核做好环境准备,继而实现操作系统内核的启动运行。
40.具体的,在cpu复位阶段,交换芯片执行cpu复位操作;当cpu复位后,cpu向epld传递cpu复位信号。此时,epld读取热重启寄存器的值,进而确认如何对cpu传递的复位信号进行控制,且交换芯片通过bootloader读取epld的热重启寄存器的值,进而确认是否对交换芯片的外设执行初始化。
41.在步骤s102中,判断所述epld的热重启寄存器的值是否为预定义值。
42.在本实施例中,热重启寄存器的预定义值可以根据需要进行设定。例如,预定义值可以为“0”,又或者,预定义值可以为任意的非零值(例如0xff)。若预定义值为“0”,则这里的判断实质上即为判断热重启寄存器是否为空;若预定义值为任意非零值时,则这里的判
断即为判断热重启寄存器是否非空。当然,预定义值可以设置为特定的一个或几个值,相应这里的判断即为判断热重启寄存器中是否为该特定的一个或几个值,本技术对此不作限制。
43.在步骤s103中,若epld的热重启寄存器的值为预定义值,阻止所述epld向所述交换芯片的外设传递所述cpu复位信号,并控制所述bootloader不对所述交换芯片的外设执行初始化。
44.当热重启寄存器中的值为预定义值时,epld屏蔽cpu传递的复位信号,即epld在接收到cpu复位信号后,不将该cpu复位信号传递到交换芯片的外设,从而实现仅复位cpu,而不复位交换芯片的外设。
45.根据预定义值设置的不同,在cpu复位前,交换芯片可以对热重启寄存器执行不同的操作。例如,若预定义值为非零值,则在cpu复位前,需要先执行热重启寄存器的数据写入,并将热重启寄存器的值设置为非零值。又例如,若预定值为“0”,则在cpu复位前,也可以不对热重启寄存器执行数据写入,并根据需要查询热重启寄存器是否为空,进而在热重启寄存器不为空时对其执行数据删除。
46.在本实施例中,在cpu复位后,若bootloader读取并判断所述热重启寄存器的值为预定义值,则不对所述交换芯片的外设执行初始化。其中,交换芯片的外设包括phy芯片、光模块收发器等。
47.具体的执行过程中,bootloader不对交换芯片的外设执行初始化,且重置热重启寄存器,将热重启参数传递到所述交换芯片的操作系统内核的启动参数中,其中所述热重启参数代表重启类型为热重启。
48.其中,若热重启寄存器的预定义值设置为非零值,这里对热重启寄存器的重置即为将该热重启寄存器清零。而若热重启寄存器的预定义值设置为“0”,这里对热重启寄存器的重置即应当为写入非零值(任意非零值或指定非零值)。
49.在操作系统内核启动阶段,交换芯片根据所述操作系统内核的启动参数来启动该操作系统内核;操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑。
50.进一步地,上层应用可以通过解析操作系统内核启动的cmdline文件获取启动类型,执行对应的软件初始化逻辑,其中cmdline文件用于指导内核启动。
51.示范性地,cmdline文件可以包含进程的命令行参数,包括进程的启动路径,通过使用命令/proc/cmdline能够获得内核启动时bootloader传入内核的参数。
52.如图2所示,若启动类型并非热重启,即判断热重启寄存器的值不是预定义值,则执行cpu复位操作后,直接根据交换芯片的操作系统内核的启动参数来启动操作系统内核;
53.操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑,上层应用通过解析所述操作系统内核启动的cmdline文件获取启动类型,执行对应的软件初始化逻辑。
54.在本实施例的热重启方法中,在cpu复位阶段、bootloader阶段或操作系统内核启动阶段中,都能够保持交换芯片的外设的硬件状态不变,从而实现交换芯片在热重启过程中依旧能够完成转发功能。
55.根据本发明实施方式的一种交换芯片热重启的方法,解决部分cpu不支持kexec或
者对kexec的支持存在限制的问题,通过在epld中添加热重启寄存器,实现cpu复位信号对交换芯片外设的屏蔽;通过bootloader读取热重启寄存器并执行不同的软件逻辑,在热重启时不进行外设的初始化,并将热重启信息通过内核传参传递给操作系统内核和上层应用,实现了保持交换芯片转发功能正常的热重启。
56.如图3所示,介绍根据本发明具体实施方式的交换芯片热重启的装置。
57.在本发明的实施方式中,交换芯片热重启的装置包括加载模块301、判断模块302和处理模块303。
58.加载模块301,用于在可擦除可编程逻辑器件epld接收到cpu复位信号时,控制引导加载程序bootloader读取所述epld中热重启寄存器的值。
59.判断模块302,用于判断所述epld的热重启寄存器是否为预定义值。
60.处理模块303,用于阻止所述epld向所述交换芯片的外设传递所述cpu复位信号,并控制所述bootloader不对所述交换芯片的外设执行初始化。
61.处理模块303还用于:控制所述bootloader不对所述交换芯片的外设执行初始化,以及重置所述热重启寄存器,将热重启参数传递到所述交换芯片的操作系统内核的启动参数中。
62.处理模块303还用于:根据所述启动参数启动所述操作系统内核;以及所述操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑。
63.处理模块303还用于:所述上层应用通过解析所述操作系统内核启动的cmdline文件获取启动类型,执行对应的软件初始化逻辑。
64.判断模块302还用于:若所述热重启寄存器的值不是预定义值,根据所述交换芯片的操作系统内核的启动参数启动所述操作系统内核;所述操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑。
65.加载模块301还用于:在cpu复位前,执行所述重启寄存器的数据写入。
66.图4示出了根据本说明书的实施例的用于交换芯片热重启的计算设备40的硬件结构图。如图4所示,计算设备40可以包括至少一个处理器401、存储器402(例如非易失性存储器)、内存403和通信接口404,并且至少一个处理器401、存储器402、内存403和通信接口404经由总线405连接在一起。至少一个处理器401执行在存储器402中存储或编码的至少一个计算机可读指令。
67.应该理解,在存储器402中存储的计算机可执行指令当执行时使得至少一个处理器401进行本说明书的各个实施例中以上结合图1-4描述的各种操作和功能。
68.在本说明书的实施例中,计算设备40可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(pda)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
69.根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-4描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质
中的指令。
70.根据本发明实施方式的一种交换芯片热重启的方法,解决部分cpu不支持kexec或者对kexec的支持存在限制的问题,通过在epld中添加热重启寄存器,实现cpu复位信号对交换芯片外设的屏蔽;通过bootloader读取热重启寄存器并执行不同的软件逻辑,在热重启时不进行外设的初始化,并将热重启信息通过内核传参传递给操作系统内核和上层应用,实现了保持交换芯片转发功能正常的热重启。
71.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
72.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
73.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
74.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
75.前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

技术特征:
1.一种交换芯片热重启的方法,其特征在于,所述方法包括:在可擦除可编程逻辑器件epld接收到cpu复位信号后,控制引导加载程序bootloader读取所述epld的热重启寄存器的值;判断所述epld的热重启寄存器的值是否为预定义值;以及若是,阻止所述epld向所述交换芯片的外设传递所述cpu复位信号,并控制所述bootloader不对所述交换芯片的外设执行初始化。2.如权利要求1所述的交换芯片热重启的方法,其特征在于,所述交换芯片的外设包括phy芯片、光模块收发器。3.如权利要求1所述的交换芯片热重启的方法,其特征在于,控制所述bootloader不对所述交换芯片的外设执行初始化,具体包括:控制所述bootloader不对所述交换芯片的外设执行初始化,以及重置所述热重启寄存器,将热重启参数传递到所述交换芯片的操作系统内核的启动参数中。4.如权利要求3所述的交换芯片热重启的方法,其特征在于,所述方法还包括:根据所述启动参数启动所述操作系统内核;以及所述操作系统内核和上层应用根据所述操作系统内核的内核参数执行对应的软件初始化逻辑。5.如权利要求4所述的交换芯片热重启的方法,其特征在于,所述操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑,具体包括:所述上层应用通过解析所述操作系统内核启动的cmdline文件获取启动类型,执行对应的软件初始化逻辑。6.如权利要求5所述的交换芯片热重启的方法,其特征在于,所述方法还包括:若所述热重启寄存器的值不是预定义值,根据所述交换芯片的操作系统内核的启动参数启动所述操作系统内核;所述操作系统内核和上层应用根据操作系统内核的内核参数执行对应的软件初始化逻辑。7.如权利要求1所述的交换芯片热重启的方法,其特征在于,所述方法还包括:在cpu复位前,执行所述重启寄存器的数据写入。8.一种交换芯片热重启的装置,其特征在于,所述装置包括:加载模块,用于在可擦除可编程逻辑器件epld接收到cpu复位信号时,控制引导加载程序bootloader读取所述epld中热重启寄存器的值;判断模块,用于判断所述epld的热重启寄存器是否为预定义值;以及处理模块,用于阻止所述epld向所述交换芯片的外设传递所述cpu复位信号,并控制所述bootloader不对所述交换芯片的外设执行初始化。9.一种电子设备,其特征在于,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1至7中任一项所述的交换芯片热重启的方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的交换芯片热重启
的方法的步骤。

技术总结
本发明公开了一种交换芯片热重启的方法和装置、电子设备和存储介质,该方法包括以下步骤:在可擦除可编程逻辑器件EPLD接收到CPU复位信号后,控制引导加载程序Bootloader读取所述EPLD的热重启寄存器的值;判断所述EPLD的热重启寄存器的值是否为预定义值;以及若是,阻止所述EPLD向所述交换芯片的外设传递所述CPU复位信号,并控制所述Bootloader不对所述交换芯片的外设执行初始化。该方法能够解决部分CPU不支持kexec或者对kexec的支持存在限制的问题,实现了保持交换芯片转发功能正常的热重启。重启。重启。


技术研发人员:施雷 刘松 梁芳 武帅
受保护的技术使用者:苏州盛科通信股份有限公司
技术研发日:2023.04.21
技术公布日:2023/7/18
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐