著录项信息
专利名称 | 一种嵌入式设备的启动方法及软件升级方法 |
申请号 | CN200810056237.6 | 申请日期 | 2008-01-15 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2008-07-09 | 公开/公告号 | CN101216772 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/445 | IPC分类号 | G;0;6;F;9;/;4;4;5查看分类表>
|
申请人 | 中兴通讯股份有限公司 | 申请人地址 | 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中兴通讯股份有限公司 | 当前权利人 | 中兴通讯股份有限公司 |
发明人 | 叶磊;邓一星;万武辉 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明公开了一种嵌入式设备的启动方法及软件升级方法,通过对单片闪存芯片的存储空间进行逻辑分区,划分为一个控制信息区、互为备份的第一镜像区及第二镜像区,所述嵌入式设备启动时能够将第一镜像区或第二镜像区中可用的镜像数据加载到设备内存中,并能够对无效的镜像区提供升级。使用本发明的方法,简化了硬件电路设计的复杂性,实现了嵌入式设备用单片闪存的安全运行和对设备进行安全升级。
1.一种嵌入式设备的启动方法,其特征在于,将设备内部用于存储镜像数据的闪存划分为控制信息区、第一镜像区及第二镜像区三个逻辑分区;其中,控制信息区中包括有当前镜像区状态标志、第一镜像区的属性及第二镜像区的属性;第一镜像区及第二镜像区中均包括有镜像数据及镜像加载计数器;该方法还包括:
a、检查每个镜像区的镜像加载计数器值是否超过预设阈值,若超过,则将该镜像区设置为无效,然后执行步骤b;否则,直接执行步骤b;其中,检查每个镜像区的镜像加载计数器值是否超过预设阈值是通过镜像加载计数器对第一或第二镜像区的镜像数据被装入内存时的装载次数进行计数,当镜像数据装载成功,则计数值清零;若装载失败,则将镜像加载计数值自动加1;
b、读取所选择的当前镜像区状态标志,判断所述镜像区是否为主用,若为备用,则执行步骤c;否则,执行步骤d;
c、判断备用镜像区的镜像数据是否可用,若可用,则执行步骤d,否则,退出本次启动过程,等待对该备用镜像区进行升级;其中,对该备用镜像区进行升级包括:A、选定待升级的镜像区,并将该镜像区设置为无效;B、将升级文件写入所述镜像区;B1、判断写入的升级文件是否完整,若不完整,则返回步骤B;否则,执行步骤C;C、升级文件完全写入镜像区后,将所述镜像区设置为有效;
d、将可用的镜像数据以及与硬件相关的初始启动代码加载到所述嵌入式设备的内存中。
2.根据权利要求1所述的启动方法,其特征在于,所述步骤d之前进一步包括:将所述待加载镜像区的镜像加载计数器值加1。
3.根据权利要求1或2所述的启动方法,其特征在于,所述步骤d之后进一步包括:将所述镜像区的镜像加载计数器值清零。
4.根据权利要求1所述的启动方法,其特征在于,所述控制信息区设置于闪存内的任一位置。
5.根据权利要求1所述的启动方法,其特征在于,所述第一镜像区与第二镜像区的容量相同。
6.根据权利要求1所述的启动方法,其特征在于,所述当前镜像区状态标志为主用状态或备用状态。
7.根据权利要求1所述的启动方法,其特征在于,所述第一镜像区及第二镜像区的属性,至少包括存储第一镜像区和第二镜像区的起始位置、长度、有效性、版本号。
8.根据权利要求1所述的启动方法,其特征在于,所述镜像数据包括使嵌入式设备进行工作的软件、软件运行所需工作空间及用户数据所占的空间。
9.一种嵌入式设备的软件升级方法,其特征在于,将设备内部用于存储镜像数据的闪存划分为控制信息区、第一镜像区及第二镜像区三个逻辑分区;其中,控制信息区中包括有当前镜像区状态标志、第一镜像区的属性及第二镜像区的属性;第一镜像区及第二镜像区中均包括有镜像数据及镜像加载计数器;该方法还包括:
A、选定待升级的镜像区,并将该镜像区设置为无效;
B、将升级文件写入所述镜像区;
B1、判断写入的升级文件是否完整,若不完整,则返回步骤B;否则,执行步骤C;
C、升级文件完全写入镜像区后,将所述镜像区设置为有效。
10.根据权利要求9所述的嵌入式设备的软件升级方法,其特征在于,步骤B1所述判断写入升级文件是否完整,具体为:比较源升级文件与镜像数据文件的字节数是否一致,若一致,则写入的升级文件是完整的;否则,升级文件不完整。
11.根据权利要求9所述的嵌入式设备的软件升级方法,其特征在于,所述控制信息区设置于闪存内的任一位置。
12.根据权利要求9所述的嵌入式设备的软件升级方法,其特征在于,所述第一镜像区与第二镜像区的容量相同。
13.根据权利要求9所述的嵌入式设备的软件升级方法,其特征在于,所述当前镜像区状态标志为主用状态或备用状态。
14.根据权利要求9所述的嵌入式设备的软件升级方法,其特征在于,所述第一镜像区及第二镜像区的属性,至少包括存储第一镜像区和第二镜像区的起始位置、长度、有效性、版本号。
15.根据权利要求9所述的嵌入式设备的软件升级方法,其特征在于,所述镜像数据包括使嵌入式设备进行工作的软件、软件运行所需工作空间及用户数据所占的空间。
一种嵌入式设备的启动方法及软件升级方法\n技术领域\n[0001] 本发明涉及嵌入式系统(ES)的支撑技术,尤其涉及一种嵌入式设备的启动方法及软件升级方法。\n背景技术\n[0002] ES是以应用为中心、以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器(EMPU)、外围硬件设备、嵌入式操作系统(EOS)以及各种应用程序组成。ES与普通的个人计算机(PC)的应用系统不同,即使是针对不同的具体应用而设计的ES之间差别也很大。一般地,ES功能相对比较单一,且在兼容性方面要求不高。\n[0003] 嵌入式设备在启动、正常运行及进行软件升级过程中,均需要调用硬件系统存储器中的操作系统软件以及具有特定功能的应用程序,即镜像文件。\n[0004] 嵌入式设备在启动过程中,需从镜像文件中读取相应的应用程序。采用可擦写的存储器提供运行程序的镜像文件,为实现设备在线升级功能提供了方便。但嵌入式设备在升级过程中,往往存在某些原因,如:误操作、突然断电等,造成升级过程意外中断,这又要求对软件升级过程的安全性提供可靠的保障,以防止一个镜像文件被改写的同时,保证另一个升级前的镜像文件是安全的、完整的备份。\n[0005] 通常的做法是采用两片存储器件:一片选用只读存储器(ROM),内部存放安全模式的镜像文件;另一片选用可读可写的闪存(Flash Memory)作为升级专用存储器,内部存放升级镜像文件。这种方式虽然升级的实现过程比较简单,但存在如下缺点:需要增加外围电路才能使两套存储器件共存,增加了硬件的复杂性;使用两片存储器件,增大了成本投入;安全模式下嵌入式设备不能进行升级。实际使用中某些操作必须在安全模式下进行,而有时设备在安全模式下也需要进行软件更新,这给设备的正常使用造成许多不便。\n发明内容\n[0006] 有鉴于此,本发明的主要目的在于提供一种嵌入式设备的启动方法,提高了嵌入式设备启动的可靠性。\n[0007] 本发明的另一个目的在于提供一种嵌入式设备的升级方法,在简化设备硬件系统中存储器外围电路的同时,使嵌入式设备能够实现安全升级。\n[0008] 为达到上述目的,本发明的技术方案是这样实现的:\n[0009] 一种嵌入式设备的启动方法,将设备内部用于存储镜像数据的闪存划分为控制信息区、第一镜像区及第二镜像区三个逻辑分区;其中,控制信息区中包括有当前镜像区状态标志、第一镜像区的属性及第二镜像区的属性;第一镜像区及第二镜像区中均包括有镜像数据及镜像加载计数器;该方法还包括:\n[0010] a、检查每个镜像区的镜像加载计数器值是否超过预设阈值,若超过,则将该镜像区设置为无效,然后执行步骤b;否则,直接执行步骤b;\n[0011] b、读取所选择的当前镜像区状态标志,判断所述镜像区是否为主用,若为备用,则执行步骤c;否则,执行步骤d;\n[0012] c、判断备用镜像区的镜像数据是否可用,若可用,则执行步骤d,否则,退出本次启动过程,等待对该备用镜像区进行升级;\n[0013] d、将可用的镜像数据以及与硬件相关的初始启动代码加载到所述嵌入式设备的内存中。\n[0014] 其中,所述步骤d之前进一步包括:将所述待加载镜像区的镜像加载计数器值加\n1。\n[0015] 所述步骤d之后进一步包括:将所述镜像区的镜像加载计数器值清零。\n[0016] 所述控制信息区设置于闪存内的任一位置。\n[0017] 所述第一镜像区与第二镜像区的容量相同。\n[0018] 所述当前镜像区状态标志为主用状态或备用状态。\n[0019] 所述第一镜像区及第二镜像区的属性,至少包括存储第一镜像区和第二镜像区的起始位置、长度、有效性、版本号。\n[0020] 所述镜像数据包括使嵌入式设备进行工作的软件、软件运行所需工作空间及用户数据所占的空间。\n[0021] 所述镜像加载计数器的计数过程为:当镜像数据成功加载到内存,则计数值清零;\n否则若装载失败,则镜像加载计数值自动加1。\n[0022] 一种嵌入式设备的软件升级方法,将设备内部用于存储镜像数据的闪存划分为控制信息区、第一镜像区及第二镜像区三个逻辑分区;其中,控制信息区中包括有当前镜像区状态标志、第一镜像区的属性及第二镜像区的属性;第一镜像区及第二镜像区中均包括有镜像数据及镜像加载计数器;该方法还包括:\n[0023] A、选定待升级的镜像区,并将该镜像区设置为无效;\n[0024] B、将升级文件写入所述镜像区;\n[0025] C、升级文件完全写入镜像区后,将所述镜像区设置为有效。\n[0026] 其中,步骤B之后进一步包括:\n[0027] B1、判断写入的升级文件是否完整,若不完整,则返回步骤B;否则,执行步骤C。\n[0028] 步骤B1所述判断写入升级文件是否完整,具体为:比较源升级文件与镜像数据文件的字节数是否一致,若一致,则写入的升级文件是完整的;否则,升级文件不完整。\n[0029] 所述控制信息区设置于闪存内的任一位置。\n[0030] 所述第一镜像区与第二镜像区的容量相同。\n[0031] 所述当前镜像区状态标志为主用状态或备用状态。\n[0032] 所述第一镜像区及第二镜像区的属性,至少包括存储第一镜像区和第二镜像区的起始位置、长度、有效性、版本号。\n[0033] 所述镜像数据包括使嵌入式设备进行工作的软件、软件运行所需工作空间及用户数据所占的空间。\n[0034] 本发明所提供的嵌入式设备的启动方法及升级方法,具有以下优点:\n[0035] 1)本发明采用对单片闪存进行逻辑分区的方法,简化了硬件电路设计的复杂性。\n[0036] 2)本发明采用对闪存进行逻辑分区的方法,划分出的第一镜像区与第二镜像区容量大小完全相同,为两个镜像区实现相互备份以及安全升级提供了客观条件。\n[0037] 3)本发明仅采用一片闪存芯片,就能实现以往用两片不同存储器才能完成的工作,节约了嵌入式设备的成本。\n[0038] 4)本发明的升级方法,可以任选第一镜像区或第二镜像区进行升级,打破了以往嵌入式设备在安全模式下不能升级的惯例,增强了嵌入式设备的易用性。\n附图说明\n[0039] 图1为本发明实施例中闪存的存储空间逻辑划分示意图;\n[0040] 图2为本发明实施例中图1的控制信息区内部逻辑结构示意图;\n[0041] 图3为本发明实施例中图1的第一或第二镜像区内部逻辑结构示意图;\n[0042] 图4为本发明实施例中嵌入式设备的启动过程示意图;\n[0043] 图5为本发明实施例中对嵌入式设备进行软件升级的过程示意图。\n具体实施方式\n[0044] 下面结合附图及本发明的实施例对本发明的方法作进一步详细的说明。\n[0045] 图1为本发明实施例中闪存的存储空间逻辑划分示意图,如图1所示,将闪存的存储空间进行逻辑分区,划分为:控制信息区、第一镜像区及第二镜像区三部分;其中,第一镜像区和第二镜像区的大小、结构完全相同,两者差别仅在于在闪存中所处的位置不同。\n[0046] 对闪存的存储空间进行逻辑分区以及确定各个分区所占存储空间的大小,需要考虑如下几个因素:\n[0047] 将当前嵌入式设备工作所需的软件的字节数、软件运行所需工作空间的字节数以及用户数据所占空间的字节数,三者之和作为镜像文件所需的存储空间,即镜像区的大小。\n根据镜像区的大小估算嵌入式设备所需闪存的存储容量,然后加上少量控制信息所需的容量,共同确定应该选用多大容量的闪存芯片。目前已有存储容量为1M、2M、4M、8M、16M、32M、\n64M、128M、256M字节等甚至容量更大的单片闪存芯片,由于闪存芯片存储容量越大价格就越高,选用的芯片容量过小,不能满足嵌入式设备的工作需求;选用的芯片容量过大,又会增加不必要的成本、造成资源浪费,所以需综合考虑容量与成本。\n[0048] 这里,所述根据镜像区的大小估算嵌入式设备所需闪存的存储容量,具体为:两倍的镜像区存储容量,再加上大小不超过1M字节的控制信息的容量之和,以小于但接近已有某种容量的芯片为最佳。例如,如果镜像文件的大小为14M左右,对应的就应该选用32M的单片闪存芯片作为该嵌入式设备的存储器。\n[0049] 在应用中,把所述32M的单片闪存的存储空间划分为三个逻辑分区,一种典型的分法是:为控制信息区分配1M的空间,称为控制信息区;然后将剩余的存储空间平均分为两部分:第一镜像区分配15.5M、第二镜像区分配15.5M。控制信息区的位置可位于第一镜像区和第二镜像区之间,也可以设置在闪存内部存储空间的一端。\n[0050] 图2为本发明实施例中图1的控制信息区内部逻辑结构示意图,如图2所示,控制信息区包括:当前镜像区状态标志、第一镜像区的属性、第二镜像区的属性。其中,[0051] 当前镜像区状态标志,用于指示当前闪存中的第一镜像区及第二镜像区处于主用状态还是备用状态。若指示第一镜像区处于主用状态,且该镜像区是有效的,则设备启动时将第一镜像区的内容调入设备内存中运行,将第二镜像区作为备份;反之,则将第二镜像区的内容调入设备内存中运行,将第一镜像区作为备份。\n[0052] 第一镜像区的属性,用于存储第一镜像区的起始位置、长度、有效性、版本号等信息。\n[0053] 第二镜像区的属性,用于存储第二镜像区的起始位置、长度、有效性、版本号等信息。\n[0054] 图3为本发明实施例中图1的第一或第二镜像区内部逻辑结构示意图,如图3所示,第一镜像区或第二镜像区中包括镜像数据、镜像加载计数器。其中,\n[0055] 镜像数据,包括使嵌入式设备进行工作的软件、软件运行所需工作空间以及用户数据所占的空间。\n[0056] 镜像加载计数器,用于对第一或第二镜像区的镜像数据被装入内存时的装载次数进行计数,当镜像数据装载成功,则计数值清零;若装载失败,则将镜像加载计数值自动加\n1。\n[0057] 若该镜像数据加载的失败次数超过某个预设阈值,则将该镜像数据所属的镜像区设置为无效,然后再选择从另一个镜像区读取镜像数据加载。此时,也可以对加载失败的镜像区进行更新或选择升级,以恢复完整的镜像数据,这样,至少保证一个镜像区是可用的,从而实现设备的镜像数据的备份功能。\n[0058] 例如:在设备升级过程中,对第一镜像区的镜像数据进行更新,需要先将第一镜像区设置为无效,然后对该第一镜像区进行升级,待升级结束后,再将该第一镜像区重新设置为有效。这样,即使升级过程中出现意外导致升级失败,也可以保证第二镜像区是安全的、完整的备份,从而避免灾难性后果的发生。\n[0059] 图4为本发明实施例中嵌入式设备的启动过程示意图,如图4所示,该过程包括以下步骤:\n[0060] 步骤401:检查每个镜像区的镜像加载计数值是否超过预设阈值,若超过,则执行步骤402;否则,执行步骤403。\n[0061] 步骤402:将所述镜像区设置为无效,然后执行步骤403。\n[0062] 这里,所述设置无效具体是:将所述镜像区属性中有效性一项的值设置为无效状态。\n[0063] 步骤403:读取当前所选中的镜像区的状态标志。\n[0064] 这里,从控制信息区中获得当前镜像区的状态标志,镜像区的状态有两种:主用状态、备用状态。\n[0065] 步骤404:判断该镜像区是否为主用状态,若为备用状态,则执行步骤405;否则,执行步骤407。\n[0066] 这里,所述判断该镜像区为主用还是备用,是根据当前镜像区状态指示标志进行的。嵌入式设备启动时,会自动将最近一次正常运行时所用的镜像区保存为主用状态。通常,主用状态的镜像区的镜像数据默认是完整的、可用的。\n[0067] 此时,需将所述主用镜像区的镜像加载计数器值增加1。\n[0068] 步骤405:判断备用镜像数据是否有效,若无效,则执行步骤406;否则,执行步骤\n407。\n[0069] 这里,所述判断备用镜像数据是否有效,是通过验证镜像区的镜像数据是否完整实现的,若镜像数据完整,则判定该镜像区为可用;否则判定为不可用。\n[0070] 步骤406:判定本次加载过程失败,结束启动过程,等待对该镜像区进行软件升级。\n[0071] 这里,需要将所述当前待加载镜像区的镜像加载计数器值增加1。\n[0072] 由于当前镜像数据不可用,系统进入瘫痪状态,此时,可选择将该嵌入式设备进入升级模式,对设备进行软件升级。\n[0073] 步骤407:将有效镜像数据加载到设备内存中,待系统启动后调用应用程序,执行相应的功能。\n[0074] 闪存中包含有一段与硬件相关的初始启动代码,通常该代码放在闪存内部存储空间地址的起始位置。当镜像数据加载到设备内存时,所述初始启动代码随着镜像数据一起装入内存中。\n[0075] 系统启动后,将所述镜像区的镜像加载计数器值清零,此时该设备可以开始正常工作。\n[0076] 以下是对图4中步骤406所述对嵌入式设备进行软件升级过程的详细描述。\n[0077] 图5为本发明实施例中对嵌入式设备进行软件升级的过程示意图,如图5所示,该方法包括:\n[0078] 步骤501:选定待升级的镜像区,并将该镜像区设置为无效。\n[0079] 步骤502:将升级文件写入闪存的对应镜像区。\n[0080] 步骤503:判断写入的升级文件是否完整,若不完整,则返回步骤502;否则,执行步骤504。\n[0081] 这里,所述判断写入的升级文件是否完整,是比较源升级文件与镜像数据文件的字节数是否一致,若一致,则认为写入的升级文件是完整的;否则,判定所写入的升级文件不完整,需要重新写入。\n[0082] 步骤504:将所述镜像区设置为有效,升级过程结束。\n[0083] 当升级过程意外中断,导致本次升级失败,可以重复步骤501~步骤504对所选择的镜像区再次进行升级。\n[0084] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
法律信息
- 2020-01-03
未缴年费专利权终止
IPC(主分类): G06F 9/445
专利号: ZL 200810056237.6
申请日: 2008.01.15
授权公告日: 2011.05.11
- 2012-08-01
专利实施许可合同备案的生效
IPC(主分类): G06F 9/445
合同备案号: 2012990000392
专利号: ZL 200810056237.6
申请日: 2008.01.15
让与人: 中兴通讯股份有限公司
受让人: 北京中兴网捷科技有限公司
发明名称: 一种嵌入式设备的启动方法及软件升级方法
申请公布日: 2008.07.09
授权公告日: 2011.05.11
许可种类: 独占许可
备案日期: 2012.06.06
- 2011-05-11
- 2008-09-24
- 2008-07-09
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-08-22
|
2007-04-06
| | |
2
| |
2006-08-16
|
2006-03-15
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2011-06-03 | 2011-06-03 | | |