著录项信息
专利名称 | 终端设备开机、升级方法和设备 |
申请号 | CN201210449070.6 | 申请日期 | 2012-11-09 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2013-02-27 | 公开/公告号 | CN102945176A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/445 | IPC分类号 | G;0;6;F;9;/;4;4;5;;;G;0;6;F;1;1;/;0;8查看分类表>
|
申请人 | 青岛海信移动通信技术股份有限公司 | 申请人地址 | 山东省青岛市市南区江西路11号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 青岛海信移动通信技术股份有限公司 | 当前权利人 | 青岛海信移动通信技术股份有限公司 |
发明人 | 程志 |
代理机构 | 北京同达信恒知识产权代理有限公司 | 代理人 | 孔凡红 |
摘要
本发明实施例公开了一种终端设备开机、升级方法和设备,涉及无线通信领域,用于提高终端设备开机的成功率。本发明中,终端设备的存储单元包含第一引导BOOT分区和第二BOOT分区,第一BOOT分区和第二BOOT分区中各存储有一份相同的系统引导程序;在接收到开机指令后,加载第一BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则,加载第二BOOT分区中的系统引导程序,并根据加载到的第二BOOT分区中的系统引导程序执行开机流程。采用本发明,能够提高终端设备开机的成功率。
1.一种终端设备开机方法,其特征在于,该终端设备的存储单元包含第一引导BOOT分区和第二BOOT分区,第一BOOT分区和第二BOOT分区中各存储有一份相同的系统引导程序;该方法包括: 在接收到开机指令后,加载第一BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则, 加载第二 BOOT分区中的系统引导程序,并根据加载到的第二 BOOT分区中的系统引导程序执行开机流程; 在根据第一BOOT分区中的系统引导程序执行开机流程时,若接收到升级指令,则下载该系统引导程序的升级包,对该升级包进行CRC校验,在对该升级包的CRC校验成功后,根据该升级包对第二 BOOT分区中的系统引导程序进行更新;完成更新后,根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新; 或者,在根据第二 BOOT分区中的系统引导程序执行开机流程时,若接收到升级指令,则下载该系统引导程序的升级包,对该升级包进行CRC校验,在对该升级包的CRC校验成功后,根据该升级包对第一BOOT分区中的系统引导程序进行更新;完成更新后,根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新。
2.如权利要求1所述的方法,其特征在于,所述系统引导程序为OEM引导程序OEMSBL; 所述加载第一 BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程,具体包括:通过主引导程序PBL加载第二引导程序QCSBL,通过QCSBL加载第一BOOT分区中的OEMSBL,对该OEMSBL进行完整性验证和/或CRC;若完整性验证和/或CRC成功,则根据该OEMSBL执行开机流程; 所述加载第二 BOOT分区中的系统引导程序,并根据加载到的第二 BOOT分区中的系统引导程序执行开机流程,具体包括:通过QCSBL加载第二 BOOT分区中的OEMSBL,根据该OEMSBL执行开机流程。
3.一种终端设备升级方法,其特征在于,该终端设备的存储单元包含第一引导BOOT分区和第二BOOT分区,第一BOOT分区和第二BOOT分区中各存储有一份相同的系统引导程序,该方法包括: 在根据第一 BOOT分区中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包,对该升级包进行CRC校验,在对该升级包的CRC校验成功后,根据该升级包对第二BOOT分区中的系统引导程序进行更新;完成更新后,根据下载到的升级包对第一BOOT分区中的系统引导程序进行更新;或者, 在执行第二 BOOT分区中的系统引导程序时接收到升级指令,下载该系统引导程序的升级包,对该升级包进行CRC校验,在对该升级包的CRC校验成功后,根据该升级包对第一 BOOT分区中的系统引导程序进行更新;完成更新后,根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新。
4.如权利要求3所述的方法,其特征在于,在根据第一BOOT分区中的系统引导程序执行开机流程时接收到升级指令之前,或在执行第二 BOOT分区中的系统引导程序时接收到升级指令之前,或根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新之后,或根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新之后,进一步包括: 在接收到开机指令后,加载第一BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则, 加载第二 BOOT分区中的系统引导程序,并根据加载到的第二 BOOT分区中的系统引导程序执行开机流程。
5.如权利要求3所述的方法,其特征在于,所述系统引导程序为OEM引导程序OEMSBL; 加载第一 BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程,具体包括:通过主引导程序PBL加载第二弓I导程序QCSBL,通过QCSBL加载第一 BOOT分区中的OEMSBL,对该OEMSBL进行完整性验证和/SCRC;若完整性验证和/或CRC成功,则根据该OEMSBL执行开机流程; 加载第二 BOOT分区中的系统引导程序,并根据加载到的第二 BOOT分区中的系统引导程序执行开机流程,具体包括:通过QCSBL加载第二 BOOT分区中的OEMSBL,根据该OEMSBL执行开机流程。
6.一种终端设备,其特征在于,该终端设备的存储单元包含第一引导BOOT分区和第二BOOT分区,第一BOOT分区和第二BOOT分区中各存储有一份相同的系统引导程序;该终端设备还包括: 调制解调器MODEM处理器,用于在接收到开机指令后,加载第一 BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验CRC;若完整性验证和/SCRC成功,则根据该系统引导程序执行开机流程;否则, 加载第二 BOOT分区中的系统引导程序,并根据加载到的第二 BOOT分区中的系统引导程序执行开机流程; 在根据第一BOOT分区中的系统引导程序执行开机流程时,若接收到升级指令,则下载该系统引导程序的升级包,对该升级包进行CRC校验;在对该升级包的CRC校验成功后,根据该升级包对第二 BOOT分区中的系统引导程序进行更新;完成更新后,根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新;或者,在根据第二 BOOT分区中的系统引导程序执行开机流程时,若接收到升级指令,则下载该系统引导程序的升级包,对该升级包进行CRC校验,在对该升级包的CRC校验成功后,根据该升级包对第一 BOOT分区中的系统引导程序进行更新;完成更新后,根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新。
7.如权利要求6所述的终端设备,其特征在于,所述MODEM处理器用于: 在所述系统引导程序为OEM引导程序OEMSBL时,通过主引导程序PBL加载第二引导程序QCSBL,通过QCSBL加载第一BOOT分区中的OEMSBL,对该OEMSBL进行完整性验证和/或CRC ;若完整性验证和/或CRC成功,则根据该OEMSBL执行开机流程;否则, 通过QCSBL加载第二 BOOT分区中的OEMSBL,根据该OEMSBL执行开机流程。
8.一种终端设备,其特征在于,该终端设备的存储单元包含第一引导BOOT分区和第二BOOT分区,第一BOOT分区和第二BOOT分区中各存储有一份相同的系统引导程序,该终端设备还包括: 调制解调器MODEM处理器,用于在根据第一 BOOT分区中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包,对该升级包进行CRC校验,在对该升级包的CRC校验成功后,根据该升级包对第二 BOOT分区中的系统引导程序进行更新;完成更新后,根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新;或者, 在执行第二 BOOT分区中的系统引导程序时接收到升级指令,下载该系统引导程序的升级包,对该升级包进行CRC校验,在对该升级包的CRC校验成功后,根据该升级包对第一 BOOT分区中的系统引导程序进行更新;完成更新后,根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新。
9.如权利要求8所述的终端设备,其特征在于,在根据第一 BOOT分区中的系统引导程序执行开机流程时接收到升级指令之前,或在执行第二 BOOT分区中的系统引导程序时接收到升级指令之前,或根据下载到的升级包对第一BOOT分区中的系统引导程序进行更新之后,或根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新之后,所述MODEM处理器还用于: 在接收到开机指令后,加载第一BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则, 加载第二 BOOT分区中的系统引导程序,并根据加载到的第二 BOOT分区中的系统引导程序执行开机流程。
10.如权利要求8所述的终端设备,其特征在于,所述MODEM处理器用于: 在所述系统引导程序为OEM引导程序OEMSBL时,通过主引导程序PBL加载第二引导程序QCSBL,通过加载第一 BOOT分区中的OEMSBL,对该OEMSBL进行完整性验证和/或CRC ;若完整性验证和/或CRC成功,则根据该OEMSBL执行开机流程;否则, 通过QCSBL加载第二 BOOT分区中的OEMSBL,根据该OEMSBL执行开机流程。
终端设备开机、升级方法和设备\n技术领域\n[0001]本发明涉及无线通信领域,尤其涉及一种终端设备开机、升级方法和设备。\n背景技术\n[0002] 目前,一些外部多媒体卡(externel MultiMedia Card,eMMC)产品,例如手机终端,米用单OEM引导程序(OEM Secondary Bootloader,0EMSBL)方案。\n[0003]在采用单OEMSBL方案时,手机终端的启动机制如下:\n[0004] 首先通过主引导程序(Primary Bootloader,PBL)来加载第二引导程序(QualcommSecondary Bootloader ,QCSBL),然后通过QCSBL顺序加载OEMSBL、高级移动用户站程序(Advanced Mobile Subscriber Stat1n,AMSS)。如果对OEMSBL的加载失败或加载错误,则手机终端将会无法正常启动。\n[0005]如图1所示,现有方案启动过程描述如下:\n[0006] 步骤I:通过PBL加载QCSBL,若PBL成功加载QCSBL,则到步骤2,否则,进入下载(DLOAD)模式,以进行手机程序的下载,进而进行刷机;本步骤的执行CPU为调制解调器CPU(MODEM CPU,mARM);\n[0007] 步骤2: QCSBL加载OEMSBL ;本步骤的执行CPU为mARM ;\n[0008] 步骤3:0EMSBL加载应用引导程序(APPSBL),并启动(cortex-A5CPU,aARM);本步骤的执行CPU为mARM; APPSBL会开启手机终端上的应用程序(APPS),从而完成开机流程;\n[0009]与步骤2并行执行的步骤4: QCSBL加载AMSS,若加载成功,则运行AMSS,否则,进入DLOAD模式,以进行手机程序的下载,进而进行刷机;\n[0010] 在运行AMSS出错时,也进入DLOAD模式,以进行手机程序的下载,进而进行刷机。\n[0011]在实现本发明的过程中,发明人发现现有技术中存在以下技术问题:\n[0012] 在终端设备的开机启动过程中,QCSBL加载OEMSBL时,如果OEMSBL损坏,将会导致手机终端无法正常启动。\n发明内容\n[0013]本发明实施例提供一种终端设备开机、升级方法和设备,用于提高终端设备开机的成功率。\n[0014] 一种终端设备开机方法,该终端设备的存储单元包含第一引导BOOT分区和第二BOOT分区,第一BOOT分区和第二BOOT分区中各存储有一份相同的系统引导程序;该方法包括:\n[0015]在接收到开机指令后,加载第一BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则,\n[0016]加载第二 BOOT分区中的系统引导程序,并根据加载到的第二BOOT分区中的系统引导程序执行开机流程。\n[0017] 一种终端设备升级方法,该终端设备的存储单元包含第一引导BOOT分区和第二BOOT分区,第一BOOT分区和第二BOOT分区中各存储有一份相同的系统引导程序,该方法包括:\n[0018]在根据第一 BOOT分区中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包,根据该升级包对第二 BOOT分区中的系统引导程序进行更新后,根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新;或者,\n[0019]在执行第二 BOOT分区中的系统引导程序时接收到升级指令,下载该系统引导程序的升级包,根据该升级包对第一 BOOT分区中的系统引导程序进行更新后,根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新。\n[0020] 一种终端设备,该终端设备的存储单元包含第一引导BOOT分区和第二 BOOT分区,第一 BOOT分区和第二 BOOT分区中各存储有一份相同的系统引导程序;该终端设备还包括:[0021 ]调制解调器MODEM处理器,用于在接收到开机指令后,加载第一 BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则,\n[0022]加载第二 BOOT分区中的系统引导程序,并根据加载到的第二 BOOT分区中的系统引导程序执行开机流程。\n[0023] 一种终端设备,该终端设备的存储单元包含第一引导BOOT分区和第二 BOOT分区,第一 BOOT分区和第二 BOOT分区中各存储有一份相同的系统引导程序,该终端设备还包括:\n[0024]调制解调器MODEM处理器,用于在根据第一 BOOT分区中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包,根据该升级包对第二 BOOT分区中的系统引导程序进行更新后,根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新;或者,\n[0025]在执行第二 BOOT分区中的系统引导程序时接收到升级指令,下载该系统引导程序的升级包,根据该升级包对第一 BOOT分区中的系统引导程序进行更新后,根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新。\n[0026]本发明实施例提供的一种方案中,设备的存储单元包含第一BOOT分区和第二BOOT分区,第一BOOT分区和第二BOOT分区中各存储有一份相同的系统引导程序,在开机时,对一个BOOT分区中的系统引导程序进行完整性验证和/或CRC,若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则,加载另一个BOOT分区中的系统引导程序,并根据该系统引导程序执行开机流程。可见,本方案中存储两套系统引导程序,在一套系统引导程序损坏致使完整性验证和/或CRC失败时还可以使用另一套系统引导程序进行开机,从而提高了设备的开机成功率。\n[0027]本发明实施例提供的另一种方案中,若在根据第一BOOT分区中的系统引导程序执行开机流程时进行系统引导程序的升级,则先根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新后,再根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新。若在根据第二 BOOT分区中的系统引导程序执行开机流程时进行系统引导程序的升级,则先根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新后,再根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新。本方案可以保证终端设备中始终存储有至少一套完整的系统引导程序,进而提高终端设备的开机成功率。\n附图说明\n[0028]图1为现有技术中的开机流程示意图;\n[0029]图2为为本发明实施例提供的方法流程示意图;\n[0030]图3a为本发明实施例提供的另一方法流程示意图;\n[0031 ]图3b为本发明实施例提供的另一方法流程示意图;\n[0032]图4为本发明实施例一的流程示意图;\n[0033]图5为本发明实施例提供的终端结构示意图。\n具体实施方式\n[0034]为了提高终端设备开机的成功率,本发明实施例提供一种终端设备开机方法,本方法中,终端设备的存储单元包含第一引导(BOOT)分区和第二BOOT分区,第一BOOT分区和第二 BOOT分区中各存储有一份相同的系统引导程序,在开机时,对一个BOOT分区中的系统引导程序进行完整性验证和/或循环冗余校验(CRC),若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则,加载另一个BOOT分区中的系统引导程序,并根据该系统引导程序执行开机流程。\n[0035]参见图2,本发明实施例提供的终端设备开机方法,包括以下步骤:\n[0036]步骤20:在接收到开机指令后,加载第一 BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验(CRC);若完整性验证和/或CRC成功,则到步骤21,否则,到步骤22;\n[0037]步骤21:根据加载到的第一 BOOT分区中的系统引导程序执行开机流程;\n[0038]步骤22:加载第二 BOOT分区中的系统引导程序,并根据加载到的第二 BOOT分区中的系统引导程序执行开机流程。\n[0039]具体的,本方法中的终端设备为采用高通平台的产品时,所述系统引导程序为OEMSBL;\n[0040] 相应的,步骤20-步骤22的具体实现为:通过PBL加载QCSBL,通过QCSBL加载第一BOOT分区中的OEMSBL,对该OEMSBL进行完整性验证和/或CRC;若完整性验证和/或CRC成功,则根据该OEMSBL执行开机流程;否则,通过QCSBL加载第二BOOT分区中的OEMSBL,根据该OEMSBL执行开机流程。\n[0041 ] 其中,PBL是用于加载QCSBL的程序,QCSBL是用于加载0EMSBL、AMSS的程序,OEMSBL是用于引导应用(AP)侧程序,并完成多项MODEM侧功能(例如:TF卡下载功能、开机logo显示、初始化各硬件功能模块)的程序。\n[0042]具体的,对系统引导程序进行完整性验证的方法可以如下:\n[0043]将预先设置在存储单元中的完整性标志与该系统引导程序中的完整性标志进行比对,若两者一致,则确定完整性验证成功,否则,确定完整性验证失败。这里,需要预先在存储单元中保存一个完整性标志,例如可以将完整性标志保存在oemsbl.scl文件中,还需要预先在系统引导程序中添加同样的完整性标志,例如在系统引导程序的代码后面添加完整性标志;完整性标志可以是任何能够区别于终端设备中的其他数据的数据信息。\n[0044]具体的,对系统引导程序进行CRC的方法可以如下:\n[0045]根据CRC算法计算该系统引导程序的CRC码,将计算得到的CRC码与该系统引导程序中的CRC码进行比对,若两者一致,则确定CRC成功,否则,确定CRC失败。这里,需要预先将系统引导程序的CRC码添加在系统引导程序中,例如,可以在系统引导程序的代码后面添加CRC 码。\n[0046]通过对系统引导程序进行CRC,可以确保加载到内存中的系统引导程序是正确的。防止出现以下问题:虽然系统引导程序被加载到内存中,且其完整性标志也是正确的,但是其中部分内容是错误的,这样,终端设备就会无法正常启动。\n[0047]较佳的,还可以预先将系统引导程序的大小(比如字节长度)设置在存储单元中,例如可以将系统引导程序的大小保存在oemsbl.scl文件中,那么,在对系统引导程序进行完整性验证和CRC时,可以根据系统引导程序的大小读取到系统引导程序中的完整性标志和CRC码,比如,系统引导程序的大小为100字节,则可以读取第101个字节的内容作为完整性验证,读取第102个字节的内容作为CRC码。\n[0048]较佳的,在根据第一BOOT分区中的系统引导程序执行开机流程时,若接收到升级指令,则下载该系统引导程序的升级包,根据该升级包对第二 BOOT分区中的系统引导程序进行更新后,根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新;或者,\n[0049]在根据第二BOOT分区中的系统引导程序执行开机流程时,若接收到升级指令,则下载该系统引导程序的升级包,根据该升级包对第一 BOOT分区中的系统引导程序进行更新后,根据下载到的升级包对第二BOOT分区中的系统引导程序进行更新。\n[0050]较佳的,在根据第一BOOT分区中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包之后、且根据该升级包对第二 BOOT分区中的系统引导程序进行更新之前,可以对该升级包进行CRC校验;在对该升级包的CRC校验成功后,根据该升级包对第二 BOOT分区中的系统引导程序进行更新,然后再根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新。\n[0051]同样的,在根据第二BOOT分区中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包之后、且根据该升级包对第一 BOOT分区中的系统引导程序进行更新之前,可以对该升级包进行CRC校验;在对该升级包的CRC校验成功后,根据该升级包对第一 BOOT分区中的系统引导程序进行更新,然后再根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新。\n[0052]对升级包进行CRC的方法可以为:根据CRC算法计算升级包的CRC码,将计算得到的CRC码与预先设置在升级包中的CRC码进行比对,若两者一致,则确定CRC成功,否则,确定CRC失败。这里,升级包中的CRC码可以保存在一个单独的文件中,该文件可以位于TF卡下载的某个目录中。\n[0053] 通过对升级包进行CRC,可以防止用户非法刷机,因为对升级包进行了CRC,如果CRC结果为不正确,则认为此次升级为非法升级,将拒绝升级,以防止出现不开机现象。\n[0054]参见图3a,本发明实施例提供的终端设备升级方法,包括以下步骤301-步骤302,或者,参见图3b,本发明实施例提供的终端设备升级方法,包括以下步骤311-步骤312:\n[0055]步骤301:在根据第一 BOOT分区中的系统引导程序执行开机流程时接收到升级指令;\n[0056]步骤302:下载该系统引导程序的升级包,根据该升级包对第二 BOOT分区中的系统引导程序进行更新后,根据下载到的升级包对第一BOOT分区中的系统引导程序进行更新。\n[0057]步骤311:在执行第二 BOOT分区中的系统引导程序时接收到升级指令;\n[0058]步骤312:下载该系统引导程序的升级包,根据该升级包对第一 BOOT分区中的系统引导程序进行更新后,根据下载到的升级包对第二BOOT分区中的系统引导程序进行更新。\n[0059]较佳的,步骤302中,在下载到该系统引导程序的升级包之后、且根据该升级包对第二 BOOT分区中的系统引导程序进行更新根之前,可以对该升级包进行CRC校验;在对该升级包的CRC校验成功后,根据该升级包对第二 BOOT分区中的系统引导程序进行更新,然后根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新。\n[0060]较佳的,步骤312中,在下载该系统引导程序的升级包之后、且根据该升级包对第一 BOOT分区中的系统引导程序进行更新之前,可以对该升级包进行CRC校验;在对该升级包的CRC校验成功后,根据该升级包对第一 BOOT分区中的系统引导程序进行更新,然后根据下载到的升级包对第二BOOT分区中的系统引导程序进行更新。\n[0061]对升级包进行CRC的方法可以为:根据CRC算法计算升级包的CRC码,将计算得到的CRC码与预先设置在升级包中的CRC码进行比对,若两者一致,则确定CRC成功,否则,确定CRC失败。这里,升级包中的CRC码可以保存在一个单独的文件中,该文件可以位于TF卡下载的某个目录中。\n[0062] 通过对升级包进行CRC,可以防止用户非法刷机,因为对升级包进行了CRC,如果CRC结果为不正确,则认为此次升级为非法升级,将拒绝升级,以防止出现不开机现象。\n[0063] 较佳的,在步骤302之后、或步骤312之后、或步骤301之前、或步骤311之前,可以执行如下步骤A:\n[0064]步骤A、接收到开机指令,加载第一 BOOT分区中的系统引导程序,对该系统引导程序进行完整性验证和/或CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则,加载第二 BOOT分区中的系统引导程序,并根据加载到的第二 BOOT分区中的系统引导程序执行开机流程。\n[0065]具体的,本方法中的终端设备为采用高通平台的产品时,所述系统引导程序为OEMSBL;\n[0066] 此时,步骤A的具体实现为:通过I3BL加载QCSBL,通过QCSBL加载第一 BOOT分区中的OEMSBL,对该OEMSBL进行完整性验证和/或CRC;若完整性验证和/或CRC成功,则根据该OEMSBL执行开机流程;通过QCSBL加载第二 BOOT分区中的OEMSBL,根据该OEMSBL执行开机流程。\n[0067] 其中,PBL是用于加载QCSBL的程序,QCSBL是用于加载0EMSBL、AMSS的程序,OEMSBL是用于引导应用(AP)侧程序,并完成多项MODEM侧功能(例如:TF卡下载功能、开机logo显示、初始化各硬件功能模块)的程序。\n[0068]具体的,对系统引导程序进行完整性验证的方法可以如下:\n[0069]将预先设置在存储单元中的完整性标志与该系统引导程序中的完整性标志进行比对,若两者一致,则确定完整性验证成功,否则,确定完整性验证失败。这里,需要预先在存储单元中保存一个完整性标志,例如可以将完整性标志保存在oemsbl.scl文件中,还需要预先在系统引导程序中添加同样的完整性标志,例如在系统引导程序的代码后面添加完整性标志;完整性标志可以是任何能够区别于终端设备中的其他数据的数据信息。\n[0070]具体的,对系统引导程序进行CRC的方法可以如下:\n[0071]根据CRC算法计算该系统引导程序的CRC码,将计算得到的CRC码与该系统引导程序中的CRC码进行比对,若两者一致,则确定CRC成功,否则,确定CRC失败。这里,需要预先将系统引导程序的CRC码添加在系统引导程序中,例如,可以在系统引导程序的代码后面添加CRC 码。\n[0072]通过对系统引导程序进行CRC,可以确保加载到内存中的系统引导程序是正确的。防止出现以下问题:虽然系统引导程序被加载到内存中,且其完整性标志也是正确的,但是其中部分内容是错误的,这样,终端设备就会无法正常启动。\n[0073]较佳的,还可以预先将系统引导程序的大小(比如字节长度)设置在存储单元中,例如可以将系统引导程序的大小保存在oemsbl.scl文件中,那么,在对系统引导程序进行完整性验证和CRC时,可以根据系统引导程序的大小读取到系统引导程序中的完整性标志和CRC码,比如,系统引导程序的大小为100字节,则可以读取第101个字节的内容作为完整性验证,读取第102个字节的内容作为CRC码。\n[0074] 本发明中方法的执行主体具体可以是终端设备的调制解调器(MODEM)CPUg卩mARM,本方法可以应用在高通平台等。\n[0075] 实施例一:\n[0076] 如图4所示,具体如下:\n[0077] 步骤一:终端设备的mARM通过I3BL加载QCSBL,若I3BL成功加载QCSBL,则到步骤二,否则,进入下载(DLOAD)模式,以进行手机程序的下载,进而进行刷机;\n[0078] 步骤二:通过QCSBL加载OEMSBL,对该OEMSBL进行完整性验证和/或CRC ;若完整性验证和/或CRC成功,则执行0EMSBL,0EMSBL加载APPSBL,并启动aARM,APPSBL会开启手机终端上的应用程序(APPS),从而完成开机流程;否则,加载0SBL,并执行0SBL,0SBL是OEMSBL的拷贝,完成相同的功能,并且OSBL与OEMSBL位于不同BOOT分区。\n[0079]与步骤二并行执行的步骤三:通过QCSBL加载AMSS,若加载成功,则运行AMSS,否贝IJ,进入DLOAD模式,以进行手机程序的下载,进而进行刷机;在运行AMSS出错时,也进入DLOAD模式,以进行手机程序的下载,进而进行刷机。\n[0080] 实施例二:\n[0081 ] 步骤一:终端设备的mARM通过I3BL加载QCSBL,若I3BL成功加载QCSBL,则到步骤二,否则,进入下载(DLOAD)模式,以进行手机程序的下载,进而进行刷机;\n[0082] 步骤二:通过QCSBL加载OEMSBL,对该OEMSBL进行完整性验证和/或CRC ;若完整性验证和/或CRC成功,则执行OEMSBL ;否则,加载OSBL,并执行OSBL ;\n[0083]步骤三:接收到升级指令,下载OEMSBL的升级包,若当前从OEMSBL启动,则根据该升级包先对OSBL进行更新,再根据升级包对OEMSBL进行更新;若当前从OSBL启动,则根据该升级包先对OEMSBL进行更新,再根据升级包对OSBL进行更新。\n[0084]步骤四:完成升级后,可以执行实施例一所述的开机流程。\n[0085]参见图5,本发明实施例提供一种终端设备,该终端设备的存储单元包含第一 BOOT分区50和第二 BOOT分区51,第一 BOOT分区50和第二 BOOT分区51中各存储有一份相同的系统引导程序;该终端设备还包括:\n[0086]调制解调器(MODEM)处理器52,用于在接收到开机指令后,加载第一 BOOT分区50中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则,\n[0087]加载第二BOOT分区51中的系统引导程序,并根据加载到的第二 BOOT分区51中的系统引导程序执行开机流程。\n[0088] 进一步的,所述MODEM处理器52用于:\n[0089] 在所述系统引导程序为OEM引导程序OEMSBL时,通过主引导程序I3BL加载第二引导程序QCSBL,通过QCSBL加载第一 BOOT分区50中的OEMSBL,对该OEMSBL进行完整性验证和/或CRC;若完整性验证和/或CRC成功,则根据该OEMSBL执行开机流程;否则,\n[0090] 通过QCSBL加载第二 BOOT分区51中的0EMSBL,根据该OEMSBL执行开机流程。\n[0091] 进一步的,所述MODEM处理器52还用于:\n[0092]在根据第一BOOT分区50中的系统引导程序执行开机流程时,若接收到升级指令,则下载该系统引导程序的升级包,根据该升级包对第二 BOOT分区51中的系统引导程序进行更新后,根据下载到的升级包对第一 BOOT分区50中的系统引导程序进行更新;或者,\n[0093]在根据第二BOOT分区51中的系统引导程序执行开机流程时,若接收到升级指令,则下载该系统引导程序的升级包,根据该升级包对第一 BOOT分区50中的系统引导程序进行更新后,根据下载到的升级包对第二 BOOT分区51中的系统引导程序进行更新。\n[0094] 进一步的,所述MODEM处理器52还用于:\n[0095]在根据第一 BOOT分区50中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包之后、且根据该升级包对第二 BOOT分区51中的系统引导程序进行更新之前,对该升级包进行CRC校验;\n[0096] 在对该升级包的CRC校验成功后,根据该升级包对第二 BOOT分区51中的系统引导程序进行更新。\n[0097] 进一步的,所述MODEM处理器52还用于:\n[0098]在根据第二 BOOT分区51中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包之后、且根据该升级包对第一 BOOT分区50中的系统引导程序进行更新之前,对该升级包进行CRC校验;\n[0099] 在对该升级包的CRC校验成功后,根据该升级包对第一 BOOT分区50中的系统引导程序进行更新。\n[0100]仍参见图5,本发明实施例提供一种终端设备,该终端设备的存储单元包含第一BOOT分区50和第二BOOT分区51,第一BOOT分区50和第二BOOT分区51中各存储有一份相同的系统引导程序,该终端设备还包括:\n[0101] MODEM处理器52,用于在根据第一 BOOT分区50中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包,根据该升级包对第二 BOOT分区51中的系统引导程序进行更新后,根据下载到的升级包对第一 BOOT分区50中的系统引导程序进行更新;或者,\n[0102]在执行第二 BOOT分区51中的系统引导程序时接收到升级指令,下载该系统引导程序的升级包,根据该升级包对第一 BOOT分区50中的系统引导程序进行更新后,根据下载到的升级包对第二 BOOT分区51中的系统引导程序进行更新。\n[0103] 进一步的,所述MODEM处理器52还用于:\n[0104]在根据第一 BOOT分区50中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包之后、且根据该升级包对第二 BOOT分区51中的系统引导程序进行更新之前,对该升级包进行CRC校验;\n[0105]在对该升级包的CRC校验成功后,根据该升级包对第二 BOOT分区51中的系统引导程序进行更新。\n[0106] 进一步的,所述MODEM处理器52还用于:\n[0107]在根据第二 BOOT分区51中的系统引导程序执行开机流程时接收到升级指令,下载该系统引导程序的升级包之后、且根据该升级包对第一 BOOT分区50中的系统引导程序进行更新之前,对该升级包进行CRC校验;\n[0108] 在对该升级包的CRC校验成功后,根据该升级包对第一 BOOT分区50中的系统引导程序进行更新。\n[0109] 进一步的,所述MODEM处理器52还用于:\n[0110]在接收到开机指令后,加载第一 BOOT分区50中的系统引导程序,对该系统引导程序进行完整性验证和/或循环冗余校验CRC;若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则,\n[0111]加载第二BOOT分区51中的系统引导程序,并根据加载到的第二 BOOT分区51中的系统引导程序执行开机流程。\n[0112] 进一步的,所述MODEM处理器52用于:\n[0113] 在所述系统引导程序为OEM引导程序OEMSBL时,通过主引导程序I3BL加载第二引导程序QCSBL,通过加载第一 BOOT分区50中的OEMSBL,对该OEMSBL进行完整性验证和/或CRC ;若完整性验证和/或CRC成功,则根据该OEMSBL执行开机流程;否则,\n[0114] 通过QCSBL加载第二 BOOT分区51中的0EMSBL,根据该OEMSBL执行开机流程。\n[0115]本发明中的终端设备具体可以是平板电脑、手机终端等。\n[0116]综上,本发明的有益效果包括:\n[0117]本发明实施例提供的一种方案中,设备的存储单元包含第一BOOT分区和第二BOOT分区,第一BOOT分区和第二BOOT分区中各存储有一份相同的系统引导程序,在开机时,对一个BOOT分区中的系统引导程序进行完整性验证和/或CRC,若完整性验证和/或CRC成功,则根据该系统引导程序执行开机流程;否则,加载另一个BOOT分区中的系统引导程序,并根据该系统引导程序执行开机流程。可见,本方案中存储两套系统引导程序,在一套系统引导程序损坏致使完整性验证和/或CRC失败时还可以使用另一套系统引导程序进行开机,从而提高了设备的开机成功率。\n[0118]本发明实施例提供的另一种方案中,若在根据第一BOOT分区中的系统引导程序执行开机流程时进行系统引导程序的升级,则先根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新后,再根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新。本方案可以保证终端设备中始终存储有至少一套完整的系统引导程序,进而提高终端设备的开机成功率,原因如下:由于是根据第一BOOT分区中的系统引导程序执行开机流程,因此升级前第一BOOT分区中的系统引导程序是没有损坏的,在下载到升级包后,首先升级第二BOOT分区中的系统引导程序再升级第一BOOT分区中的系统引导程序,若在升级第二BOOT分区中的系统引导程序的过程中出现断电等情况致使整个升级过程失败,此时虽然第二 BOOT分区中的系统引导程序已经不完整,但第一 BOOT分区中存有没有损坏的系统引导程序,还能够使用该没有损坏的系统引导程序进行开机,提高了设备的开机成功率;若在升级第一 BOOT分区中的系统引导程序的过程中出现断电等情况致使升级失败,虽然第一 BOOT分区中的系统引导程序已经不完整,但第二 BOOT分区中存有升级后的完整的系统引导程序,还能够使用该完整的系统引导程序进行开机,提高了设备的开机成功率。\n[0119]若在根据第二BOOT分区中的系统引导程序执行开机流程时进行系统引导程序的升级,则先根据下载到的升级包对第一 BOOT分区中的系统引导程序进行更新后,再根据下载到的升级包对第二 BOOT分区中的系统引导程序进行更新。本方案可以保证终端设备中始终存储有至少一套完整的系统引导程序,进而提高终端设备的开机成功率,原因如下:由于是根据第二 BOOT分区中的系统引导程序执行开机流程,因此升级前第二 BOOT分区中的系统引导程序是没有损坏的,在下载到升级包后,首先升级第一BOOT分区中的系统引导程序再升级第二 BOOT分区中的系统引导程序,若在升级第一 BOOT分区中的系统引导程序的过程中出现断电等情况致使整个升级过程失败,此时虽然第一 BOOT分区中的系统引导程序已经不完整,但第二 BOOT分区中存有没有损坏的系统引导程序,还能够使用该没有损坏的系统引导程序进行开机,提高了设备的开机成功率;若在升级第二 BOOT分区中的系统引导程序的过程中出现断电等情况致使升级失败,虽然第二 BOOT分区中的系统引导程序已经不完整,但第一 BOOT分区中存有升级后的完整的系统引导程序,还能够使用该完整的系统引导程序进行开机,提高了设备的开机成功率。\n[0120]本发明是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。\n[0121]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。\n[0122]这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。\n[0123]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。\n[0124]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
法律信息
- 2016-09-28
- 2013-04-03
实质审查的生效
IPC(主分类): G06F 9/445
专利申请号: 201210449070.6
申请日: 2012.11.09
- 2013-02-27
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-05-26
|
2009-12-01
| | |
2
| |
2008-12-24
|
2008-04-30
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |