CN106325903A - 启动处理方法及装置 - Google Patents

启动处理方法及装置 Download PDF

Info

Publication number
CN106325903A
CN106325903A CN201510359972.4A CN201510359972A CN106325903A CN 106325903 A CN106325903 A CN 106325903A CN 201510359972 A CN201510359972 A CN 201510359972A CN 106325903 A CN106325903 A CN 106325903A
Authority
CN
China
Prior art keywords
boot2
boot
boot1
startup
case
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.)
Pending
Application number
CN201510359972.4A
Other languages
English (en)
Inventor
李俊杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201510359972.4A priority Critical patent/CN106325903A/zh
Priority to PCT/CN2016/083334 priority patent/WO2016206514A1/zh
Publication of CN106325903A publication Critical patent/CN106325903A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

本发明公开了一种启动处理方法及装置,其中,该方法包括:将BOOT程序按功能拆分为一个BOOT1和一个或多个BOOT2,其中,该BOOT1对应该一个或多个BOOT2,用于完成BOOT2的引导及引导该BOOT2所必须的硬件初始化,该BOOT2用于完成该BOOT所有或除该BOOT1以外的BOOT功能;通过该BOOT1对该BOOT2的启动完成BOOT启动处理,解决了相关技术中对BOOT的启动存在缺陷的问题,提高了设备启动和升级的成功率和安全性。

Description

启动处理方法及装置
技术领域
本发明涉及通信领域,具体而言,涉及启动处理方法及装置。
背景技术
数据通信产品通常采用嵌入式系统构架,通常需要使用BOOT来负责完成系统硬件的初始化以及相关应用程序的引导加载,因此,BOOT运行的稳定性和可靠性对于整个系统的启动至关重要。
现有的数据通信产品,在BOOT启动方式上通常存在如下的不足:
首先,现有的数据通信产品,通常采用单一BOOT的方式来启动设备,并且,BOOT数据通常是存放在NOR FLASH、NAND FLASH等存储器件中的,这些器件无论是在生产和使用过程中都有可能产生坏块,并且,这些坏块的产生都是随机的,如果使用单一BOOT,一旦BOOT数据存储的区域产生了坏块,那么整个BOOT将无法正常启动,从而造成整个设备无法启动。同时,由于这些存储器件坏块的产生是随机的,那么,也就是说,对于BOOT而言,数据被损坏的概率与BOOT数据所占用的存储空间大小是成线性比例的,BOOT数据存储所占用的存储空间越大,BOOT数据被损坏的可能性也会越大。这对于现在BOOT数据越来越大的数据通信产品而言,由此导致的BOOT启动失败的概率也会随之增加。
另外,现有的数据通信产品,在调试生产、测试及市场应用中,都会涉及到BOOT的数据更新问题,而现有的BOOT数据更新,一般采用的是烧录器烧录或在线升级的方式,对于烧录器烧录的方式,一般都需要有特定的硬件设备和软件来支持,操作相对会比较复杂,这种方式只适用于在设备生产过程中对BOOT数据的第一次烧录,或者是在实验室的调试阶段中使用;相对于烧录器烧录,在线升级的方式实现起来相对简单,对于软硬件环境的依赖也较小,现在被广泛应用于数据通信产品的开发、测试和市场应用等场景;但在实际应用中,在线升级的方式也存在着风险,也会出现一些情况导致BOOT升级失败,比如,升级的过程被中断、升级的BOOT本身就存在问题等,一旦遇到这种情况,不仅这次BOOT升级会失败,而且由于原有BOOT数据的损坏,还会造成BOOT无法再次在线升级,BOOT无法正常启动设备的情况出现,这时,就只能对设备单板进行更换或者返厂维修了,这不仅增加了设备维护成本,还有可能造成其它更加严重的后果。
针对相关技术中对BOOT的启动存在缺陷的问题,还未提出有效的解决方案。
发明内容
本发明提供了启动处理方法及装置,以至少解决相关技术中对BOOT的启动存在缺陷的问题。
根据本发明的一个方面,提供了一种启动处理方法,包括:将BOOT程序按功能拆分为一个BOOT1和一个或多个BOOT2,其中,所述BOOT1对应所述一个或多个BOOT2,用于完成BOOT2的引导及引导所述BOOT2所必须的硬件初始化,所述BOOT2用于完成所述BOOT所有或除所述BOOT1以外的BOOT功能;通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理。
进一步地,在通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理之前,所述方法还包括:通过BOOT1读取上次启动所述BOOT2的结果信息;将所述结果信息更新到所述BOOT2对应的数据区中。
进一步地,通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理包括:判断是否从存储器件FLASH的所有BOOT2中获取到与所述结果信息中的所述BOOT2相匹配的BOOT2;在判断结果为是的情况下,通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2完成BOOT启动处理。
进一步地,通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理还包括:在判断结果为否的情况下,通过所述BOOT1检测是否有外部USB存储设备挂载;在检测结果为是的情况下,判断所述USB存储设备上是否存在与所述结果信息中的所述BOOT2相匹配的BOOT2;在判断结果为是的情况下,在所述USB存储设备上获取所述BOOT2,通过所述BOOT1将所述BOOT2加载到内存,并对所述BOOT2的文件数据的完整性进行校验;在所述BOOT2的文件数据为完整的情况下,通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2完成BOOT启动处理。
进一步地,所述方法还包括:在通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2的同时,通过所述BOOT1启动计数器;判断在预定时间内是否收到用于关闭所述计数器的指示信息,其中,所述指示信息是所述BOOT2在成功完成所有内核引导前的初始化工作后,在启动内核时发送的;在判断结果为是的情况下,确定此次BOOT启动处理成功;在判断结果为否的情况下,确定此次BOOT启动处理异常。
根据本发明的另一方面,还提供了一种启动处理装置,包括:拆分模块,用于将BOOT程序按功能拆分为一个BOOT1和一个或多个BOOT2,其中,所述BOOT1对应所述一个或多个BOOT2,用于完成BOOT2的引导及引导所述BOOT2所必须的硬件初始化,所述BOOT2用于完成所述BOOT所有或除所述BOOT1以外的BOOT功能;启动处理模块,用于通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理。
进一步地,所述装置还包括:读取模块,用于通过BOOT1读取上次启动所述BOOT2的结果信息;更新模块,用于将所述结果信息更新到所述BOOT2对应的数据区中。
进一步地,所述启动处理模块包括:第一判断单元,用于判断是否从存储器件FLASH的所有BOOT2中获取到与所述结果信息中的所述BOOT2相匹配的BOOT2;启动处理单元,用于在判断结果为是的情况下,通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2完成BOOT启动处理。
进一步地,所述启动处理模块还包括:检测单元,用于在判断结果为否的情况下,通过所述BOOT1检测是否有外部USB存储设备挂载;第二判断单元,用于在检测结果为是的情况下,判断所述USB存储设备上是否存在与所述结果信息中的所述BOOT2相匹配的BOOT2;校验单元,用于在判断结果为是的情况下,在所述USB存储设备上获取所述BOOT2,通过所述BOOT1将所述BOOT2加载到内存,并对所述BOOT2的文件数据的完整性进行校验;标记单元,用于在所述BOOT2的文件数据为完整的情况下,通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2完成BOOT启动处理。
进一步地,所述装置还包括:启动单元,用于在通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2的同时,通过所述BOOT1启动计数器;第三判断单元,用于判断在预定时间内是否收到用于关闭所述计数器的指示信息,其中,所述指示信息是所述BOOT2在成功完成所有内核引导前的初始化工作后,在启动内核时发送的;第一确定单元,用于在判断结果为是的情况下,确定此次BOOT启动处理成功;第二确定单元,用于在判断结果为否的情况下,确定此次BOOT启动处理异常。
通过本发明,采用将BOOT程序按功能拆分为一个BOOT1和一个或多个BOOT2,其中,所述BOOT1对应所述一个或多个BOOT2,用于完成BOOT2的引导及引导所述BOOT2所必须的硬件初始化,所述BOOT2用于完成所述BOOT所有或除所述BOOT1以外的BOOT功能;通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理,解决了相关技术中对BOOT的启动存在缺陷的问题,提高了设备启动和升级的成功率和安全性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的启动处理方法的流程图;
图2是根据本发明实施例的启动处理装置的框图;
图3是根据本发明优选实施例的启动处理装置的框图一;
图4是根据本发明优选实施例的启动处理装置的框图二;
图5是根据本发明优选实施例的启动处理装置的框图三;
图6是根据本发明实施例的一种数字通信设备硬件模块的框图;
图7是根据本发明实施例的BOOT1和BOOT2在FLASH上存储的示意图;
图8是根据本发明实施例的一种多BOOT启动方法流程图;
图9是根据本发明实施例的HMPU双BOOT启动流程示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中提供了一种启动处理方法,图1是根据本发明实施例的启动处理方法的流程图,如图1所示,该流程包括如下步骤:
步骤S102,将BOOT程序按功能拆分为一个BOOT1和一个或多个BOOT2,其中,该BOOT1对应该一个或多个BOOT2,用于完成BOOT2的引导及引导该BOOT2所必须的硬件初始化,该BOOT2用于完成该BOOT所有或除该BOOT1以外的BOOT功能;
步骤S104,通过该BOOT1对该BOOT2的启动完成BOOT启动处理。
传统BOOT所有功能都是由一个BOOT(可执行文件)来实现,通过上述步骤,将BOOT分成了BOOT1和BOOT2,分别实现不同功能,由于BOOT1实现的功能比较简单,所以体积比较小,不容易损坏,同时,可以有多个BOOT2,从而在BOOT1不损坏的情况下,即使有个别BOOT2出现损坏,设备还是可以从其他BOOT2正常启动,一个设备上有一个BOOT1,但可以有多个BOOT2文件,多个BOOT2文件可以是相同版本也可以是不同版本,多个BOOT2文件可以由多个BOOT拆分而来。BOOT的拆分是在代码编译阶段完成的,也可以理解为一套代码编译生成了BOOT1,另一套代码编译生成了BOOT2,设备的BOOT启动由生成的BOOT1和BOOT2共同完成。
通过上述步骤,将BOOT程序按功能拆分为一个BOOT1和一个或多个BOOT2,其中,该BOOT1对应该一个或多个BOOT2,用于完成BOOT2的引导及引导该BOOT2所必须的硬件初始化,该BOOT2用于完成该BOOT所有或除该BOOT1以外的BOOT功能;通过该BOOT1对该BOOT2的启动完成BOOT启动处理,解决了相关技术中对BOOT的启动存在缺陷的问题,提高了设备启动和升级的成功率和安全性。
进一步地,在通过该BOOT1对该BOOT2的启动完成BOOT启动处理之前,通过BOOT1读取上次启动该BOOT2的结果信息;将该结果信息更新到该BOOT2对应的数据区中。
通过该BOOT1对该BOOT2的启动完成BOOT启动处理的方式不止一种,在一个优选实施例中,可以通过判断是否从存储器件FLASH的所有BOOT2中获取到与该结果信息中的该BOOT2相匹配的BOOT2;在判断结果为是的情况下,通过该BOOT1更新该BOOT2对应的数据区,标记该BOOT2为此次加载的BOOT2完成BOOT启动处理。
在另一个优选实施例中,可以通过在判断结果为否的情况下,通过该BOOT1检测是否有外部USB存储设备挂载;在检测结果为是的情况下,判断该USB存储设备上是否存在与该结果信息中的该BOOT2相匹配的BOOT2;在判断结果为是的情况下,在该USB存储设备上获取该BOOT2,通过该BOOT1将该BOOT2加载到内存,并对该BOOT2的文件数据的完整性进行校验;在该BOOT2的文件数据为完整的情况下,通过该BOOT1更新该BOOT2对应的数据区,标记该BOOT2为此次加载的BOOT2完成BOOT启动处理,通过BOOT1启动加载USB设备上的BOOT2,从而即使现有BOOT2全部损坏了,也可以通过更换USB上的BOOT2文件使市场应用中处理设备BOOT启动故障便利很多。
在通过该BOOT1更新该BOOT2对应的数据区,标记该BOOT2为此次加载的BOOT2的同时,通过该BOOT1启动计数器;判断在预定时间内是否收到用于关闭该计数器的指示信息,其中,该指示信息是该BOOT2在成功完成所有内核引导前的初始化工作后,在启动内核时发送的;在判断结果为是的情况下,确定此次BOOT启动处理成功;在判断结果为否的情况下,确定此次BOOT启动处理异常。
本发明实施例还提供了一种启动处理装置,图2是根据本发明实施例的启动处理装置的框图,如图2所示,包括:
拆分模块22,用于将BOOT程序按功能拆分为一个BOOT1和一个或多个BOOT2,其中,该BOOT1对应该一个或多个BOOT2,用于完成BOOT2的引导及引导该BOOT2所必须的硬件初始化,该BOOT2用于完成该BOOT所有或除该BOOT1以外的BOOT功能;
启动处理模块24,用于通过该BOOT1对该BOOT2的启动完成BOOT启动处理。
图3是根据本发明优选实施例的启动处理装置的框图一,如图3所示,该装置还包括:
读取模块32,用于通过BOOT1读取上次启动该BOOT2的结果信息;
更新模块34,用于将该结果信息更新到该BOOT2对应的数据区中。
图4是根据本发明优选实施例的启动处理装置的框图二,如图4所示,启动处理模块24包括:
第一判断单元42,用于判断是否从存储器件FLASH的所有BOOT2中获取到与该结果信息中的该BOOT2相匹配的BOOT2;
启动处理单元44,用于在判断结果为是的情况下,通过该BOOT1更新该BOOT2对应的数据区,标记该BOOT2为此次加载的BOOT2完成BOOT启动处理。
图5是根据本发明优选实施例的启动处理装置的框图三,如图5所示,启动处理模块24还包括:
检测单元52,用于在判断结果为否的情况下,通过该BOOT1检测是否有外部USB存储设备挂载;
第二判断单元54,用于在检测结果为是的情况下,判断该USB存储设备上是否存在与该结果信息中的该BOOT2相匹配的BOOT2;
校验单元56,用于在判断结果为是的情况下,在该USB存储设备上获取该BOOT2,通过该BOOT1将该BOOT2加载到内存,并对该BOOT2的文件数据的完整性进行校验;
标记单元58,用于在该BOOT2的文件数据为完整的情况下,通过该BOOT1更新该BOOT2对应的数据区,标记该BOOT2为此次加载的BOOT2完成BOOT启动处理。
进一步地,上述的装置还可以包括:启动单元,用于在通过该BOOT1更新该BOOT2对应的数据区,标记该BOOT2为此次加载的BOOT2的同时,通过该BOOT1启动计数器;第三判断单元,用于判断在预定时间内是否收到用于关闭该计数器的指示信息,其中,该指示信息是该BOOT2在成功完成所有内核引导前的初始化工作后,在启动内核时发送的;第一确定单元,用于在判断结果为是的情况下,确定此次BOOT启动处理成功;第二确定单元,用于在判断结果为否的情况下,确定此次BOOT启动处理异常。
针对相关技术中存在的上述问题,下面结合具体的可选实施例进行进一步说明,下述可选实施例结合了上述可选实施例及其可选实施方式。
图6是根据本发明实施例的一种数字通信设备硬件模块的框图,如图6所示,在现有数据通信产品的基础上,本可选实施例包含有一个硬件逻辑器件模块68,通过功能总线和中央处理器(Central Processing Unit,简称为CPU)芯片子系统62相连,可以实现硬件计数器和复位CPU的功能,当CPU启动但没有在设定时限内关闭硬件逻辑器件模块68的硬件计数器时,此模块会复位CPU,并记录结果。
本可选实施例的数据通信产品中,至少包含有一个通用串行总线(Universal SerialBus,简称为USB)模块,用于CPU芯片子系统62访问外部USB存储器件。
传统的BOOT启动分为两个阶段,第一个阶段主要完成代码的搬移和为后续代码运行提供C语言运行环境的工作,第二阶段主要是初始化一些硬件及驱动并引导内核的加载。
以一个BOOT1(Tractor)、两个BOOT2(主BOOT、备BOOT)为例,在整个BOOT启动流程中,Tractor在完成启动后,会读取外部逻辑器件BOOT启动标记位指示寄存器,从该寄存器中获取上次BOOT启动信息,并将此信息更新到上次启动BOOT2对应的数据区,根据所有BOOT2数据区信息,Tractor会决定启动boot slave或者boot master,同时,Tractor还会设置CPLD的逻辑快/慢翻转寄存器(10s/30s)来检测BOOT启动是否启动成功,实现类似看门狗的作用。
至此,BOOT2已经开始运行,之后,BOOT2会完成内核启动所需要的所有初始化工作,关闭CPLD的硬件计数计时器,为内核传递参数并引导内核正常启动。
传统Boot启动的两个阶段:
Stage 1实现以下功能:
(1)初始化相关硬件;
(2)设置异常向量(Exception Vector);
(3)关闭MMU、CACHE、RAM控制器;
(4)初始化时钟,波特率及串口设备;
(5)reload code;
(6)初始化堆栈;
(7)清0BSS段;
(8)执行stage2。
Stage 2实现以下功能:
(1)初始化本阶段要使用到的硬件设备;
(2)包括终端设备初始化,I2C,loacoal BUS,各种总线,网口等设备及相关驱动的初始化等;
(3)从USB/FTP Server或者Flash获取kernl文件加载到内存;
(4)解析kernl文件;
(5)为内核设置启动参数;
(6)启动内核。
本发明实施例是在上述原有数据通信产品BOOT基础上,将原有BOOT程序按功能分解为BOOT1和BOOT2两种(两个部分)。BOOT1负责完成BOOT2的引导及加载功能;BOOT2负责完成原数据通信产品BOOT所有或者原数据通信产品BOOT中除BOOT1完成部分以外的所有硬件初始化和相关应用程序的引导加载工作。
图7是根据本发明实施例的BOOT1和BOOT2在FLASH上存储的示意图,如图7所示,在同一数据通信产品上,可以存在多个BOOT2,每个BOOT2可以和BOOT1存储在相同存储器件FLASH上,也可以存储在不同存储器件上,比如存储在外部USB存储器件上;存储在数据通信产品上的每个BOOT2,都会有一个与之一一对应的数据区,每个数据区都包含有对应BOOT2的版本信息、启动结果信息等,为减小数据区数据被损坏的概率,本可选实施例是将这些数据区放在对应的BOOT2数据前。
设备上电后,会先加载运行BOOT1,BOOT1完成加载BOOT2所必须的硬件初始化工作后,会从外部硬件逻辑器件中读取上次BOOT2启动的结果,并更新到BOOT2对应的数据区;BOOT1完成数据区数据更新后,会检测是否有外部挂载USB存储器件中有BOOT2文件存在,如果存在,则无条件加载USB上的BOOT2,如果不存在,则从设备内部存储器件中选取一个可以成功加载并且版本最新的BOOT2进行加载,如果内部存储器件中不存在可以成功加载的BOOT2,BOOT1会进入串口命令等待模式,等待外部命令输入;BOOT1在加载BOOT2的同时,还会启动外部硬件逻辑器件模块的计数器,此计数器由BOOT2完成所有硬件初始化、启动引导内核之时关闭,如果BOOT2在设定时限内没有关闭计数器,则外部硬件逻辑器件模块会判定BOOT2启动失败并复位CPU芯片,设备重新启动;设备重启后,会重复上述步骤,直到选取的BOOT2可以成功加载内核,如果设备所有BOOT2都没能成功加载内核,则进入串口命令等待模式。
本发明实施例采用BOOT1和多个BOOT2版本启动设备的方式,在单个BOOT2损坏或者升级失败的情况下,BOOT1会自动切换到其它的BOOT2来启动设备,而且,当数据通讯设备背部存储器件上的所有BOOT2都无法正常启动设备的时候,BOOT1还可以用外部USB存储器件上的BOOT2来启动设备,与现有的技术相比,提高了设备启动的灵活性,也提高了设备启动的成功率。
另外,在本发明实施例中,当BOOT1完成BOOT2的引导和加载后,BOOT2还可以对BOOT1已经初始化过的内容重新进行初始化,也就是说,在实际开发、测试和应用场景中,BOOT1是不需要进行升级维护的;同时,由于BOOT1只需要实现BOOT2的引导和加载功能,体积会比现有BOOT小很多,这些,都提高了设备启动和升级的成功率和安全性。
图8是根据本发明实施例的一种多BOOT启动方法流程图,如图8所示,数据通信产品的多BOOT的启动方法的步骤包括:
步骤S801,设备上电后,设备会先跳转到BOOT1执行,BOOT1会执行一些基本的硬件初始化工作,如初始化内存、定时器、串口、按键及USB驱动加载等。
步骤S802,BOOT1从外部逻辑器件中读取上次BOOT2启动的结果信息,并更新到BOOT2对应的数据区中;
步骤S803,BOOT1对设备上是否有外部USB存储设备挂载进行检测,如果有USB设备挂载,执行步骤S804,如果没有,执行步骤S806;
步骤S804,在USB存储设备上查找是否存在与设备相匹配的BOOT2文件,这种查找,属于基于文件名的查找,但并不限于基于文件名查找的方式。如果在外部USB存储设备上找到了与设备相匹配的BOOT2文件,则从步骤S805开始执行,否则从步骤S806执行;
步骤S805,BOOT1将USB存储设备上的BOOT2加载到内存,并对BOOT2文件数据做完整性校验,如果BOOT2数据损坏,则执行步骤S808,没有损坏,执行步骤S810;
步骤S806,BOOT1遍历设备存储器件上所有BOOT2对应的数据区,从数据区信息里读取是否有用户指定要加载的BOOT2,如有,则从步骤S810开始操作,没有则从步骤S807执行;
步骤S807,BOOT1遍历所有数据区信息,判断是否有可以正常启动的BOOT2,如果有,执行步骤S809,否则,执行步骤S808;
步骤S808,BOOT1会等待串口命令的输入,如果有,则执行串口命令,如果没有,则继续等待;这里对于串口输入命令的响应,不属于本发明重点,这里就不在详述;
步骤S809,BOOT1从所有可执行的BOOT2中选取版本最新的BOOT2并执行步骤S810,如果有版本时间相同的BOOT2出现,则随机选取其中一个;
步骤S810,BOOT1将选取的BOOT2加载到内存,并对BOOT2做数据完整性校验,如果数据不完整,则执行步骤S807;如果数据完整,则执行步骤S811;
步骤S811,BOOT1更新对应数据区,标记此BOOT2为此次加载的BOOT2,同时,BOOT1启动硬件逻辑器件的计数器,程序从BOOT2开始执行;
步骤S812,BOOT2在成功完成所有内核引导前的初始化工作后,会在启动内核时,发送信号关闭外部逻辑器件的硬件计数器。如果外部逻辑器件在设定的时限内收到了关闭计数器的信号,则判定此次BOOT启动成功结束;如果没有收到,则判定此次BOOT启动异常,并执行步骤S813;
步骤S813,外部硬件逻辑器件记录此次BOOT2启动失败的结果,重新启动设备。
需要说明的是,外部硬件逻辑器件设定的从计数器开始计数到复位设备之间的时限,应大于设备BOOT2正常启动的时限,同时,还应留有一定的冗余,以防止外部硬件逻辑器件异常复位设备。
下面以两个BOOT为例进行进一步说明,图9是根据本发明实施例的HMPU双BOOT启动流程示意图,如图9所示,设备上电后,CPU从0地址加载Tractor,Tractor首先对CPU、RAM进行初始化。Tractor检测复杂可编程逻辑器件(Complex ProgrammableLogic Device,简称为CPLD)的状态寄存器(0x80),根据寄存器和数据区信息确定从哪个BOOT2(主boot、备boot)启动。Tractor同时启动10S、30S定时器。Tractor跳转到相应的BOOT2开始执行。BOOT2在单板初始化时通知CPLD关闭10S定时器,表明CPU已经跳转到BOOT2阶段开始执行。BOOT2在完成硬件初始化之后,在加载启动内核时,再次通知CPLD关闭30S定时器,表明BOOT2启动已经完成,进入内核启动阶段。
设备上电后,CPLD等待Tractor启动10S、30S定时器。10S定时器超时,更新状态寄存器,指示CPU下次应该从备用BOOT启动;30S定时器超时,更新状态寄存器,指示CPU下次应该从备用BOOT启动。复位CPU,CPLD等待Tractor启动10S、30S定时器。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种启动处理方法,其特征在于,包括:
将BOOT程序按功能拆分为一个BOOT1和一个或多个BOOT2,其中,所述BOOT1对应所述一个或多个BOOT2,用于完成BOOT2的引导及引导所述BOOT2所必须的硬件初始化,所述BOOT2用于完成所述BOOT所有或除所述BOOT1以外的BOOT功能;
通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理。
2.根据权利要求1所述的方法,其特征在于,在通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理之前,所述方法还包括:
通过BOOT1读取上次启动所述BOOT2的结果信息;
将所述结果信息更新到所述BOOT2对应的数据区中。
3.根据权利要求2所述的方法,其特征在于,通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理包括:
判断是否从存储器件FLASH的所有BOOT2中获取到与所述结果信息中的所述BOOT2相匹配的BOOT2;
在判断结果为是的情况下,通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2完成BOOT启动处理。
4.根据权利要求3所述的方法,其特征在于,通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理还包括:
在判断结果为否的情况下,通过所述BOOT1检测是否有外部USB存储设备挂载;
在检测结果为是的情况下,判断所述USB存储设备上是否存在与所述结果信息中的所述BOOT2相匹配的BOOT2;
在判断结果为是的情况下,在所述USB存储设备上获取所述BOOT2,通过所述BOOT1将所述BOOT2加载到内存,并对所述BOOT2的文件数据的完整性进行校验;
在所述BOOT2的文件数据为完整的情况下,通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2完成BOOT启动处理。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2的同时,通过所述BOOT1启动计数器;
判断在预定时间内是否收到用于关闭所述计数器的指示信息,其中,所述指示信息是所述BOOT2在成功完成所有内核引导前的初始化工作后,在启动内核时发送的;
在判断结果为是的情况下,确定此次BOOT启动处理成功;
在判断结果为否的情况下,确定此次BOOT启动处理异常。
6.一种启动处理装置,其特征在于,包括:
拆分模块,用于将BOOT程序按功能拆分为一个BOOT1和一个或多个BOOT2,其中,所述BOOT1对应所述一个或多个BOOT2,用于完成BOOT2的引导及引导所述BOOT2所必须的硬件初始化,所述BOOT2用于完成所述BOOT所有或除所述BOOT1以外的BOOT功能;
启动处理模块,用于通过所述BOOT1对所述BOOT2的启动完成BOOT启动处理。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
启动模块,用于通过BOOT1读取上次启动所述BOOT2的结果信息;
更新模块,用于将所述结果信息更新到所述BOOT2对应的数据区中。
8.根据权利要求7所述的装置,其特征在于,所述启动处理模块包括:
第一判断单元,用于判断是否从存储器件FLASH的所有BOOT2中获取到与所述结果信息中的所述BOOT2相匹配的BOOT2;
启动处理单元,用于在判断结果为是的情况下,通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2完成BOOT启动处理。
9.根据权利要求8所述的装置,其特征在于,所述启动处理模块还包括:
检测单元,用于在判断结果为否的情况下,通过所述BOOT1检测是否有外部USB存储设备挂载;
第二判断单元,用于在检测结果为是的情况下,判断所述USB存储设备上是否存在与所述结果信息中的所述BOOT2相匹配的BOOT2;
校验单元,用于在判断结果为是的情况下,在所述USB存储设备上获取所述BOOT2,通过所述BOOT1将所述BOOT2加载到内存,并对所述BOOT2的文件数据的完整性进行校验;
标记单元,用于在所述BOOT2的文件数据为完整的情况下,通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2完成BOOT启动处理。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
启动单元,用于在通过所述BOOT1更新所述BOOT2对应的数据区,标记所述BOOT2为此次加载的BOOT2的同时,通过所述BOOT1启动计数器;
第三判断单元,用于判断在预定时间内是否收到用于关闭所述计数器的指示信息,其中,所述指示信息是所述BOOT2在成功完成所有内核引导前的初始化工作后,在启动内核时发送的;
第一确定单元,用于在判断结果为是的情况下,确定此次BOOT启动处理成功;
第二确定单元,用于在判断结果为否的情况下,确定此次BOOT启动处理异常。
CN201510359972.4A 2015-06-25 2015-06-25 启动处理方法及装置 Pending CN106325903A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510359972.4A CN106325903A (zh) 2015-06-25 2015-06-25 启动处理方法及装置
PCT/CN2016/083334 WO2016206514A1 (zh) 2015-06-25 2016-05-25 启动处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510359972.4A CN106325903A (zh) 2015-06-25 2015-06-25 启动处理方法及装置

Publications (1)

Publication Number Publication Date
CN106325903A true CN106325903A (zh) 2017-01-11

Family

ID=57584639

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510359972.4A Pending CN106325903A (zh) 2015-06-25 2015-06-25 启动处理方法及装置

Country Status (2)

Country Link
CN (1) CN106325903A (zh)
WO (1) WO2016206514A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107632862A (zh) * 2017-09-20 2018-01-26 江苏兆能电子有限公司 一种汽车电子控制单元ecu的多级启动加载方法
CN108897574A (zh) * 2018-06-01 2018-11-27 深圳市方为半导体有限公司 嵌入式系统及其程序运行的管理方法
CN110297605A (zh) * 2019-06-27 2019-10-01 深圳忆联信息系统有限公司 一种有效提高固态硬盘固件加载速度的方法及其装置
CN110347444A (zh) * 2019-07-12 2019-10-18 深圳忆联信息系统有限公司 一种ssd多状态切换的启动方法及其系统
CN112596766A (zh) * 2020-12-24 2021-04-02 浙江合众新能源汽车有限公司 基于Bootloader的软件升级方法及装置
WO2022161101A1 (zh) * 2021-01-29 2022-08-04 苏州浪潮智能科技有限公司 多核片上系统的uboot启动方法、装置、设备及存储介质
CN116700061A (zh) * 2023-04-12 2023-09-05 广东为辰信息科技有限公司 一种基于安全启动技术的快速启动方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110554879B (zh) * 2019-07-26 2023-02-10 深圳震有科技股份有限公司 一种基于处理器的烧录方法、系统和计算机设备
CN112114850B (zh) * 2020-07-15 2023-03-10 北京航空航天大学杭州创新研究院 一种基于串口的stm32单片机片内和片外flash程序分散加载方法
CN114398107B (zh) * 2022-01-25 2023-07-28 中国电子科技集团公司第十研究所 一种跨领域多方式加载dsp程序的设计方法及通用平台

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281469A (zh) * 2008-04-11 2008-10-08 青岛海信电器股份有限公司 嵌入式系统及其启动加载的方法
CN101944051A (zh) * 2010-09-29 2011-01-12 山东大学 片上多备份的高可靠嵌入式系统固件及其工作方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3677252B2 (ja) * 2002-03-22 2005-07-27 株式会社東芝 情報機器、記憶媒体、及び初期状態復元方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281469A (zh) * 2008-04-11 2008-10-08 青岛海信电器股份有限公司 嵌入式系统及其启动加载的方法
CN101944051A (zh) * 2010-09-29 2011-01-12 山东大学 片上多备份的高可靠嵌入式系统固件及其工作方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107632862A (zh) * 2017-09-20 2018-01-26 江苏兆能电子有限公司 一种汽车电子控制单元ecu的多级启动加载方法
CN108897574A (zh) * 2018-06-01 2018-11-27 深圳市方为半导体有限公司 嵌入式系统及其程序运行的管理方法
CN110297605A (zh) * 2019-06-27 2019-10-01 深圳忆联信息系统有限公司 一种有效提高固态硬盘固件加载速度的方法及其装置
CN110297605B (zh) * 2019-06-27 2023-02-10 深圳忆联信息系统有限公司 一种有效提高固态硬盘固件加载速度的方法及其装置
CN110347444A (zh) * 2019-07-12 2019-10-18 深圳忆联信息系统有限公司 一种ssd多状态切换的启动方法及其系统
CN110347444B (zh) * 2019-07-12 2022-06-07 深圳忆联信息系统有限公司 一种ssd多状态切换的启动方法及其系统
CN112596766A (zh) * 2020-12-24 2021-04-02 浙江合众新能源汽车有限公司 基于Bootloader的软件升级方法及装置
WO2022161101A1 (zh) * 2021-01-29 2022-08-04 苏州浪潮智能科技有限公司 多核片上系统的uboot启动方法、装置、设备及存储介质
CN116700061A (zh) * 2023-04-12 2023-09-05 广东为辰信息科技有限公司 一种基于安全启动技术的快速启动方法

Also Published As

Publication number Publication date
WO2016206514A1 (zh) 2016-12-29

Similar Documents

Publication Publication Date Title
CN106325903A (zh) 启动处理方法及装置
US7050859B1 (en) Systems and methods to port controller state and context in an open operating system
KR20200052957A (ko) 보안 제어 방법 및 컴퓨터 시스템
CN110162435B (zh) 一种服务器pxe启动测试方法、系统、终端及存储介质
CN104424008A (zh) 安全引导 rom 补丁的系统及方法
US20190138671A1 (en) Simulation device and program
CN101156137A (zh) 选择子例程返回机制
CN106873990A (zh) 嵌入式系统ram损坏模式下的多分区引导方法
CN104572387A (zh) 一种工程模式下调试终端的方法及装置
CN103197914B (zh) 多处理器延迟执行的方法和系统
CN103309693A (zh) 复杂可编程逻辑器件更新方法及系统
CN107710166A (zh) 利用符号快速错误检测的硅后验证和调试
CN109101416A (zh) 一种内核故障注入方法及电子设备
CN107301042A (zh) 一种带自检功能的SoC应用程序引导方法
CN105893065A (zh) 计算机系统启动方法
US20180052881A1 (en) System and method to automate validating media redirection in testing process
CN110262838A (zh) 一种程序崩溃的处理方法、装置、终端及存储介质
CN106909382B (zh) 输出不同类型系统启动信息的方法及装置
US6751569B2 (en) System and method for receiving information from a test apparatus
US8825934B2 (en) Gang programming of devices
CN109375953A (zh) 一种操作系统启动方法及装置
CN112052040A (zh) 处理方法、装置、计算机设备和存储介质
CN113315675B (zh) 一种白盒交换机U-Boot自动化测试方法、系统和存储介质
US8554522B2 (en) Detection of design redundancy
US7636869B2 (en) Program dynamically burnt system and method

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170111