CN106325903A - 启动处理方法及装置 - Google Patents
启动处理方法及装置 Download PDFInfo
- 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
Links
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/445—Program 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启动处理异常。
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)
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)
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3677252B2 (ja) * | 2002-03-22 | 2005-07-27 | 株式会社東芝 | 情報機器、記憶媒体、及び初期状態復元方法 |
-
2015
- 2015-06-25 CN CN201510359972.4A patent/CN106325903A/zh active Pending
-
2016
- 2016-05-25 WO PCT/CN2016/083334 patent/WO2016206514A1/zh active Application Filing
Patent Citations (2)
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)
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 |