CN110908722B - 应用于操作***启动的方法、装置、电子设备及存储介质 - Google Patents
应用于操作***启动的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110908722B CN110908722B CN201911204971.7A CN201911204971A CN110908722B CN 110908722 B CN110908722 B CN 110908722B CN 201911204971 A CN201911204971 A CN 201911204971A CN 110908722 B CN110908722 B CN 110908722B
- Authority
- CN
- China
- Prior art keywords
- starting
- monitoring parameter
- mode
- kernel
- recovery
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种应用于操作***启动的方法、装置、电子设备及存储介质,其中,该方法包括:在确定当前次开机引导程序成功启动之后,从非易失性存储模块中读取第一监控参数;所述第一监控参数用于指示允许内核启动失败的次数;根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序;在确定内核引导程序成功启动之后,从所述非易失性存储模块中读取第二监控参数;所述第二监控参数用于指示允许***启动失败的次数;根据所述第二监控参数,启动与所述当前次启动模式对应的***程序。上述方案能够通过非易失的第一监控参数和第二监控参数分别对内核启动和***启动进行有效监控,避免***升级后无法启动的问题,提升***升级的可用性。
Description
技术领域
本申请涉及移动通信技术领域,具体而言,涉及一种应用于操作***启动的方法、装置、电子设备及存储介质。
背景技术
随着通信技术的不断发展,电脑、智能手机、网络电视等终端设备越来越普及。在这些设备的使用过程中,为了优化设备的性能,需要不断地进行***升级,即是对内置的操作***,如安卓(Android)***、IOS***或其它操作***,进行升级。
以Android***为例,空中下载(Over the Air,OTA)作为一种通过无线网络进行升级包的下载以实现***软件固定版本的升级方式被广泛应用于Android***的升级中。在进行OTA升级的过程中,终端设备处于关机状态,成功完成升级之后,设备得以重启,其中需要依次经过开机引导过程、内核加载过程、以及Android***启动过程。
然而,若在升级的过程中出现掉电或者升级包不完整的情况,往往会导致升级后的设备无法重启。
发明内容
有鉴于此,本申请的目的在于提供至少一种应用于操作***启动的方案,能够通过非易失监控参数对内核启动和***启动进行有效监控,避免***升级后无法启动的问题,提升***升级的可用性。
主要包括以下几个方面:
第一方面,本申请提供了一种应用于操作***启动的方法,所述方法包括:
在确定当前次开机引导程序成功启动之后,从非易失性存储模块中读取第一监控参数;所述第一监控参数用于指示允许内核启动失败的次数;
根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序;
在确定内核引导程序成功启动之后,从所述非易失性存储模块中读取第二监控参数;所述第二监控参数用于指示允许***启动失败的次数;
根据所述第二监控参数,启动与所述当前次启动模式对应的***程序。
在一种实施方式中,所述根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序,包括:
判断当前次启动模式是否为Recovery恢复模式;
若判断出所述当前次启动模式为Recovery恢复模式,则启动与所述Recovery恢复模式对应的恢复内核引导程序;
若判断出所述当前次启动模式为正常模式,则在对所述第一监控参数执行减1操作之后,判断所述第一监控参数的当前值是否为0;
若判断出所述第一监控参数的当前值非0,则启动与所述正常模式对应的正常内核引导程序。
在一种实施方式中,所述根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序,还包括:
若判断出所述第一监控参数的当前值为0,则将所述当前次启动模式设置为Recovery恢复模式,并启动与所述Recovery恢复模式对应的恢复内核引导程序。
在一种实施方式中,在启动与所述Recovery恢复模式对应的恢复内核引导程序之后,还包括:
根据启动所述恢复内核引导程序所采用的启动参数,对与所述正常模式对应的正常内核引导程序进行恢复,得到与所述正常模式对应的恢复后的正常内核引导程序;
将下一次启动模式设置为正常模式;
将所述第一监控参数和所述第二监控参数均恢复至初始值,并启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式的步骤。
在一种实施方式中,在启动与所述正常模式对应的正常内核引导程序之后,还包括:
若确定内核引导程序启动失败,则启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式。
在一种实施方式中,所述根据所述第二监控参数,启动与所述当前次启动模式对应的***程序,包括:
在对所述第二监控参数执行减1操作之后,判断所述第二监控参数的当前值是否为0;
若判断出所述第二监控参数的当前值不为0,则启动与所述正常模式对应的***程序。
在一种实施方式中,所述根据所述第二监控参数,启动与所述当前次启动模式对应的***程序,还包括:
若判断出所述第二监控参数的当前值为0,则从非易失性存储模块中读取第三监控参数;所述第三监控参数用于指示Recovery恢复模式的降级类型;
根据所述第三监控参数,将下一次启动模式设置为与所述降级类型对应的Recovery恢复模式;
启动与所述Recovery恢复模式对应的下一次开机引导程序。
第二方面,本申请还提供了一种应用于操作***启动的装置,所述装置包括:
第一读取模块,用于在确定当前次开机引导程序成功启动之后,从非易失性存储模块中读取第一监控参数;所述第一监控参数用于指示允许内核启动失败的次数;
内核启动模块,用于根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序;
第二读取模块,用于在确定内核引导程序成功启动之后,从所述非易失性存储模块中读取第二监控参数;所述第二监控参数用于指示允许***启动失败的次数;
***启动模块,用于根据所述第二监控参数,启动与所述当前次启动模式对应的***程序。
在一种实施方式中,所述内核启动模块,用于根据以下步骤启动与当前次启动模式对应的内核引导程序:
判断当前次启动模式是否为Recovery恢复模式;
若判断出所述当前次启动模式为Recovery恢复模式,则启动与所述Recovery恢复模式对应的恢复内核引导程序;
若判断出所述当前次启动模式为正常模式,则在对所述第一监控参数执行减1操作之后,判断所述第一监控参数的当前值是否为0;
若判断出所述第一监控参数的当前值非0,则启动与所述正常模式对应的正常内核引导程序。
在一种实施方式中,所述内核启动模块,还用于根据以下步骤启动与当前次启动模式对应的内核引导程序:
若判断出所述第一监控参数的当前值为0,则将所述当前次启动模式设置为Recovery恢复模式,并启动与所述Recovery恢复模式对应的恢复内核引导程序。
在一种实施方式中,所述装置还包括:
第一开机启动模块,用于在启动与所述Recovery恢复模式对应的恢复内核引导程序之后,根据启动所述恢复内核引导程序所采用的启动参数,对与所述正常模式对应的正常内核引导程序进行恢复,得到与所述正常模式对应的恢复后的正常内核引导程序;
将下一次启动模式设置为正常模式;
将所述第一监控参数和所述第二监控参数均恢复至初始值,并启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式的步骤。
在一种实施方式中,所述装置还包括:
第二开机启动模块,用于在启动与所述正常模式对应的正常内核引导程序之后,若确定内核引导程序启动失败,则启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式。
在一种实施方式中,所述***启动模块,用于根据以下步骤启动与所述当前次启动模式对应的***程序:
在对所述第二监控参数执行减1操作之后,判断所述第二监控参数的当前值是否为0;
若判断出所述第二监控参数的当前值不为0,则启动与所述正常模式对应的***程序。
在一种实施方式中,所述***启动模块,还用于根据以下步骤启动与所述当前次启动模式对应的***程序:
若判断出所述第二监控参数的当前值为0,则从非易失性存储模块中读取第三监控参数;所述第三监控参数用于指示Recovery恢复模式的降级类型;
根据所述第三监控参数,将下一次启动模式设置为与所述降级类型对应的Recovery恢复模式;
启动与所述Recovery恢复模式对应的下一次开机引导程序。
第三方面,本申请还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面及其各种实施方式任一所述应用于操作***启动的方法的步骤。
第三方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面及其各种实施方式任一所述应用于操作***启动的方法的步骤。
采用上述方案,其在确定当前次开机引导程序成功启动之后,首先从非易失性存储模块中读取第一监控参数,以根据该第一监控参数,启动与当前次启动模式对应的内核引导程序;然后在确定内核引导程序成功启动之后,从所述非易失性存储模块中读取第二监控参数,以根据该第二监控参数,启动与当前次启动模式对应的***程序,其中,第一监控参数和第二监控参数用于分别指示允许内核和***启动失败的次数。上述方案能够通过非易失的第一监控参数和第二监控参数分别对内核启动和***启动进行有效监控,避免***升级后无法启动的问题,提升***升级的可用性。
另外,即使是在达到失败次数之后,可以结合当前次启动模式来启动对应的恢复内核引导程序和恢复***程序以实现降级方式下的启动,从而进一步提升了***升级的可用性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例一提供的一种应用于操作***启动的方法流程图;
图2示出了本申请实施例一提供的一种应用于操作***启动的方法中,内核引导程序启动具体方法的流程图;
图3示出了本申请实施例一提供的一种应用于操作***启动的方法中,开机引导程序启动具体方法的流程图;
图4示出了本申请实施例一提供的一种应用于操作***启动的方法中,***程序启动具体方法的流程图;
图5示出了本申请实施例一提供的一种应用于操作***启动的方法的工作流程图;
图6示出了本申请实施例二提供的一种应用于操作***启动的装置的结构示意图;
图7示出了本申请实施例三提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在相关技术中,若在***升级的过程中出现掉电或者升级包不完整等情况,往往会导致升级后的设备无法重启。基于上述研究,本申请提供了一种应用于操作***启动的方法、装置、电子设备和存储介质,能够通过非易失监控参数对内核启动和***启动进行有效监控,避免***升级后无法启动的问题,提升***升级的可用性。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本申请针对上述问题所提出的解决方案,都属于发明人在本申请过程中对本申请做出的贡献性内容。
下面将结合本申请中附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为了便于理解本申请所提供的应用于操作***启动的方法、装置、电子设备及存储介质,接下来通过几个实施例进行具体描述。
实施例一
参见图1所示的本申请实施例一提供的一种应用于操作***启动的方法的流程图,该应用于操作***启动的方法的执行主体可以是安装有安卓(Android)操作***的电子设备,该电子设备可以是终端设备等,例如,终端可以是移动电话、平板电脑等,终端还可以是便携式、手持式、袖珍式等,本申请实施例对此不做具体的限制。另外,上述应用于操作***启动的方法可以应用于终端设备在进行空中下载(Over the Air,OTA)升级失败后无法启动的应用场景中。
如图1所示,上述应用于操作***启动的方法具体包括如下步骤:
S101、在确定当前次开机引导程序成功启动之后,从非易失性存储模块中读取第一监控参数;所述第一监控参数用于指示允许内核启动失败的次数;
S102、根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序;
S103、在确定内核引导程序成功启动之后,从所述非易失性存储模块中读取第二监控参数;所述第二监控参数用于指示允许***启动失败的次数;
S104、根据所述第二监控参数,启动与所述当前次启动模式对应的***程序。
这里,为了便于对本申请实施例提供的应用于操作***启动的方法的理解,首先对Android***的启动过程进行简单说明。有关Android***的启动过程大致分为三个阶段,第一个阶段是开机引导过程,即上电开机,执行BootLoader引导装载程序(对应开机引导程序),第二个阶段是内核加载过程,即BootLoader加载Linux内核并启动内核引导程序,加载各种驱动和数据结构,第三个阶段即是Android主***启动过程,即加载Android虚拟机并启动各种服务和应用。
考虑到***升级失败后,将可能导致上述三个阶段中任意阶段的启动失败,也即是,不管是由于在升级过程中出现掉电或者升级包不完整,还是升级过程没有问题,但是升级包本身有缺陷,均可能导致升级后的***无法启动,且可能是由于内核加载启动失败所导致的***无法启动,也可能是内核正常启动而主***无法正常启动所导致的***无法启动。正是为了解决这一问题,本申请实施例才提供了一种基于各个监控参数进行各个启动阶段的监控以实现***的正常启动。
值得说明的是,上述三个阶段可以是顺序执行的,前一个阶段的成功执行是执行下一个阶段的前提。在具体应用中,考虑到开机引导过程中,开机引导程序在出厂后几乎是不会发生更新的,因此,本申请实施例可以基于开机引导过程的执行者来观察内核加载过程的进行(即,利用第一监控参数来监测内核的启动),也可以基于内核加载过程的执行者来观察Android主***启动过程的进行(即,利用第二监控参数来监测主***的启动)。
其中,上述第一监控参数和第二监控参数可以是存储在非易失性存储模块中,这样,针对内核启动而言,可以根据第一监控参数来确定内核启动的失败次数,假设总共允许正常内核引导程序启动失败5次,达到这一失败次数后,则需要降级利用恢复内核引导程序来启动,其中,本申请实施例可以采用一次或多次降级来恢复;同理,针对主***启动而言,可以根据第二监控参数来确定***启动的失败次数,假设总共允许***启动失败5次,达到这一失败次数后,则需要降级利用恢复***程序来启动,其中,本申请实施例可以采用一次或多次降级来恢复。上述恢复内核引导程序与恢复***程序可以是相互匹配的,也即采用第一次降级时所采用的恢复内核引导程序,其恢复***程序匹配的将是第一次降级时所采用的恢复***程序,也即,在降级的过程中,内核和主***是同步降级的。
在具体应用中,可以选用两级回退策略,也即,可以选用差分方式进行第一次降级,回退到***升级前所用***,这时,可以确保降级后的***是与当前的业务场景更为贴切的***,提升***升级的可用性,如果回退之后的***依旧无法正常启动,此时可以选用全量包降级方法进行第二次降级,回退到更久之前的***(如出厂时所采用的经过验证的出厂***),这时可以确保降级后的***一定是可以启动的,从而进一步提升***升级的可用性。
除此之外,本申请实施例还可以选用三级回退策略、四级回退策略等,本申请实施例对此不做具体的限制,以满足不同应用场景的应用需求。
其中,上述非易失性存储模块可以是闪存(flash),还可以是其它在断电后,所存储的数据不会消失的存储模块,这样,可以利用该非易失性存储模块的存储特性记录内核启动失败的次数以及***启动失败的次数,在达到预设失败次数之后,即可以启动***降级,以实现***升级的可用性。
另外,在具体应用中,本申请实施例中的上述第一监控参数可以是内核启动使用的看门狗(WatchDog),以用来监控内核是否正常启动,以及通过设置合适的初值决定可以容忍内核启动失败的次数,上述第二监控参数可以是Android启动使用的看门狗,用来监控Android是否正常启动,以及通过设置合适的初值决定可以容忍Android启动失败的次数。
本申请实施例中的当前次启动模块可以是正常模式,也可以是Recovery恢复模式,其中,Recovery恢复模式的降级类型可以利用第三监控参数来指示,该第三监控参数可以是Android启动完成的标志,如指示是第一次降级还是第二次降级。本申请实施例中,针对当前次启动模式的不同可以选用不同的***启动方式。如图2所示,本申请实施例提供了一种内核引导程序的引导方法,该方法具体包括如下步骤:
S201、判断当前次启动模式是否为Recovery恢复模式;
若判断出所述当前次启动模式为Recovery恢复模式,则执行S202;
若判断出所述当前次启动模式为正常模式(即非Recovery恢复模式),则执行S203;
S202、启动与所述Recovery恢复模式对应的恢复内核引导程序;
S203、在对所述第一监控参数执行减1操作之后,判断所述第一监控参数的当前值是否为0。
这里,本申请实施例可以首先判断当前次启动模式是否为Recovery恢复模式,这里的Recovery恢复模式可以是第一次降级所对应的Recovery恢复模式,还可以是第二次降级所对应的Recovery恢复模式,不管是哪一次降级所对应的Recovery恢复模式,一旦开机引导程序的执行者确定当前次启动模式是Recovery恢复模式,则启动与该Recovery恢复模式对应的恢复内核引导程序,一旦开机引导程序的执行者确定当前次启动模式是正常模式,则在对所述第一监控参数执行减1操作之后,判断所述第一监控参数的当前值是否为0,这里的执行减1操作可以是开机引导程序启动之后执行的,这样,可以通过第一监控参数的当前值确定是否达到内核启动失败的次数,如果是,则需要在正常模式下进行模式重置,并基于Recovery恢复模式进行降级操作。
本申请实施例中的正常模式可以是从boot.img启动***,而Recovery恢复模式则可以是从reovery.img启动***,该Recovery恢复模式可以是对安卓设备内部的数据或***进行修改的模式。
本申请实施例中,在判断出所述第一监控参数的当前值非0时,可以确定出尚未达到内核启动失败的次数,这时,可以按照正常模式对应的正常内核引导程序启动内核,这里的正常内核引导程序可以是指升级后的内核引导程序。随着内核启动次数的增加,若升级后的内核在第一监控参数递减到0时,一直无法启动升级后的内核引导程序,这时,可以将所述当前次启动模式设置为Recovery恢复模式,并启动与所述Recovery恢复模式对应的恢复内核引导程序。也即,本申请实施例可以先利用Recovery恢复模式对***进行降级修改,以得到恢复后的正常内核引导程序,而后再将模式重置到正常模式,以通过恢复后的正常内核引导程序进行内核启动。
这里,如图3所示,可以按照如下步骤进行下一次开机引导程序的启动。
S301、根据启动恢复内核引导程序所采用的启动参数,对与正常模式对应的正常内核引导程序进行恢复,得到与所述正常模式对应的恢复后的正常内核引导程序;
S302、将下一次启动模式设置为正常模式;
S303、将所述第一监控参数和所述第二监控参数均恢复至初始值,并启动下一次开机引导程序;
S304、在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式的步骤。
这里,首先可以根据启动所述恢复内核引导程序所采用的启动参数,对与所述正常模式对应的正常内核引导程序进行恢复,得到与所述正常模式对应的恢复后的正常内核引导程序,上述恢复过程可以指的是利用已存降级包对升级后的正常内核引导程序进行恢复的过程,针对第一次降级时,可以采用差分降级方式(即利用两者的差异)来恢复,针对第二次降级则可以采用全量包降级方式(即利用文件覆盖方式)来恢复。
在得到与正常模式对应的恢复后的正常内核引导程序之后,可以将下一次启动模式设置为正常模式,并可以将第一监控参数和第二监控参数恢复至初始值以启动下一次开机引导程序,以再一次根据监控参数确定恢复后的正常内核引导程序能否成功启动,如历经5次失败后该恢复后的正常引导程序依旧无法启动,这时,即可以再一次降级,再次进行内核恢复,以达到在正常模式下启动恢复后的正常内核引导程序的目的。
这里,内核引导程序启动的成功是进入***程序启动的前提,如果确定内核引导程序启动失败,则启动下一次开机引导程序;并在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式。
本申请实施例中,在确定内核引导程序成功启动之后,可以根据所述第二监控参数,启动与所述当前次启动模式对应的***程序,如图4所示,上述***程序的启动过程具体包括如下步骤:
S401、在对第二监控参数执行减1操作之后,判断所述第二监控参数的当前值是否为0;
S402、若判断出所述第二监控参数的当前值不为0,则启动与正常模式对应的***程序。
这里,可以在对所述第二监控参数执行减1操作之后,首先判断所述第二监控参数的当前值是否为0。本申请实施例中,在判断出所述第二监控参数的当前值非0时,可以确定出尚未达到***启动失败的次数,这时,可以按照正常模式对应的正常***程序启动***,这里的正常***程序可以是指升级后的正常***程序。
本申请实施例中,可以通过检测启动器(Launcher)是否启动超时来判断Android***是否正常启动,如果Launcher启动超时则重启***。
随着***启动次数的增加,若升级后的***在第二监控参数递减到0时,一直无法启动升级后的正常***程序,这时,可以将所述当前次启动模式设置为Recovery恢复模式,并启动与所述Recovery恢复模式对应的恢复***程序。也即,本申请实施例可以先利用Recovery恢复模式对***进行降级修改,以得到恢复后的正常***程序,而后再将模式重置到正常模式,以通过恢复后的正常***程序进行***启动。
其中,在判断出第二监控参数的当前值为0时,可以从非易失性存储模块中读取第三监控参数,根据该第三监控参数,可以将下一次启动模式设置为与所述降级类型对应的Recovery恢复模式,以启动与所述Recovery恢复模式对应的下一次开机引导程序。也即,可以根据第三监控参数确定下一次降级的降级类型,如是第一次降级还是第二次降级,这样,在内核启动的过程中,如果在当前是运行在第一次降级的Recovery恢复模式,则可以启动与该第一次降级的Recovery恢复模式对应的恢复内核引导程序,若当前是运行在第二次降级的Recovery恢复模式,则可以启动与该第二次降级的Recovery恢复模式对应的恢复内核引导程序,从而能够确保及时升级后的内核或***不可启动时,也可以根据多级回退策略成功的启动***,以提升***的可用性。
为了便于进一步理解上述内容,接下来结合图5所示的工作流程图对本申请实施例提供的应用于操作***启动的方法进行描述。
1.BootLoader启动(即LK启动),对计数器BOOT_WD(即第一监控参数)执行减1操作,目的在于记录内核启动的状态;
2.判断当前启动模式是否为Recovery恢复模式,目的在于稍后内核启动时选择对应的内核启动;
3.如果当前启动模式是Recovery恢复模式,那么直接按照恢复内核引导程序进行启动;
4.如果当前启动模式不是Recovery恢复模式,即正常模式,那么继续判断BOOT_WD是否已经减到0。如果不为0,说明还可以容忍之前内核启动失败,继续以正常流程启动;反之,如果已经减到0,那么意味着之前的内核启动失败次数过多,需要设置为差分降级模式进行降级操作。
5.在BootLoader执行之后,开始引导内核启动,此时根据设置的启动模式选择合适的内核进行启动。
6.如果以Recovery恢复模式启动内核,那么不需要修改BOOT_WD/OS_WD(对应第二监控参数)的值,只需要根据进入Recovery恢复模式的内核参数来执行OTA升级操作。这里兼容正常的OTA升级过程,同时也扩展支持差分降级操作和全量包的降级操作。其中,在OTA完成后,需要恢复启动模式为正常模式并复位BOOT_WD/OS_WD的值,也就是恢复***到初始状态。另外,需要根据Recovery恢复模式的参数(即降级类型)设置BOOT_SUCCESS(对应第三监控参数)为不同的值,为后面区分是普通的差分包降级还是全量包降级做准备,如在BOOT_SUCCESS为0时,对应第一级Recovery恢复模式(对应差分包降级),在BOOT_SUCCESS为1时,对应第二级Recovery恢复模式(对应全量包降级),在这些流程完成后重启***。
7.如果是以正常模式启动内核,如果一直启动失败,则会持续对BOOT_WD减1,直到为0后执行降级操作。反之如果内核启动完成,那么首先需要复位BOOT_WD的值,表示内核启动过程已经正常完成。同时对OS_WD减1,表示开始对Android***的启动过程开始进行监控。
8.如果OS_WD不为0,说明本次Android启动还可以继续。那么可以通过检测Launcher是否启动超时来判断Android是否正常启动。如果Launcher启动超时则重启***,重复以上过程;如果Launcher正常启动,即在完整的Android***启动后,需要将所有标志位都恢复到初始状态。
9.如果OS_WD为0,说明之前Android启动失败次数过多,必须进行降级操作。
10.如果当前的启动模式为正常模式,则需要根据BOOT_SUCCESS的值来判断使用差分降级还是全量包降级。最终返回到第6步进行实际的降级操作。
值得说明的是,为了兼容原有的OTA逻辑,BootLoader可以通过读取特定位置的幻数(magic number)来区分是否为升级后的***,如果是,则可以按照上述应用于操作***启动方法来依次启动内核和***,如果否,则按照原有操作流程来执行***启动。
实施例二
基于同一发明构思,本申请实施例还提供了与上述实施例提供的应用于操作***启动的方法对应的应用于操作***启动的装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述应用于操作***启动的方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图6所示,为本申请实施例提供的一种应用于操作***启动的装置的示意图,上述装置包括:
第一读取模块601,用于在确定当前次开机引导程序成功启动之后,从非易失性存储模块中读取第一监控参数;所述第一监控参数用于指示允许内核启动失败的次数;
内核启动模块602,用于根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序;
第二读取模块603,用于在确定内核引导程序成功启动之后,从所述非易失性存储模块中读取第二监控参数;所述第二监控参数用于指示允许***启动失败的次数;
***启动模块604,用于根据所述第二监控参数,启动与所述当前次启动模式对应的***程序。
在一种实施方式中,所述内核启动模块602,用于根据以下步骤启动与当前次启动模式对应的内核引导程序:
判断当前次启动模式是否为Recovery恢复模式;
若判断出所述当前次启动模式为Recovery恢复模式,则启动与所述Recovery恢复模式对应的恢复内核引导程序;
若判断出所述当前次启动模式为正常模式,则在对所述第一监控参数执行减1操作之后,判断所述第一监控参数的当前值是否为0;
若判断出所述第一监控参数的当前值非0,则启动与所述正常模式对应的正常内核引导程序。
在一种实施方式中,所述内核启动模块602,还用于根据以下步骤启动与当前次启动模式对应的内核引导程序:
若判断出所述第一监控参数的当前值为0,则将所述当前次启动模式设置为Recovery恢复模式,并启动与所述Recovery恢复模式对应的恢复内核引导程序。
在一种实施方式中,所述装置还包括:
第一开机启动模块605,用于在启动与所述Recovery恢复模式对应的恢复内核引导程序之后,根据启动所述恢复内核引导程序所采用的启动参数,对与所述正常模式对应的正常内核引导程序进行恢复,得到与所述正常模式对应的恢复后的正常内核引导程序;
将下一次启动模式设置为正常模式;
将所述第一监控参数和所述第二监控参数均恢复至初始值,并启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式的步骤。
在一种实施方式中,所述装置还包括:
第二开机启动模块606,用于在启动与所述正常模式对应的正常内核引导程序之后,若确定内核引导程序启动失败,则启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式。
在一种实施方式中,所述***启动模块604,用于根据以下步骤启动与所述当前次启动模式对应的***程序:
在对所述第二监控参数执行减1操作之后,判断所述第二监控参数的当前值是否为0;
若判断出所述第二监控参数的当前值不为0,则启动与所述正常模式对应的***程序。
在一种实施方式中,所述***启动模块604,还用于根据以下步骤启动与所述当前次启动模式对应的***程序:
若判断出所述第二监控参数的当前值为0,则从非易失性存储模块中读取第三监控参数;所述第三监控参数用于指示Recovery恢复模式的降级类型;
根据所述第三监控参数,将下一次启动模式设置为与所述降级类型对应的Recovery恢复模式;
启动与所述Recovery恢复模式对应的下一次开机引导程序。
实施例三
本申请实施例还提供了一种电子设备,如图7所示,为本申请实施例提供的电子设备的结构示意图,包括:处理器701、存储介质702和总线703。存储介质702存储有处理器701可执行的机器可读指令(比如,图6中的应用于操作***启动的装置中第一读取模块601、内核启动模块602、第二读取模块603以及***启动模块604对应的执行指令等),当电子设备运行时,处理器701与存储介质702之间通过总线703通信,机器可读指令被处理器701执行时执行以下指令:
在确定当前次开机引导程序成功启动之后,从非易失性存储模块中读取第一监控参数;所述第一监控参数用于指示允许内核启动失败的次数;
根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序;
在确定内核引导程序成功启动之后,从所述非易失性存储模块中读取第二监控参数;所述第二监控参数用于指示允许***启动失败的次数;
根据所述第二监控参数,启动与所述当前次启动模式对应的***程序。
在一种实施方式中,上述处理器701执行的指令中,所述根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序,包括:
判断当前次启动模式是否为Recovery恢复模式;
若判断出所述当前次启动模式为Recovery恢复模式,则启动与所述Recovery恢复模式对应的恢复内核引导程序;
若判断出所述当前次启动模式为正常模式,则在对所述第一监控参数执行减1操作之后,判断所述第一监控参数的当前值是否为0;
若判断出所述第一监控参数的当前值非0,则启动与所述正常模式对应的正常内核引导程序。
在一种实施方式中,所述根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序,上述处理器701执行的指令还包括:
若判断出所述第一监控参数的当前值为0,则将所述当前次启动模式设置为Recovery恢复模式,并启动与所述Recovery恢复模式对应的恢复内核引导程序。
在一种实施方式中,在启动与所述Recovery恢复模式对应的恢复内核引导程序之后,上述处理器701执行的指令还包括:
根据启动所述恢复内核引导程序所采用的启动参数,对与所述正常模式对应的正常内核引导程序进行恢复,得到与所述正常模式对应的恢复后的正常内核引导程序;
将下一次启动模式设置为正常模式;
将所述第一监控参数和所述第二监控参数均恢复至初始值,并启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式的步骤。
在一种实施方式中,在启动与所述正常模式对应的正常内核引导程序之后,上述处理器701执行的指令还包括:
若确定内核引导程序启动失败,则启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式。
在一种实施方式中,上述处理器701执行的指令中,所述根据所述第二监控参数,启动与所述当前次启动模式对应的***程序,包括:
在对所述第二监控参数执行减1操作之后,判断所述第二监控参数的当前值是否为0;
若判断出所述第二监控参数的当前值不为0,则启动与所述正常模式对应的***程序。
在一种实施方式中,所述根据所述第二监控参数,启动与所述当前次启动模式对应的***程序,上述处理器701执行的指令还包括:
若判断出所述第二监控参数的当前值为0,则从非易失性存储模块中读取第三监控参数;所述第三监控参数用于指示Recovery恢复模式的降级类型;
根据所述第三监控参数,将下一次启动模式设置为与所述降级类型对应的Recovery恢复模式;
启动与所述Recovery恢复模式对应的下一次开机引导程序。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器701运行时执行如实施例一所述的应用于操作***启动的方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使响应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (9)
1.一种应用于操作***启动的方法,其特征在于,所述方法包括:
在确定当前次开机引导程序成功启动之后,从非易失性存储模块中读取第一监控参数;所述第一监控参数用于指示允许内核启动失败的次数;
根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序;
在确定内核引导程序成功启动之后,从所述非易失性存储模块中读取第二监控参数;所述第二监控参数用于指示允许***启动失败的次数;
根据所述第二监控参数,启动与所述当前次启动模式对应的***程序;
所述根据所述第二监控参数,启动与所述当前次启动模式对应的***程序包括:
在对所述第二监控参数执行减1操作之后,判断所述第二监控参数的当前值是否为0;
若判断出所述第二监控参数的当前值为0,则从非易失性存储模块中读取第三监控参数;所述第三监控参数用于指示Recovery恢复模式的降级类型;
根据所述第三监控参数,将下一次启动模式设置为与所述降级类型对应的Recovery恢复模式;所述降级类型用于指示***执行的是第几次版本降级,以实现多级回退的策略;
启动与所述Recovery恢复模式对应的下一次开机引导程序。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序,包括:
判断当前次启动模式是否为Recovery恢复模式;
若判断出所述当前次启动模式为Recovery恢复模式,则启动与所述Recovery恢复模式对应的恢复内核引导程序;
若判断出所述当前次启动模式为正常模式,则在对所述第一监控参数执行减1操作之后,判断所述第一监控参数的当前值是否为0;
若判断出所述第一监控参数的当前值非0,则启动与所述正常模式对应的正常内核引导程序。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序,还包括:
若判断出所述第一监控参数的当前值为0,则将所述当前次启动模式设置为Recovery恢复模式,并启动与所述Recovery恢复模式对应的恢复内核引导程序。
4.根据权利要求3所述的方法,其特征在于,在启动与所述Recovery恢复模式对应的恢复内核引导程序之后,还包括:
根据启动所述恢复内核引导程序所采用的启动参数,对与所述正常模式对应的正常内核引导程序进行恢复,得到与所述正常模式对应的恢复后的正常内核引导程序;
将下一次启动模式设置为正常模式;
将所述第一监控参数和所述第二监控参数均恢复至初始值,并启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式的步骤。
5.根据权利要求2所述的方法,其特征在于,在启动与所述正常模式对应的正常内核引导程序之后,还包括:
若确定内核引导程序启动失败,则启动下一次开机引导程序;
在确定下一次开机引导程序成功启动之后,循环执行判断下一次启动模式是否为Recovery恢复模式。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第二监控参数,启动与所述当前次启动模式对应的***程序,还包括:
若判断出所述第二监控参数的当前值不为0,则启动与正常模式对应的***程序。
7.一种应用于操作***启动的装置,其特征在于,所述装置包括:
第一读取模块,用于在确定当前次开机引导程序成功启动之后,从非易失性存储模块中读取第一监控参数;所述第一监控参数用于指示允许内核启动失败的次数;
内核启动模块,用于根据所述第一监控参数,启动与当前次启动模式对应的内核引导程序;
第二读取模块,用于在确定内核引导程序成功启动之后,从所述非易失性存储模块中读取第二监控参数;所述第二监控参数用于指示允许***启动失败的次数;
***启动模块,用于根据所述第二监控参数,启动与所述当前次启动模式对应的***程序;
所述***启动模块,具体用于在对所述第二监控参数执行减1操作之后,判断所述第二监控参数的当前值是否为0;
若判断出所述第二监控参数的当前值为0,则从非易失性存储模块中读取第三监控参数;所述第三监控参数用于指示Recovery恢复模式的降级类型;
根据所述第三监控参数,将下一次启动模式设置为与所述降级类型对应的Recovery恢复模式;所述降级类型用于指示***执行的是第几次版本降级,以实现多级回退的策略;
启动与所述Recovery恢复模式对应的下一次开机引导程序。
8.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至6任一所述应用于操作***启动的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至6任一所述应用于操作***启动的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911204971.7A CN110908722B (zh) | 2019-11-29 | 2019-11-29 | 应用于操作***启动的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911204971.7A CN110908722B (zh) | 2019-11-29 | 2019-11-29 | 应用于操作***启动的方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110908722A CN110908722A (zh) | 2020-03-24 |
CN110908722B true CN110908722B (zh) | 2021-01-12 |
Family
ID=69820857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911204971.7A Active CN110908722B (zh) | 2019-11-29 | 2019-11-29 | 应用于操作***启动的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110908722B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111814118A (zh) * | 2020-07-08 | 2020-10-23 | 广东小天才科技有限公司 | 一种防破解方法及家教机 |
CN113626059B (zh) * | 2021-10-13 | 2022-02-08 | 北京创米智汇物联科技有限公司 | ***升级方法、摄像机及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329631A (zh) * | 2007-06-21 | 2008-12-24 | 大唐移动通信设备有限公司 | 一种嵌入式***自动检测和恢复启动的方法及装置 |
CN109992453A (zh) * | 2019-04-30 | 2019-07-09 | Oppo广东移动通信有限公司 | ***恢复方法及相关产品 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7822963B2 (en) * | 2007-06-05 | 2010-10-26 | Hewlett-Packard Development Company, L.P. | Remote computer operating system upgrade |
KR20090026535A (ko) * | 2007-09-10 | 2009-03-13 | 삼성전자주식회사 | 영상기기 및 이를 포함하는 영상시스템과 그의 소프트웨어업그레이드 방법 |
CN103902399B (zh) * | 2012-12-28 | 2017-05-10 | 华为技术有限公司 | 软件***修复处理方法及装置 |
CN104063477B (zh) * | 2014-06-30 | 2017-08-29 | 广东威创视讯科技股份有限公司 | 嵌入式***启动异常的处理方法及装置 |
CN109471670A (zh) * | 2018-12-21 | 2019-03-15 | 迈普通信技术股份有限公司 | 设备启动方法及电子设备 |
US11379214B2 (en) * | 2019-03-29 | 2022-07-05 | Intel Corporation | Runtime firmware activation for memory devices |
-
2019
- 2019-11-29 CN CN201911204971.7A patent/CN110908722B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329631A (zh) * | 2007-06-21 | 2008-12-24 | 大唐移动通信设备有限公司 | 一种嵌入式***自动检测和恢复启动的方法及装置 |
CN109992453A (zh) * | 2019-04-30 | 2019-07-09 | Oppo广东移动通信有限公司 | ***恢复方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN110908722A (zh) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634645B (zh) | 固件升级方法及终端 | |
US9471435B2 (en) | Information processing device, information processing method, and computer program | |
CN109032632B (zh) | 一种fota升级方法、无线通信终端及存储介质 | |
GB2466685A (en) | Fault tolerant updating of firmware | |
CN104573529B (zh) | 一种bios固件的划分、更新方法和*** | |
CN110908722B (zh) | 应用于操作***启动的方法、装置、电子设备及存储介质 | |
CN113254048B (zh) | 引导程序更新方法、装置、设备及计算机可读介质 | |
CN109753299A (zh) | 一种***升级方法、装置以及计算机存储介质 | |
CN106775674B (zh) | 一种基于通用引导加载程序的设备及其启动方法 | |
CN108345464A (zh) | 一种安卓***的启动方法及安卓车机 | |
CN109582332B (zh) | 互联网摄像机的***升级方法及装置 | |
KR20080023841A (ko) | 펌웨어 업그레이드와 손상된 펌웨어 자동 복구 시스템 및방법 | |
WO2015184732A1 (zh) | 引导程序的存储方法、故障恢复方法及设备、计算机存储介质 | |
CN111078469A (zh) | 一种数据处理方法和数据处理设备 | |
WO2021012170A1 (zh) | 固件启动方法、设备及计算机可读存储介质 | |
CN117130672A (zh) | 服务器启动流程控制方法、***、终端及存储介质 | |
CN111273928A (zh) | 一种自升级的bootloader设计方法 | |
CN115951920A (zh) | 移动设备升级方法、装置、存储单元和移动设备 | |
CN104834574B (zh) | 一种解决***分区损坏的方法及装置 | |
CN114995852A (zh) | 一种设备升级方法、设备及计算机可读存储介质 | |
CN111258617B (zh) | 一种电子设备 | |
CN113297010A (zh) | 基于片上***的固件恢复方法、装置、***及存储介质 | |
CN113778485A (zh) | 电子芯片的***运行方法、装置、电子芯片和存储介质 | |
CN106611124A (zh) | 计算机装置及其开机方法 | |
CN112667444A (zh) | 一种***升级方法、存储介质及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |