一种嵌入式操作系统启动方法转让专利

申请号 : CN201210120143.7

文献号 : CN102662715B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王尤巧

申请人 : 深圳市掌讯通讯设备有限公司

摘要 :

本发明涉及一种嵌入式操作系统启动方法,包括:101)BOOT启动;102)检验并判断第一BOOT数据是否正确,是进入下一步,否则将校验正确的第二BOOT数据覆盖第一BOOT数据进入步骤105);105)加载校验正确的BOOT数据;106)检验并判断第一OS数据是否正确,是进入下一步,否则将校验正确的第二OS数据覆盖第一OS数据进入步骤109);109)加载校验正确的OS数据;110)引导结束,正常开机。这种方法能克服或大大降低无法开机、停留在开机画面和机器运行速度慢等问题且没有额外生产成本。

权利要求 :

1.一种嵌入式操作系统启动方法,其特征在于,利用复数份BOOT数据和OS数据以及对应数据校验码,包括以下具体步骤:

101)启动,进入系统引导加载;

102)检验并判断第一BOOT数据是否正确?是进入下一步,否则将校验正确的第二BOOT数据覆盖第一BOOT数据进入步骤105);

105)加载校验正确的BOOT数据;

106)检验并判断第一OS数据是否正确?是进入下一步,否则将校验正确的第二OS数据覆盖第一OS数据进入步骤109);

109)加载校验正确的OS数据;

110)引导结束,正常开机。

2.根据权利要求1所述启动方法,其特征在于,该启动方法还包括以下步骤:

103)检验并判断第二BOOT数据是否正确?否进入下一步,是则进入步骤110);

104)将第一BOOT数据覆盖第二BOOT数据;

该启动方法还包括以下步骤:

107)检验并判断第二OS数据是否正确?否进入下一步,是则进入步骤110);

108)将第一OS数据覆盖第二OS数据。

3.根据权利要求1或2所述启动方法,其特征在于,所述BOOT数据和OS数据都是二份。

4.根据权利要求1或2所述启动方法,其特征在于,该启动方法还包括在第一次BOOT升级时将固化存储器进行分区,并将复数份BOOT数据保存在其中一个分区内,而将复数份OS数据保存在另一个分区内。

5.根据权利要求4所述启动方法,其特征在于,该启动方法还包括在所述保存过程中包括校验判断和将校验判断错误的保存数据重新写入。

6.根据权利要求1或2所述启动方法,其特征在于,该启动方法还包括在第N次BOOT升级时将复数份BOOT数据和复数份OS数据覆盖保存至固化存储器中,N是大于1的自然数。

7.根据权利要求1或2所述启动方法,其特征在于,用于保存复数份BOOT数据和OS数据的固化存储器是FLASH、EEPROM或INAND。

8.根据权利要求1或2所述启动方法,其特征在于,该启动方法还包括:步骤102)内将校验正确的第二BOOT数据覆盖第一BOOT数据具体包括:检验并判断第二BOOT数据是否正确?是将校验正确的第二BOOT数据覆盖第一BOOT数据,否则中断启动或尝试选择加载一个BOOT数据进入步骤106);

步骤106)内将校验正确的第二OS数据覆盖第一OS数据具体包括:包括检验并判断第二OS数据是否正确?是将校验正确的第二OS数据覆盖第一OS数据,否则中断启动或尝试选择加载一个OS数据进入步骤110)。

9.根据权利要求8所述启动方法,其特征在于,该启动方法在所述中断启动后弹出对话框让用户选择。

10.根据权利要求1或2所述启动方法,其特征在于,该嵌入式操作系统是LINUX/ANDROID/CE/Windows 8操作系统之一。

说明书 :

一种嵌入式操作系统启动方法

技术领域

[0001] 本发明涉及智能电子产品软件系统,具体涉及一种嵌入式操作系统启动方法。

背景技术

[0002] 嵌入式操作系统在电子产品上电或复位后,在操作系统(OS)内核运行之前,须经过引导加载启动过程。系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令。比如,基于型号为ARM7TDMI core的CPU在上电或复位时通常都从地址0x00000000取它的第一条指令。而基于CPU构建的嵌入式系统通常都有某种类型的固态存储设备,比如:只读存储器(ROM)、电可擦除程序存储器(EEPROM)或闪存(FLASH)等,被映射到这个预先安排的地址上。因此在系统上电后,CPU将首先执行引导加载启动过程,使用固态存储设备中嵌入式引导程序(BOOT)数据和OS数据。但是固态存储设备,如FLASH随着不断读写次数的增多,会产生一定数量的坏块,假如BOOT或OS恰好存储在这一块上,则机器会产生掉BOOT/OS数据、无法开机,停留在开机画面,机器运行速度慢等问题。而目前业内防止掉BOOT/OS数据的技术为尽量减少写flash的次数,使用质量稍好的FLASH,这样不可避免地造成以下技术问题:
[0003] 1、整机成本增加;
[0004] 2、还存在掉BOOT/OS数据,导致机器无法开机,停留在开机画面,机器运行速度慢等机器的比率仍然很高;
[0005] 3:将终端用户操作机器步骤复杂化。

发明内容

[0006] 本发明需要解决的技术问题是,如何提供一种嵌入式操作系统启动方法,能克服或大大降低无法开机、停留在开机画面和机器运行速度慢等问题,进一步没有额外生产成本。
[0007] 本发明的上述技术问题这样解决:构建一种嵌入式操作系统启动方法,利用复数份BOOT数据和OS数据以及对应数据校验码,包括以下具体步骤:
[0008] 101)启动,进入系统引导加载;
[0009] 102)检验并判断第一BOOT数据是否正确?是进入下一步,否则将校验正确的第二BOOT数据覆盖第一BOOT数据进入步骤105);
[0010] 105)加载校验正确的BOOT数据;
[0011] 106)检验并判断第一OS数据是否正确?是进入下一步,否则将校验正确的第二OS数据覆盖第一OS数据进入步骤109);
[0012] 109)加载校验正确的OS数据;
[0013] 110)引导结束,正常开机。
[0014] 按照本发明提供的启动方法,该启动方法还包括以下步骤:
[0015] 103)检验并判断第二BOOT数据是否正确?否进入下一步,是则进入步骤10);
[0016] 104)将第一BOOT数据覆盖第二BOOT数据;
[0017] 该启动方法还包括以下步骤:
[0018] 107)检验并判断第二OS数据是否正确?否进入下一步,是则进入步骤110;
[0019] 108)将第一OS数据覆盖第二OS数据。
[0020] 步骤103-104)、107-108)可以每次启动都进行,也可以选择适当频率或时机进行,在极端情况也可以不执行。
[0021] 按照本发明提供的启动方法,所述BOOT数据和OS数据包括但但不限制于都是二份,优选都是二份。
[0022] 按照本发明提供的启动方法,该启动方法包括但不限制于以下优选的存储方式:在第一次BOOT升级时将固化存储器进行分区,并将复数份BOOT数据保存在其中一个分区内,而将复数份OS数据保存在另一个分区内。也可以选择二块固化存储器但成本高。
[0023] 按照本发明提供的启动方法,该启动方法还包括在所述保存过程中包括校验判断和将校验判断错误的保存数据重新写入。
[0024] 按照本发明提供的启动方法,该启动方法还包括在第N次BOOT升级时将复数份BOOT数据和复数份OS数据覆盖保存至固化存储器中,N是大于1的自然数。
[0025] 按照本发明提供的启动方法,用于保存复数份BOOT数据和OS数据的固化存储器是FLASH、EEPROM或INAND。
[0026] 按照本发明提供的启动方法,该启动方法还包括:
[0027] 步骤102)内将校验正确的第二BOOT数据覆盖第一BOOT数据具体包括:检验并判断第二BOOT数据是否正确?是将校验正确的第二BOOT数据覆盖第一BOOT数据,否则中断启动或尝试选择加载一个BOOT数据进入步骤106);
[0028] 步骤106)内将校验正确的第二OS数据覆盖第一OS数据具体包括:包括检验并判断第二OS数据是否正确?是将校验正确的第二OS数据覆盖第一OS数据,否则中断启动或尝试选择加载一个OS数据进入步骤110)。
[0029] 按照本发明提供的启动方法,该启动方法在所述中断启动后弹出对话框让用户选择。
[0030] 按照本发明提供的启动方法,该嵌入式操作系统包括但不限制于是LINUX/安卓(ANDROID)/视窗8(Windows 8)/Windows CE操作系统。
[0031] 按照本发明提供的启动方法,所述启动包括机器上电和复位。
[0032] 本发明提供的嵌入式操作系统启动方法,突破传统思路,行内率先采用BOOT/OS双备份技术进行引导,较现有技术具有以下优势:
[0033] 1、实验表明掉BOOT或OS数据导致机器无法开机的机器不良率为12.5%,采用此技术之后,不良率将低到1.5%;
[0034] 2、不妨碍用户使用;
[0035] 3、产品性能优越、成本低廉。

附图说明

[0036] 下面结合附图和具体实施例进一步对本发明进行详细说明:
[0037] 图1是本发明优选实施例的开机引导软件程序流程示意图。

具体实施方式

[0038] 首先,说明本发明核心和基础:
[0039] (一)数据存储
[0040] 在BOOT第一次升级时,会在flash中划分出几个区来,其中一个区用来存放BOOT数据,存放BOOT的区分成2部分,各存放BOOT数据,BOOT备份数据;另一个区来存放OS数据,这个区也会被初始化成为2部分,分别存放OS数据,和OS备份数据。
[0041] (二)BOOT双备份:
[0042] 储存BOOT分区的第一部分用来存放BOOT数据,(我们后面对这个部分统称为BOOT A区)第二个部分,用来存放备份的BOOT数据(我们后面对这个部分统称为BOOT B区)。BOOT在划分完区之后,会将BOOT数据写入FLASH,并记录下校验值。
[0043] 在升级结束后的每次开机时,BOOT会先对BOOT A区进行校验,和升级时候的校验值做对比,如果值相等,那么接着就对BOOT B区进行校验,如果值相等,那么程序不做任何操作,直接进入OS双备份步骤。
[0044] 在升级结束后的每次开机时,BOOT会先对BOOT A区进行校验,如果和升级时候的校验值做对比,如果值不相等,则会将校验值正确的BOOT B区的数据覆盖BOOT A区的数据,之后直接进入OS双备份步骤。
[0045] 在升级结束后的每次开机时,BOOT会先对BOOT A区进行校验,和升级时候的校验值做对比,如果值相等,那么接着就对BOOT B区进行校验,如果校验值不相等,那么BOOT会将BOOT A区的数据覆盖BOOT B区的数据,之后直接进入OS双备份步骤。
[0046] (三)OS双备份:
[0047] 第一部分用来存放OS数据,(我们后面对这个部分统称为A区)第二个部分,用来存放备份的OS数据(我们后面对这个部分统称为B区)。BOOT在划分完区之后,会将OS数据写入FLASH,并记录下校验值。
[0048] 在升级结束后的每次开机时,BOOT会先对A区进行校验,和升级时候的校验值做对比,如果值相等,那么接着就对B区进行校验,如果值相等,那么程序不做任何操作,直接开机。
[0049] 在升级结束后的每次开机时,BOOT会先对A区进行校验,和升级时候的校验值做对比,如果值不相等,则会将校验值正确的B区的数据覆盖A区的数据,之后引导开机。
[0050] 在升级结束后的每次开机时,BOOT会先对A区进行校验,和升级时候的校验值做对比,如果值相等,那么接着就对B区进行校验,如果校验值不相等,那么BOOT会将A区的数据覆盖B区的数据,之后引导开机。
[0051] 第二,结合本发明具体实施例进行详细说明:
[0052] 如图1所示,本发明具体实施例电子产品使用双备份的BOOT和OS数据,其开机引导软件程序包括以下具体步骤:
[0053] 301)BOOT启动;
[0054] 302)检验并判断BOOTA区数据是否正确?是进入下一步,否则进入步骤305);
[0055] 303)检验并判断BOOT B区数据是否正确?否进入下一步,是则进入步骤306);
[0056] 304)将BOOT A区数据覆盖BOOT B区数据,进入步骤306);
[0057] 305)将校验正确的BOOT B区数据覆盖BOOTA区数据;
[0058] 306)加载校验正确的BOOT数据,检验并判断OS A区数据是否正确?是进入下一步,否则进入步骤310);
[0059] 307)检验并判断OS B区数据是否正确?否进入下一步,是则进入步骤309);
[0060] 308)将OS A区数据覆盖OS B区数据,进入步骤310);
[0061] 309)将校验正确的OS B区数据覆盖OS A区数据;
[0062] 310)加载校验正确的OS数据,引导结束,正常开机。
[0063] 当然,以上所述仅是本发明的较佳实施例,故凡依本发明专利申请范围所述的构造、特征及流程所做的等效变化或修饰,均包括于本发明专利申请范围为内。