Processing

Please wait...

Settings

Settings

Goto Application

1. WO2020107469 - APPLICATION PROCESSING METHOD AND APPARATUS AND STORAGE MEDIUM

Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47   48   49  

附图

1   2   3   4   5   6   7   8   9   10   11   12  

说明书

发明名称 : 程序处理方法、设备及存储介质

技术领域

[0001]
本发明实施例涉及计算机领域,尤其涉及一种程序处理方法、设备及存储介质。

背景技术

[0002]
随着计算机技术的发展,嵌入式系统已经广泛应用在电子产品、工业设备等领域,为了便于产品维护,延长产品的使用时长以及扩展新的产品功能,需要对嵌入式系统进行升级,具体包括对引导程序和应用程序的升级。
[0003]
嵌入式系统中的引导程序和应用程序通常存放在可读写的存储器件中,当前嵌入式系统的引导程序的大小固定,但是,随着产品功能的拓展或者引导程序可靠性的提高,原有的引导程序已经不能满足需求,需要对原有的引导程序进行扩容。
[0004]
现有技术,通常将应用程序存储在引导程序的后面,当新的引导程序的大小超出原有引导程序的大小时,将导致新的引导程序覆盖掉应用程序所占用的部分存储区域或全部存储区域,从而导致应用程序无法正常运行,最终导致嵌入式设备无法正常运行。
[0005]
发明内容
[0006]
本发明实施例提供一种程序处理方法、设备及存储介质,以实现嵌入式设备中应用程序和引导程序正常升级,避免引导程序覆盖到应用程序的有效执行代码,使得升级后的应用程序可以正常运行,从而使得升级后的嵌入式设备可以正常运行。
[0007]
本发明实施例的第一方面是提供一种程序处理方法,应用于嵌入式设备,所述嵌入式设备的存储器存储有第一引导程序和第一应用程序;所述方法包括:
[0008]
获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序;
[0009]
将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的第一预设位置,所述第二应用程序包括头部区域;
[0010]
从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序;
[0011]
将所述第一引导程序替换为所述第二引导程序,所述第一引导程序和所述头部区域的大小大于或等于所述第二引导程序的大小。
[0012]
本发明实施例的第二方面是提供一种程序处理方法,应用于嵌入式设备,所述嵌入式设备的存储器存储有第一引导程序和第一应用程序;所述方法包括:
[0013]
获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序;
[0014]
将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的预设位置;
[0015]
从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序;
[0016]
比较所述第一引导程序和所述第二引导程序;
[0017]
如果所述第一引导程序和所述第二引导程序相同,则删除所述第二应用程序之后的所述第二引导程序。
[0018]
本发明实施例的第三方面是提供一种嵌入式设备,包括:存储器和处理器;
[0019]
所述存储器存储有第一引导程序和第一应用程序;
[0020]
所述处理器用于执行以下操作:
[0021]
获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序;
[0022]
将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的第一预设位置,所述第二应用程序包括头部区域;
[0023]
从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述 第二引导程序的起始地址开始获取所述第二引导程序;
[0024]
将所述第一引导程序替换为所述第二引导程序,所述第一引导程序和所述头部区域的大小大于或等于所述第二引导程序的大小。
[0025]
本发明实施例的第四方面是提供一种嵌入式设备,包括:存储器和处理器;
[0026]
所述存储器存储有第一引导程序和第一应用程序;
[0027]
所述处理器用于执行以下操作:
[0028]
获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序;
[0029]
将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的预设位置;
[0030]
从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序;
[0031]
比较所述第一引导程序和所述第二引导程序;
[0032]
当所述第一引导程序和所述第二引导程序相同时,删除所述第二应用程序之后的所述第二引导程序。
[0033]
本发明实施例的第五方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如第一方面所述的方法。
[0034]
本实施例提供的程序处理方法、设备及存储介质,通过将嵌入式设备的存储器中的第一应用程序替换为待升级固件中的第二应用程序和第二引导程序,该第二应用程序存储有第二引导程序的起始地址,根据该第二引导程序的起始地址,获取该第二引导程序,并将该存储器中的第一引导程序替换为该第二引导程序,实现了应用程序和引导程序的升级。第二应用程序包括头部区域,当第二引导程序的大小大于第一引导程序的大小时,该第二引导程序可占用该第二应用程序的头部区域,避免该第二引导程序覆盖到第二应用程序的有效执行代码,使得升级后的第二应用程序可以正常运行,从而使得升级后的嵌入式设备可以正常运行。

附图说明

[0035]
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0036]
图1为本发明实施例提供的嵌入式设备和控制器的示意图;
[0037]
图2为本发明实施例提供的程序处理方法的流程图;
[0038]
图3为本发明实施例提供的嵌入式设备的存储器的示意图;
[0039]
图4为本发明实施例提供的嵌入式设备的存储器的示意图;
[0040]
图5为本发明实施例提供的嵌入式设备的存储器的示意图;
[0041]
图6为本发明实施例提供的嵌入式设备的存储器的示意图;
[0042]
图7为本发明实施例提供的嵌入式设备的存储器的示意图;
[0043]
图8为本发明另一实施例提供的程序处理方法的流程图;
[0044]
图9为本发明另一实施例提供的程序处理方法的流程图;
[0045]
图10为本发明实施例提供的嵌入式设备的存储器的示意图;
[0046]
图11为本发明实施例提供的嵌入式设备的存储器的示意图;
[0047]
图12为本发明实施例提供的嵌入式设备的结构图。
[0048]
附图标记:
[0049]
21:嵌入式设备;22:控制器;31:待升级固件;
[0050]
110:嵌入式设备;111:存储器;112:处理器;
[0051]
113:通讯接口。

具体实施方式

[0052]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0053]
需要说明的是,当组件被称为“固定于”另一个组件,它可以直接在另一个组件上或者也可以存在居中的组件。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。
[0054]
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的 技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
[0055]
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
[0056]
本发明实施例提供一种程序处理方法。该程序处理方法应用于嵌入式设备。如图1所示,嵌入式设备21包括处理器、存储器和收发器。控制器22包括处理器、收发器和网络适配器。控制器22具体可以是计算机、平板电脑等。
[0057]
图2为本发明实施例提供的程序处理方法的流程图。如图2所示,本实施例中的方法,可以包括:
[0058]
步骤S201、获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序。
[0059]
在本实施例中,所述嵌入式设备的存储器存储有第一引导程序和第一应用程序。该第一引导程序记为该嵌入式设备的旧引导程序,该第一应用程序记为该嵌入式设备的旧应用程序。所述嵌入式设备需要对该旧引导程序和/或该旧引导程序进行升级时,所述嵌入式设备获取待升级固件,该待升级固件可以包括新的应用程序和新的引导程序,或者,该待升级固件可以只包括新的应用程序,此处,将新的应用程序记为第二应用程序,将新的引导程序记为第二引导程序。
[0060]
在本实施例中,所述获取待升级固件,包括:接收控制器发送的所述待升级固件。如图1所示,控制器22可通过网络适配器与服务器通信,该服务器将待升级固件发送给控制器22,控制器22的处理器通过控制器22的收发器将该待升级固件发送给嵌入式设备21,嵌入式设备21的处理器通过嵌入式设备21的收发器接收该待升级固件,该待升级固件具体可以是新的应用程序和新的引导程序的合成文件,或者,该待升级固件具体可以是新的应用程序。
[0061]
在一些实施例中,控制器22可以不包括网络适配器,也就是说,控 制器22可以生成该待升级固件,并将其生成的该待升级固件通过收发器发送给嵌入式设备21。
[0062]
在另外一些实施例中,嵌入式设备21可包括网络适配器,嵌入式设备21通过该网络适配器从服务器获取待升级固件,而不需接收控制器22发送的待升级固件。
[0063]
步骤S202、将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的第一预设位置,所述第二应用程序包括头部区域。
[0064]
图3或图4所示为嵌入式设备21的存储器,嵌入式设备21的存储器当前存储有引导程序1和应用程序1。引导程序1记为第一引导程序,应用程序1记为第一应用程序,引导程序1的起始地址为地址A,应用程序1在引导程序1之后,应用程序1的起始地址为地址B,引导程序1的程序尾端包括跳转执行代码区,该跳转执行代码区的作用是直接跳转到应用程序1固定的运行地址即应用程序1的起始地址。
[0065]
如图3或图4所示,31表示嵌入式设备21从控制器22接收到的待升级固件,该待升级固件31包括应用程序2和引导程序2,其中,应用程序2记为第二应用程序,引导程序2记为第二引导程序。当嵌入式设备21的处理器接收到控制器22发送的待升级固件后,将该待升级固件写入嵌入式设备21的存储器中,具体的,嵌入式设备21的处理器将嵌入式设备21的存储器中存储的应用程序1替换为该待升级固件,也就是,将嵌入式设备21的存储器中存储的应用程序1替换为应用程序2和引导程序2。嵌入式设备21重新上电后,嵌入式设备21的处理器从引导程序1的起始地址即地址A开始执行,执行到该引导程序1的跳转执行代码区时,跳转到应用程序2的起始地址即地址B。
[0066]
如图3或图4所示,引导程序2的起始地址为地址E,引导程序2的起始地址在应用程序2的尾部地址之后的预设位置,该预设位置记为第一预设位置。应用程序2与应用程序1的起始地址相同,都是地址B。引导程序2的起始地址即地址E相对于地址B的长度为y。应用程序2与应用程序1不同之处在于,应用程序2包括头部区域,应用程序2的运行地址 是地址D,也就是说,应用程序2的有效执行代码从地址D开始,从应用程序2的起始地址B开始到应用程序2的运行地址D之间的部分是应用程序2的头部区域。
[0067]
在本实施例中,应用程序2存储有引导程序2的起始地址,也就是地址E。
[0068]
步骤S203、从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序。
[0069]
嵌入式设备21的处理器将应用程序1替换为应用程序2和引导程序2之后,从该应用程序2中获取引导程序2的起始地址即地址E,并从该引导程序2的起始地址即地址E开始获取该引导程序2。
[0070]
在本实施例中,从所述第二应用程序中获取所述第二引导程序的起始地址,包括如下几种可行的实现方式:
[0071]
一种可行的实现方式是:所述第二应用程序包括第一区域;所述第一区域存储有所述第二引导程序的起始地址。所述从所述第二应用程序中获取所述第二引导程序的起始地址,包括:从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[0072]
如图5所示,应用程序2包括第一区域,该第一区域记为拷贝引导程序区,拷贝引导程序区中存储有引导程序2的起始地址即地址E。嵌入式设备21的处理器从引导程序1执行到应用程序2时,从该应用程序2的该拷贝引导程序区中读取引导程序2的起始地址即地址E。
[0073]
另一种可行的实现方式是:所述第二应用程序还包括第二区域,所述第二区域存储有所述第二应用程序的运行地址,所述第二区域的尾部地址为所述第一区域的起始地址。所述从所述第二应用程序中获取所述第二引导程序的起始地址,包括:根据所述第二区域,确定所述第一区域的起始地址;根据所述第一区域的起始地址,从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[0074]
如图5所示,应用程序2还可以包括第二区域,该第二区域记为运行地址存储区,运行地址存储区的起始地址为地址C。可选的,地址C相对于地址B的距离为x。该运行地址存储区存储有应用程序2的运行地址即地址D。拷贝引导程序区在运行地址存储区的后面,可选的,运行地址存 储区的尾部地址为拷贝引导程序区的起始地址。嵌入式设备21的处理器从引导程序1执行到应用程序2时,根据运行地址存储区,确定出运行地址存储区后的拷贝引导程序区,并根据拷贝引导程序区的起始地址,从该拷贝引导程序区中读取引导程序2的起始地址即地址E。
[0075]
再一种可行的实现方式是:所述第二应用程序还包括第三区域,所述第三区域存储有所述第二区域的起始地址,所述第三区域在所述第二应用程序的所述头部区域内。所述从所述第二应用程序中获取所述第二引导程序的起始地址,包括:从所述第三区域中获取所述第二区域的起始地址;根据所述第二区域的起始地址,确定所述第一区域的起始地址;根据所述第一区域的起始地址,从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[0076]
如图5所示,应用程序2还可以进一步包括第三区域,该第三区域记为跳转执行代码区,应用程序2中的跳转执行代码区和上述引导程序1中的跳转执行代码区的不同之处在于,上述引导程序1中的跳转执行代码区是为了跳转到应用程序2的起始地址即地址B,而应用程序2中的跳转执行代码区是为了跳转到应用程序2的运行地址存储区或拷贝引导程序区。可选的,应用程序2中的跳转执行代码区存储有应用程序2的运行地址存储区的起始地址。应用程序2中的跳转执行代码区在该应用程序2的头部区域内。嵌入式设备21的处理器从引导程序1执行到应用程序2时,从应用程序2中的跳转执行代码区跳转到运行地址存储区,根据运行地址存储区,确定出运行地址存储区后的拷贝引导程序区,并根据拷贝引导程序区的起始地址,从该拷贝引导程序区中读取引导程序2的起始地址即地址E。
[0077]
又一种可行的实现方式是:所述第二应用程序还包括第三区域,所述第三区域存储有所述第一区域的起始地址,所述第三区域在所述所述第二应用程序的所述头部区域内。所述从所述第二应用程序中获取所述第二引导程序的起始地址,包括:从所述第三区域中获取所述第一区域的起始地址;根据所述第一区域的起始地址,从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[0078]
如图5所示,应用程序2中的跳转执行代码区存储有应用程序2的拷 贝引导程序区的起始地址。嵌入式设备21的处理器从引导程序1执行到应用程序2时,从应用程序2中的跳转执行代码区跳转到拷贝引导程序区的起始地址,并根据拷贝引导程序区的起始地址,从该拷贝引导程序区中读取引导程序2的起始地址即地址E。
[0079]
在一些实施例中,所述第三区域的起始地址为所述第二应用程序的所述头部区域的起始地址。如图5所示,应用程序2中的跳转执行代码区的起始地址为应用程序2的头部区域的起始地址即地址B。
[0080]
可选的,当嵌入式设备21的处理器按照上述任一种方式获取到引导程序2的起始地址即地址E后,从该引导程序2的起始地址即地址E开始获取该引导程序2。
[0081]
在其中一些实施例中,所述第一区域还包括所述第二引导程序的长度;所述从所述第二引导程序的起始地址开始获取所述第二引导程序,包括:根据所述第二引导程序的长度,从所述第二引导程序的起始地址开始获取所述第二引导程序。例如,嵌入式设备21的拷贝引导程序区可以同时存储有引导程序2的起始地址和引导程序2的长度,当嵌入式设备21的处理器按照上述任一种方法读取到引导程序2的起始地址即地址E后,根据该引导程序2的长度,从该引导程序2的起始地址即地址E开始获取该引导程序2,可以理解,嵌入式设备21的处理器根据引导程序2的起始地址即地址E和该引导程序2的长度,可确定出引导程序2的尾部地址,该尾部地址即为该嵌入式设备21的处理器停止获取该引导程序2的位置。
[0082]
步骤S204、将所述第一引导程序替换为所述第二引导程序,所述第一引导程序和所述头部区域的大小大于或等于所述第二引导程序的大小。
[0083]
当嵌入式设备21的处理器获取到引导程序2后,将嵌入式设备21的存储器中原有的引导程序1替换为引导程序2,也就是说,用引导程序2来覆盖引导程序1。
[0084]
在本实施例中,引导程序2和引导程序1的大小可能不同,引导程序2的大小可能大于引导程序1的大小,也有可能小于引导程序1的大小。本实施例以引导程序2的大小大于引导程序1的大小为例。
[0085]
由于引导程序2的大小大于引导程序1的大小,所以,当嵌入式设备21的处理器用引导程序2来覆盖引导程序1时,将导致引导程序2会占用 到应用程序2的头部区域,在本实施例中,引导程序1的大小和应用程序2的头部区域的大小之和大于或等于引导程序2的大小。如图5所示,假设引导程序2的大小比引导程序1的大小大x,则将引导程序2覆盖掉引导程序1后,引导程序2将占用掉应用程序2的头部区域中大小为x的区域。在本实施例中,x小于或等于应用程序2的头部区域的大小,如此可以保证引导程序2不会覆盖掉应用程序2的有效执行代码,从而影响应用程序2的正常运行。例如,x小于应用程序2的头部区域的大小,则将引导程序2覆盖掉引导程序1后,将导致应用程序2的头部区域变小,例如,由从地址B到地址D的区域变为从地址C到地址D的区域。本实施例不限定从地址B到地址C的区域大小和从地址C到地址D的区域大小之间的关系。
[0086]
在一些实施例中,所述第一区域的起始地址为所述第二应用程序的运行地址。所述第二区域在所述第二应用程序的所述头部区域内。所述第一引导程序的起始地址与所述第二区域的起始地址之间的存储空间大小大于或等于所述第二引导程序的大小。
[0087]
如图5和图6所示,应用程序2的拷贝引导程序区的起始地址为应用程序2的运行地址即地址D。应用程序2的运行地址存储区在该应用程序2的头部区域内。在这种情况下,如果引导程序2的大小大于引导程序1的大小,则该引导程序2可以占用应用程序2的部分头部区域或整个头部区域,具体的,引导程序2可以不占用该头部区域中的运行地址存储区,也可以占用该运行地址存储区。如图5所示,当引导程序2不占用该头部区域中的运行地址存储区时,从引导程序1的起始地址即地址A到运行地址存储区的起始地址即地址C之间的存储空间大小需大于或等于引导程序2的大小。如图6所示,当引导程序2可以占用该头部区域中的运行地址存储区时,从引导程序1的起始地址即地址A到引导程序2的运行地址即地址D之间的存储空间大小需大于或等于引导程序2的大小。
[0088]
在另外一些实施例中,所述第一区域的起始地址在所述第二应用程序的运行地址之后的第二预设位置。所述第二区域不在所述第二应用程序的所述头部区域内。所述第一引导程序的起始地址与所述第二应用程序的运行地址之间的存储空间大小大于或等于所述第二引导程序的大小。
[0089]
如图7所示,应用程序2的拷贝引导程序区的起始地址在应用程序2的运行地址即地址D之后的预设位置,该预设位置记为第二预设位置,本实施例不限定从地址D到拷贝引导程序区的起始地址的距离。应用程序2的运行地址存储区不在应用程序2的头部区域内。在这种情况下,从引导程序1的起始地址即地址A到应用程序2的运行地址即地址D之间的存储空间大小需大于或等于引导程序2的大小,也就是说,引导程序2最多可占用掉应用程序2的头部区域,引导程序2大小的最大值是引导程序1的大小和应用程序2的头部区域大小之和。
[0090]
在一些实施例中,所述处理器将所述第一引导程序替换为所述第二引导程序,包括:比较所述第一引导程序和所述第二引导程序;若所述第一引导程序和所述第二引导程序不同,则将所述第一引导程序替换为所述第二引导程序。若所述第一引导程序和所述第二引导程序相同,则删除所述第二应用程序之后的所述第二引导程序。
[0091]
例如,当嵌入式设备21的处理器获取到引导程序2的起始地址即地址E,从该引导程序2的起始地址即地址E开始获取该引导程序2,并比较引导程序2和嵌入式设备21的存储器中原有的引导程序1,如果引导程序1和引导程序2不同,则将引导程序1替换为引导程序2,如果引导程序1和引导程序2相同,则删除应用程序2之后的引导程序2。
[0092]
在一些实施例中,所述将所述第一引导程序替换为所述第二引导程序之后,所述方法还包括:删除所述第二应用程序之后的所述第二引导程序。
[0093]
例如,引导程序1和引导程序2不同,嵌入式设备21的处理器将引导程序1替换为引导程序2后,可进一步删除应用程序2之后的引导程序2。
[0094]
在本实施例中,应用程序2的头部区域的大小可以根据引导程序1和引导程序2的大小确定,例如,当生成待升级固件时,可根据引导程序1和引导程序2的大小确定应用程序2的头部区域的大小。
[0095]
另外,本实施例同样适用于缩小引导程序的场景,而不仅仅是扩大引导程序。
[0096]
本实施例通过将嵌入式设备的存储器中的第一应用程序替换为待升级固件中的第二应用程序和第二引导程序,该第二应用程序存储有第二引 导程序的起始地址,根据该第二引导程序的起始地址,获取该第二引导程序,并将该存储器中的第一引导程序替换为该第二引导程序,实现了应用程序和引导程序的升级。第二应用程序包括头部区域,当第二引导程序的大小大于第一引导程序的大小时,该第二引导程序可占用该第二应用程序的头部区域,避免该第二引导程序覆盖到第二应用程序的有效执行代码,使得升级后的第二应用程序可以正常运行,从而使得升级后的嵌入式设备可以正常运行。
[0097]
本发明实施例提供一种程序处理方法。图8为本发明另一实施例提供的程序处理方法的流程图。如图8所示,在图2所示实施例的基础上,所述将所述第一引导程序替换为所述第二引导程序之后,所述方法还可以包括:
[0098]
步骤S701、从所述第二引导程序的起始地址开始,执行所述第二引导程序。
[0099]
如图3所示,嵌入式设备21的处理器将嵌入式设备21的存储器中原有的引导程序1替换为引导程序2后,如果嵌入式设备21不重新启动,嵌入式设备21的处理器将开始运行应用程序2。如果嵌入式设备21重新启动,则嵌入式设备21的处理器将从引导程序2的起始地址即地址A开始执行引导程序2。
[0100]
步骤S702、在执行所述第二引导程序时,获取所述第二应用程序的运行地址。
[0101]
如图3所示,引导程序2的尾部包括获取运行地址区和跳转执行代码区,其中,获取运行地址区用于获取应用程序2的运行地址即地址D,引导程序2的跳转执行代码区用于直接跳转到地址D开始执行。在本实施例中,跳转执行代码区主要为汇编代码,直接更改程序的运行地址。
[0102]
在一些实施例中,所述第二引导程序存储有所述第二区域的起始地址;所述在执行所述第二引导程序时,获取所述第二应用程序的运行地址,包括:在执行所述第二引导程序时,根据所述第二区域的起始地址,从所述第二区域中获取所述第二应用程序的运行地址。
[0103]
例如,引导程序2尾部的获取运行地址区存储有上述实施例所述的第 二区域的起始地址即运行地址存储区的起始地址,由于运行地址存储区存储有应用程序2的运行地址即地址D,则嵌入式设备21的处理器执行到引导程序2尾部的获取运行地址区时,从该获取运行地址区中读取运行地址存储区的起始地址,并根据该运行地址存储区的起始地址,从该运行地址存储区中读取应用程序2的运行地址即地址D。
[0104]
步骤S703、从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序。
[0105]
当嵌入式设备21的处理器执行到引导程序2尾部的跳转执行代码区时,直接跳转到应用程序2的运行地址即地址D开始执行应用程序2。可选的,引导程序2尾部的获取运行地址区只要在嵌入式设备21的处理器执行引导程序2尾部的跳转执行代码区之前,获取到应用程序2的运行地址即可。
[0106]
所述从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序,包括:从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序,并删除所述第二应用程序之后的所述第二引导程序。
[0107]
例如,由于应用程序2中存储有引导程序2的起始地址即地址E,则嵌入式设备21的处理器在执行应用程序2时,嵌入式设备21的处理器还可以根据该地址E删除该应用程序2之后的引导程序2。
[0108]
本实施例通过将第一引导程序替换为更大容量的第二引导程序,实现了对引导程序的修复、替换和扩容。从该第二引导程序的起始地址开始,执行该第二引导程序,并在执行该第二引导程序时,直接获取第二应用程序的运行地址,从该第二引导程序直接跳转到该第二应用程序的运行地址即有效执行代码的起始地址,执行该第二应用程序,提高了升级后的第二应用程序的执行效率。
[0109]
本发明实施例提供一种程序处理方法。该方法应用于嵌入式设备,所述嵌入式设备的存储器存储有第一引导程序和第一应用程序。图9为本发明另一实施例提供的程序处理方法的流程图。如图9所示,所述方法可以包括:
[0110]
步骤S801、获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序。
[0111]
如图10所示,嵌入式设备21的存储器存储有第一引导程序和第一应用程序,该第一引导程序具体为上述实施例中的引导程序2,第一应用程序具体为上述实施例中的应用程序2。地址D表示应用程序2的运行地址即应用程序2的有效执行代码的起始地址。地址C到地址D之间的存储空间可以是引导程序2占用掉应用程序2的部分头部区域后剩余的部分头部区域。
[0112]
步骤S802、将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的预设位置。
[0113]
嵌入式设备21从控制器22接收到的待升级固件包括如图10所示的应用程序3和引导程序2。嵌入式设备21的处理器接收到控制器22发送的待升级固件后,将该待升级固件写入嵌入式设备21的存储器中,具体的,嵌入式设备21的处理器将嵌入式设备21的存储器中存储的应用程序2替换为应用程序3和引导程序2。嵌入式设备21重新上电后,嵌入式设备21的处理器从引导程序2的起始地址即地址A开始执行,引导程序2的获取运行地址区获取到应用程序3的运行地址即有效执行代码的起始地址为地址D,并跳转到应用程序3的地址D开始执行。应用程序3存储有引导程序2的起始地址,引导程序2的起始地址为地址E,引导程序2的起始地址在应用程序3的尾部地址之后的预设位置,可选的,引导程序2的起始地址即地址E相对于地址C的长度为y。
[0114]
步骤S803、从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序。
[0115]
嵌入式设备21的处理器从应用程序3的地址D开始执行的过程中,从应用程序3中获取引导程序2的起始地址即地址E,并从地址E开始获取引导程序2。
[0116]
步骤S804、比较所述第一引导程序和所述第二引导程序。
[0117]
嵌入式设备21的处理器在从地址E获取到引导程序2后,比较嵌入 式设备21的存储器中当前已存储的引导程序和引导程序2。
[0118]
步骤S805、如果所述第一引导程序和所述第二引导程序相同,则删除所述第二应用程序之后的所述第二引导程序。
[0119]
如图10所示,由于嵌入式设备21的存储器中当前已存储的引导程序和引导程序2相同,则嵌入式设备21的处理器删除应用程序3之后的引导程序2。
[0120]
步骤S806、如果所述第一引导程序和所述第二引导程序不同,则将所述第一引导程序替换为所述第二引导程序。
[0121]
在其他实施例中,如果嵌入式设备21的存储器中当前已存储的引导程序和引导程序2不同,则嵌入式设备21的处理器可以将嵌入式设备21的存储器中当前已存储的引导程序替换为引导程序2。
[0122]
在一些实施例中,如图11所示,嵌入式设备21的存储器当前已存储有引导程序1和应用程序1。嵌入式设备21的处理器接收到控制器22发送的待升级固件包括应用程序3和引导程序2,嵌入式设备21的处理器将应用程序3和引导程序2写入到嵌入式设备21的存储器中,具体的,嵌入式设备21的处理器将应用程序1替换为应用程序3和引导程序2。嵌入式设备21重新上电后,嵌入式设备21的处理器从引导程序1的起始地址即地址A开始执行,执行到该引导程序1的跳转执行代码区时,跳转到应用程序2的起始地址即地址B。该地址B可以是应用程序3头部区域中的跳转执行代码区的起始地址,应用程序3头部区域中的跳转执行代码区存储有地址C,嵌入式设备21的处理器从地址B直接跳转到地址C开始运行。该地址C可以是应用程序3头部区域中的运行地址存储区的起始地址,该运行地址存储区存储有应用程序3的运行地址即地址D,嵌入式设备21的处理器从该运行地址存储区获取应用程序3的运行地址即地址D。该地址D具体可以是应用程序3中的拷贝引导程序区的起始地址,该拷贝引导程序区存储有引导程序2的起始地址即地址E。进一步,嵌入式设备21的处理器从地址E获取引导程序2,并将嵌入式设备21的存储器中的引导程序1替换为引导程序2。当嵌入式设备21重新启动后,嵌入式设备21的处理器从引导程序2的起始地址即地址A开始执行,引导程序2可获取到应用程序3的运行地址即地址D,嵌入式设备21的处理器从引导程序2 直接跳转到地址D开始执行应用程序3。嵌入式设备21的处理器可以在执行应用程序3的过程中删除应用程序3之后的引导程序2,或者,可以在将引导程序1替换为引导程序2后删除应用程序3之后的引导程序2。
[0123]
本实施例通过嵌入式设备获取到待升级固件后,将嵌入式设备的存储器中当前存储的第一应用程序替换为该待升级固件中的第二应用程序和第二引导程序,并从第二应用程序中获取第二引导程序的起始地址,在从第二引导程序的起始地址开始获取到该第二引导程序后,比较该嵌入式设备的存储器中当前存储的第一引导程序和该第二引导程序,如果第一引导程序和该第二引导程序相同,则删除第二应用程序之后的该第二引导程序,避免了嵌入式设备的处理器每次运行第二应用程序时,还需要对第二应用程序之后的该第二引导程序进行校验,提高了嵌入式设备的运行速度。
[0124]
本发明实施例提供一种嵌入式设备。图12为本发明实施例提供的嵌入式设备的结构图,如图12所示,嵌入式设备110包括:存储器111和处理器112。存储器111存储有第一引导程序和第一应用程序;处理器112用于执行以下操作:获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序;处理器112将存储器111中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的第一预设位置,所述第二应用程序包括头部区域;处理器112从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序;处理器112将所述第一引导程序替换为所述第二引导程序,所述第一引导程序和所述头部区域的大小大于或等于所述第二引导程序的大小。
[0125]
可选的,所述第二应用程序包括第一区域;所述第一区域存储有所述第二引导程序的起始地址。
[0126]
可选的,处理器112从所述第二应用程序中获取所述第二引导程序的起始地址时,具体用于:从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[0127]
可选的,所述第二应用程序还包括第二区域,所述第二区域存储有所 述第二应用程序的运行地址,所述第二区域的尾部地址为所述第一区域的起始地址。
[0128]
可选的,处理器112从所述第二应用程序中获取所述第二引导程序的起始地址时,具体用于:根据所述第二区域,确定所述第一区域的起始地址;根据所述第一区域的起始地址,从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[0129]
可选的,所述第二应用程序还包括第三区域,所述第三区域存储有所述第二区域的起始地址,所述第三区域在所述第二应用程序的所述头部区域内。
[0130]
可选的,处理器112从所述第二应用程序中获取所述第二引导程序的起始地址时,具体用于:从所述第三区域中获取所述第二区域的起始地址;根据所述第二区域的起始地址,确定所述第一区域的起始地址;根据所述第一区域的起始地址,从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[0131]
可选的,所述第三区域的起始地址为所述第二应用程序的所述头部区域的起始地址。
[0132]
可选的,所述第一区域的起始地址为所述第二应用程序的运行地址。
[0133]
可选的,所述第二区域在所述第二应用程序的所述头部区域内。
[0134]
可选的,所述第一引导程序的起始地址与所述第二区域的起始地址之间的存储空间大小大于或等于所述第二引导程序的大小。
[0135]
可选的,所述第一区域的起始地址在所述第二应用程序的运行地址之后的第二预设位置。
[0136]
可选的,所述第二区域不在所述第二应用程序的所述头部区域内。
[0137]
可选的,所述第一引导程序的起始地址与所述第二应用程序的运行地址之间的存储空间大小大于或等于所述第二引导程序的大小。
[0138]
可选的,所述第一区域还包括所述第二引导程序的长度;处理器112从所述第二引导程序的起始地址开始获取所述第二引导程序时,具体用于:根据所述第二引导程序的长度,从所述第二引导程序的起始地址开始获取所述第二引导程序。
[0139]
可选的,处理器112将所述第一引导程序替换为所述第二引导程序之 后,还用于:从所述第二引导程序的起始地址开始,执行所述第二引导程序;在执行所述第二引导程序时,获取所述第二应用程序的运行地址;从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序。
[0140]
可选的,所述第二引导程序存储有所述第二区域的起始地址;处理器112在执行所述第二引导程序时,获取所述第二应用程序的运行地址时,具体用于:在执行所述第二引导程序时,根据所述第二区域的起始地址,从所述第二区域中获取所述第二应用程序的运行地址。
[0141]
可选的,处理器112从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序时,具体用于:从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序,并删除所述第二应用程序之后的所述第二引导程序。
[0142]
可选的,处理器112将所述第一引导程序替换为所述第二引导程序之后,还用于:删除所述第二应用程序之后的所述第二引导程序。
[0143]
可选的,处理器112将所述第一引导程序替换为所述第二引导程序时,具体用于:比较所述第一引导程序和所述第二引导程序;若所述第一引导程序和所述第二引导程序不同,则将所述第一引导程序替换为所述第二引导程序。
[0144]
可选的,处理器112还用于:若所述第一引导程序和所述第二引导程序相同,则删除所述第二应用程序之后的所述第二引导程序。
[0145]
可选的,嵌入式设备110还包括:通讯接口113;处理器112获取待升级固件时,具体用于:通过通讯接口113接收控制器发送的所述待升级固件。
[0146]
本发明实施例提供的嵌入式设备的具体原理和实现方式均与上述实施例类似,此处不再赘述。
[0147]
本实施例通过将嵌入式设备的存储器中的第一应用程序替换为待升级固件中的第二应用程序和第二引导程序,该第二应用程序存储有第二引导程序的起始地址,根据该第二引导程序的起始地址,获取该第二引导程序,并将该存储器中的第一引导程序替换为该第二引导程序,实现了应用程序和引导程序的升级。第二应用程序包括头部区域,当第二引导程序的 大小大于第一引导程序的大小时,该第二引导程序可占用该第二应用程序的头部区域,避免该第二引导程序覆盖到第二应用程序的有效执行代码,使得升级后的第二应用程序可以正常运行,从而使得升级后的嵌入式设备可以正常运行。
[0148]
本发明实施例提供一种嵌入式设备。如图12所示,嵌入式设备110包括:存储器111和处理器112;存储器111存储有第一引导程序和第一应用程序;处理器112用于执行以下操作:获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序;将存储器111中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的预设位置;从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序;比较所述第一引导程序和所述第二引导程序;当所述第一引导程序和所述第二引导程序相同时,删除所述第二应用程序之后的所述第二引导程序。
[0149]
可选的,处理器112还用于:当所述第一引导程序和所述第二引导程序不同时,将所述第一引导程序替换为所述第二引导程序。
[0150]
本发明实施例提供的嵌入式设备的具体原理和实现方式均与图9所示实施例类似,此处不再赘述。
[0151]
本实施例通过嵌入式设备获取到待升级固件后,将嵌入式设备的存储器中当前存储的第一应用程序替换为该待升级固件中的第二应用程序和第二引导程序,并从第二应用程序中获取第二引导程序的起始地址,在从第二引导程序的起始地址开始获取到该第二引导程序后,比较该嵌入式设备的存储器中当前存储的第一引导程序和该第二引导程序,如果第一引导程序和该第二引导程序相同,则删除第二应用程序之后的该第二引导程序,避免了嵌入式设备的处理器每次运行第二应用程序时,还需要对第二应用程序之后的该第二引导程序进行校验,提高了嵌入式设备的运行速度。
[0152]
另外,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的程序处理方 法。
[0153]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0154]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0155]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0156]
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0157]
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0158]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的 普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

权利要求书

[权利要求 1]
一种程序处理方法,应用于嵌入式设备,所述嵌入式设备的存储器存储有第一引导程序和第一应用程序;其特征在于,所述方法包括: 获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序; 将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的第一预设位置,所述第二应用程序包括头部区域; 从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序; 将所述第一引导程序替换为所述第二引导程序,所述第一引导程序和所述头部区域的大小大于或等于所述第二引导程序的大小。
[权利要求 2]
根据权利要求1所述的方法,其特征在于,所述第二应用程序包括第一区域;所述第一区域存储有所述第二引导程序的起始地址。
[权利要求 3]
根据权利要求2所述的方法,其特征在于,所述从所述第二应用程序中获取所述第二引导程序的起始地址,包括: 从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[权利要求 4]
根据权利要求2所述的方法,其特征在于,所述第二应用程序还包括第二区域,所述第二区域存储有所述第二应用程序的运行地址,所述第二区域的尾部地址为所述第一区域的起始地址。
[权利要求 5]
根据权利要求4所述的方法,其特征在于,所述从所述第二应用程序中获取所述第二引导程序的起始地址,包括: 根据所述第二区域,确定所述第一区域的起始地址; 根据所述第一区域的起始地址,从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[权利要求 6]
根据权利要求4所述的方法,其特征在于,所述第二应用程序还包括第三区域,所述第三区域存储有所述第二区域的起始地址,所述第三区域在所述第二应用程序的所述头部区域内。
[权利要求 7]
根据权利要求6所述的方法,其特征在于,所述从所述第二应用 程序中获取所述第二引导程序的起始地址,包括: 从所述第三区域中获取所述第二区域的起始地址; 根据所述第二区域的起始地址,确定所述第一区域的起始地址; 根据所述第一区域的起始地址,从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[权利要求 8]
根据权利要求6或7所述的方法,其特征在于,所述第三区域的起始地址为所述第二应用程序的所述头部区域的起始地址。
[权利要求 9]
根据权利要求4-8任一项所述的方法,其特征在于,所述第一区域的起始地址为所述第二应用程序的运行地址。
[权利要求 10]
根据权利要求9所述的方法,其特征在于,所述第二区域在所述第二应用程序的所述头部区域内。
[权利要求 11]
根据权利要求10所述的方法,其特征在于,所述第一引导程序的起始地址与所述第二区域的起始地址之间的存储空间大小大于或等于所述第二引导程序的大小。
[权利要求 12]
根据权利要求4-8任一项所述的方法,其特征在于,所述第一区域的起始地址在所述第二应用程序的运行地址之后的第二预设位置。
[权利要求 13]
根据权利要求12所述的方法,其特征在于,所述第二区域不在所述第二应用程序的所述头部区域内。
[权利要求 14]
根据权利要求13所述的方法,其特征在于,所述第一引导程序的起始地址与所述第二应用程序的运行地址之间的存储空间大小大于或等于所述第二引导程序的大小。
[权利要求 15]
根据权利要求2-14任一项所述的方法,其特征在于,所述第一区域还包括所述第二引导程序的长度; 所述从所述第二引导程序的起始地址开始获取所述第二引导程序,包括: 根据所述第二引导程序的长度,从所述第二引导程序的起始地址开始获取所述第二引导程序。
[权利要求 16]
根据权利要求4-7、10-13任一项所述的方法,其特征在于,所述将所述第一引导程序替换为所述第二引导程序之后,所述方法还包括: 从所述第二引导程序的起始地址开始,执行所述第二引导程序; 在执行所述第二引导程序时,获取所述第二应用程序的运行地址; 从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序。
[权利要求 17]
根据权利要求16所述的方法,其特征在于,所述第二引导程序存储有所述第二区域的起始地址; 所述在执行所述第二引导程序时,获取所述第二应用程序的运行地址,包括: 在执行所述第二引导程序时,根据所述第二区域的起始地址,从所述第二区域中获取所述第二应用程序的运行地址。
[权利要求 18]
根据权利要求16或17所述的方法,其特征在于,所述从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序,包括: 从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序,并删除所述第二应用程序之后的所述第二引导程序。
[权利要求 19]
根据权利要求1-15任一项所述的方法,其特征在于,所述将所述第一引导程序替换为所述第二引导程序之后,所述方法还包括: 删除所述第二应用程序之后的所述第二引导程序。
[权利要求 20]
根据权利要求1-19任一项所述的方法,其特征在于,所述处理器将所述第一引导程序替换为所述第二引导程序,包括: 比较所述第一引导程序和所述第二引导程序; 若所述第一引导程序和所述第二引导程序不同,则将所述第一引导程序替换为所述第二引导程序。
[权利要求 21]
根据权利要求20所述的方法,其特征在于,所述方法还包括: 若所述第一引导程序和所述第二引导程序相同,则删除所述第二应用程序之后的所述第二引导程序。
[权利要求 22]
根据权利要求1-21任一项所述的方法,其特征在于,所述获取待升级固件,包括: 接收控制器发送的所述待升级固件。
[权利要求 23]
一种程序处理方法,应用于嵌入式设备,所述嵌入式设备的存储器存储有第一引导程序和第一应用程序;其特征在于,所述方法包括: 获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序; 将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的预设位置; 从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序; 比较所述第一引导程序和所述第二引导程序; 如果所述第一引导程序和所述第二引导程序相同,则删除所述第二应用程序之后的所述第二引导程序。
[权利要求 24]
根据权利要求23所述的方法,其特征在于,所述方法还包括: 如果所述第一引导程序和所述第二引导程序不同,则将所述第一引导程序替换为所述第二引导程序。
[权利要求 25]
一种嵌入式设备,其特征在于,包括:存储器和处理器; 所述存储器存储有第一引导程序和第一应用程序; 所述处理器用于执行以下操作: 获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序; 将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的第一预设位置,所述第二应用程序包括头部区域; 从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序; 将所述第一引导程序替换为所述第二引导程序,所述第一引导程序和所述头部区域的大小大于或等于所述第二引导程序的大小。
[权利要求 26]
根据权利要求25所述的嵌入式设备,其特征在于,所述第二应用程序包括第一区域;所述第一区域存储有所述第二引导程序的起始地址。
[权利要求 27]
根据权利要求26所述的嵌入式设备,其特征在于,所述处理器从所述第二应用程序中获取所述第二引导程序的起始地址时,具体用于: 从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[权利要求 28]
根据权利要求26所述的嵌入式设备,其特征在于,所述第二应用程序还包括第二区域,所述第二区域存储有所述第二应用程序的运行地址,所述第二区域的尾部地址为所述第一区域的起始地址。
[权利要求 29]
根据权利要求28所述的嵌入式设备,其特征在于,所述处理器从所述第二应用程序中获取所述第二引导程序的起始地址时,具体用于: 根据所述第二区域,确定所述第一区域的起始地址; 根据所述第一区域的起始地址,从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[权利要求 30]
根据权利要求28所述的嵌入式设备,其特征在于,所述第二应用程序还包括第三区域,所述第三区域存储有所述第二区域的起始地址,所述第三区域在所述第二应用程序的所述头部区域内。
[权利要求 31]
根据权利要求30所述的嵌入式设备,其特征在于,所述处理器从所述第二应用程序中获取所述第二引导程序的起始地址时,具体用于: 从所述第三区域中获取所述第二区域的起始地址; 根据所述第二区域的起始地址,确定所述第一区域的起始地址; 根据所述第一区域的起始地址,从所述第二应用程序的所述第一区域中获取所述第二引导程序的起始地址。
[权利要求 32]
根据权利要求30或31所述的嵌入式设备,其特征在于,所述第三区域的起始地址为所述第二应用程序的所述头部区域的起始地址。
[权利要求 33]
根据权利要求28-32任一项所述的嵌入式设备,其特征在于,所述第一区域的起始地址为所述第二应用程序的运行地址。
[权利要求 34]
根据权利要求33所述的嵌入式设备,其特征在于,所述第二区域在所述第二应用程序的所述头部区域内。
[权利要求 35]
根据权利要求34所述的嵌入式设备,其特征在于,所述第一引导程序的起始地址与所述第二区域的起始地址之间的存储空间大小大于或等于所述第二引导程序的大小。
[权利要求 36]
根据权利要求28-32任一项所述的嵌入式设备,其特征在于,所述第一区域的起始地址在所述第二应用程序的运行地址之后的第二预设位置。
[权利要求 37]
根据权利要求36所述的嵌入式设备,其特征在于,所述第二区 域不在所述第二应用程序的所述头部区域内。
[权利要求 38]
根据权利要求37所述的嵌入式设备,其特征在于,所述第一引导程序的起始地址与所述第二应用程序的运行地址之间的存储空间大小大于或等于所述第二引导程序的大小。
[权利要求 39]
根据权利要求26-38任一项所述的嵌入式设备,其特征在于,所述第一区域还包括所述第二引导程序的长度; 所述处理器从所述第二引导程序的起始地址开始获取所述第二引导程序时,具体用于: 根据所述第二引导程序的长度,从所述第二引导程序的起始地址开始获取所述第二引导程序。
[权利要求 40]
根据权利要求28-31、34、35、37任一项所述的嵌入式设备,其特征在于,所述处理器将所述第一引导程序替换为所述第二引导程序之后,还用于: 从所述第二引导程序的起始地址开始,执行所述第二引导程序; 在执行所述第二引导程序时,获取所述第二应用程序的运行地址; 从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序。
[权利要求 41]
根据权利要求40所述的嵌入式设备,其特征在于,所述第二引导程序存储有所述第二区域的起始地址; 所述处理器在执行所述第二引导程序时,获取所述第二应用程序的运行地址时,具体用于: 在执行所述第二引导程序时,根据所述第二区域的起始地址,从所述第二区域中获取所述第二应用程序的运行地址。
[权利要求 42]
根据权利要求40或41所述的嵌入式设备,其特征在于,所述处理器从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序时,具体用于: 从所述第二引导程序跳转到所述第二应用程序的运行地址,执行所述第二应用程序,并删除所述第二应用程序之后的所述第二引导程序。
[权利要求 43]
根据权利要求25-39任一项所述的嵌入式设备,其特征在于,所述处理器将所述第一引导程序替换为所述第二引导程序之后,还用于: 删除所述第二应用程序之后的所述第二引导程序。
[权利要求 44]
根据权利要求25-43任一项所述的嵌入式设备,其特征在于,所述处理器将所述第一引导程序替换为所述第二引导程序时,具体用于: 比较所述第一引导程序和所述第二引导程序; 若所述第一引导程序和所述第二引导程序不同,则将所述第一引导程序替换为所述第二引导程序。
[权利要求 45]
根据权利要求44所述的嵌入式设备,其特征在于,所述处理器还用于: 若所述第一引导程序和所述第二引导程序相同,则删除所述第二应用程序之后的所述第二引导程序。
[权利要求 46]
根据权利要求25-45任一项所述的嵌入式设备,其特征在于,所述嵌入式设备还包括:通讯接口; 所述处理器获取待升级固件时,具体用于: 通过所述通讯接口接收控制器发送的所述待升级固件。
[权利要求 47]
一种嵌入式设备,其特征在于,包括:存储器和处理器; 所述存储器存储有第一引导程序和第一应用程序; 所述处理器用于执行以下操作: 获取待升级固件,所述待升级固件包括第二应用程序和第二引导程序; 将所述存储器中的所述第一应用程序替换为所述第二应用程序和所述第二引导程序,所述第二应用程序存储有所述第二引导程序的起始地址,所述第二引导程序的起始地址在所述第二应用程序之后的预设位置; 从所述第二应用程序中获取所述第二引导程序的起始地址,并从所述第二引导程序的起始地址开始获取所述第二引导程序; 比较所述第一引导程序和所述第二引导程序; 当所述第一引导程序和所述第二引导程序相同时,删除所述第二应用程序之后的所述第二引导程序。
[权利要求 48]
根据权利要求47所述的嵌入式设备,其特征在于,所述处理器还用于: 当所述第一引导程序和所述第二引导程序不同时,将所述第一引导程序替换为所述第二引导程序。
[权利要求 49]
一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-24任一项所述的方法。

附图

[ 图 1]  
[ 图 2]  
[ 图 3]  
[ 图 4]  
[ 图 5]  
[ 图 6]  
[ 图 7]  
[ 图 8]  
[ 图 9]  
[ 图 10]  
[ 图 11]  
[ 图 12]