CN101356519B - 用于可利用空中机制的便携式设备的程序升级系统及方法 - Google Patents
用于可利用空中机制的便携式设备的程序升级系统及方法 Download PDFInfo
- Publication number
- CN101356519B CN101356519B CN2007800011610A CN200780001161A CN101356519B CN 101356519 B CN101356519 B CN 101356519B CN 2007800011610 A CN2007800011610 A CN 2007800011610A CN 200780001161 A CN200780001161 A CN 200780001161A CN 101356519 B CN101356519 B CN 101356519B
- Authority
- CN
- China
- Prior art keywords
- version
- aku
- data
- program
- piece
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 146
- 230000015654 memory Effects 0.000 claims abstract description 174
- 230000004044 response Effects 0.000 claims abstract description 21
- 238000013507 mapping Methods 0.000 claims description 288
- 238000009434 installation Methods 0.000 claims description 127
- 238000003860 storage Methods 0.000 claims description 79
- 230000000052 comparative effect Effects 0.000 claims description 34
- 238000004519 manufacturing process Methods 0.000 claims description 27
- 238000012986 modification Methods 0.000 claims description 21
- 230000004048 modification Effects 0.000 claims description 21
- 239000000284 extract Substances 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 abstract description 10
- 230000008569 process Effects 0.000 description 53
- 238000007906 compression Methods 0.000 description 42
- 230000006835 compression Effects 0.000 description 39
- 238000010586 diagram Methods 0.000 description 25
- 238000012545 processing Methods 0.000 description 22
- 239000003638 chemical reducing agent Substances 0.000 description 17
- 238000004891 communication Methods 0.000 description 12
- 239000004615 ingredient Substances 0.000 description 9
- 241001269238 Data Species 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 6
- 238000010835 comparative analysis Methods 0.000 description 6
- 239000002131 composite material Substances 0.000 description 6
- 238000007689 inspection Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 239000003550 marker Substances 0.000 description 6
- 238000012856 packing Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 5
- 230000008676 import Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013144 data compression Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000007596 consolidation process Methods 0.000 description 2
- 239000000446 fuel Substances 0.000 description 2
- 238000011900 installation process Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 241000256844 Apis mellifera Species 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1229—Printer resources management or printer maintenance, e.g. device status, power levels
- G06F3/123—Software or firmware update, e.g. device firmware management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
提供一种用于使用空中(over-the-air)编程机制的便携式设备的程序升级系统及方法,所述程序升级系统包括:升级包处理器,其产生程序的升级包;和升级包服务器,其允许接收方设备下载所述升级包。所述方法包括:在升级包处理器上,根据程序的第一版本和第二版本之间的差别来产生升级包;在升级包服务器上向接收方设备通知升级包的发布;响应于升级命令,从所述升级包服务器下载所述升级包到所述接收方设备,安装所述升级包到第一存储器中,并且合并所述升级包和程序的第一版本以作为程序的第二版本装载到易失性存储器中。
Description
技术领域
本发明涉及系统升级方法,具体而言,本发明涉及下述系统及方法:其通过使用利用空中编程机制(over-the-air programming mechanism)来更新便携式设备的程序(包括操作固件和应用程序)。
背景技术
诸如移动电话机和个人数字助理(PDA)之类的电子设备包含由电子设备的制造商、电信通信公司或第三方提供的固件和应用程序软件。这样的固件和应用程序软件可能包括需要版本升级的软件缺陷。为了修复和升级该固件和应用程序软件,用户拜访由制造商或通信公司运营的客户服务中心。在可利用空中机制(OTA)的设备的情况下,可以通过其中经由空中机制将固件或应用程序软件分发到设备的OTA机制来执行固件和软件升级。
发明内容
技术问题
为了使用OTA升级处理,电子设备并入用于下载升级包的下载模块和用于利用所下载的升级包来执行目标固件或软件的升级的升级处理模块。然而,大多数传统的可利用OTA的设备在OTA操作稳定性方面受到限制。
技术方案
做出本发明以便解决至少上述问题,并且本发明提供一种用于可利用OTA的移动电话机的程序升级系统及方法,其使得能够利用通过空中机制接收的升级包来更新固件。
本发明提供一种用于可利用OTA的便携式设备的程序升级系统及方法,其使得能够通过组合用空中传输的基于旧版本固件和新版本固件之间的差别产生的升级包和在该便携式设备中安装的旧版本固件来更新便携式设备的固件。本发明提供一种用于可利用OTA的便携式设备的程序升级系统及方法,其使得能够利用通过空中接收的升级包来更新固件,所述升级包包括历史数据、包括用于指示升级包和程序的升级目标版本的关系的索引信息的映射(map)数据、和表示程序的两个版本之间的差别的升级数据。
本发明提供一种用于可利用OTA的便携式设备的程序升级系统及方法,其使得能够产生升级包,所述升级包包括:基于固件的新版本和参考版本之间的差别而创建的升级数据、用于指示升级包和固件程序的升级目标版本的关系的历史数据、和用于映射两个版本的块的映射数据。
本发明提供一种用于可利用OTA的便携式设备的程序升级系统及方法,其使得能够产生升级包,所述升级包包括:基于固件的新版本和旧版本之间的差别而创建的升级数据、用于指示升级包和固件程序的升级目标版本的关系的历史数据、和用于映射两个版本的块的映射数据。
本发明提供一种用于可利用OTA的便携式设备的程序升级系统及方法,其使得能够通过组合安装在便携式设备中的参考固件和通过空中下载的升级包来更新便携式设备的固件。
本发明提供一种用于可利用OTA的便携式设备的程序升级系统及方法,其使得能够通过组合安装在便携式设备中的参考固件和通过空中下载的至少一个升级包来更新便携式设备的固件。
附图说明
从下面结合附图的详细描述,本发明的上述和其他目的、特征和优点将更加清楚,其中:
图1是示出根据本发明一示范性实施例的程序升级系统的图;
图2是示出图1所示的程序升级系统的升级包处理器10的操作的方框图;
图3到图8是示出在图2所示的升级包处理器中产生的升级包的数据格式的图;
图9是示出根据本发明一示范性实施例的程序升级系统的升级包处理器的配置的方框图;
图10是示出根据本发明另一示范性实施例的程序升级系统的升级包处理器的配置的方框图;
图11是示出由图9所示的升级包处理器产生的升级包的数据格式的图;
图12是示出由图10所示的升级包处理器产生的升级包的数据格式的图;
图13是示出根据本发明另一示范性实施例的程序升级系统的升级包处理器的配置的方框图;
图14是示出根据本发明一示范性实施例的程序升级系统的接收方设备的配置的方框图;
图15是示出图14所示的接收方设备的第一存储器的配置的方框图;
图16是示出图15所示的第一存储器250的第二存储区域的结构的图;
图17是示出在图16所示的第二存储区域中存储的每一升级包的历史数据的数据格式的图;
图18是示出根据本发明一示范性实施例的程序升级系统的升级操作的方框图;
图19是示出根据本发明另一示范性实施例的程序升级系统的升级操作的方框图;
图20和21是示出根据本发明另一示范性实施例的程序升级系统的升级操作的方框图;
图22是示出根据本发明一示范性实施例的程序升级系统的接收方设备的升级操作的方框图;
图23是示出根据本发明一示范性实施例的程序升级方法的流程图;
图24到26是示出根据本发明一示范性实施例的程序升级方法的升级包产生过程的流程图;
图27是示出根据本发明一示范性实施例的程序升级方法的升级包产生过程的流程图;
图28是示出图27所示的压缩可靠性测试过程的流程图;
图29是示出图27所示的安装数据产生过程的流程图;
图30是示出图27所示的升级包产生过程的流程图;
图31是示出根据本发明一示范性实施例的程序升级方法的程序下载过程的消息流图;
图32是示出根据本发明一示范性实施例的程序升级方法的所下载升级包的处理过程的流程图;
图33是示出根据本发明一示范性实施例的程序升级方法的升级包安装过程的流程图;
图34是示出根据本发明一示范性实施例的程序升级方法的升级程序运行过程的流程图;以及
图35到38是示出根据本发明另一示范性实施例的程序升级方法的升级程序运行过程的流程图。
具体实施方式
根据本发明的一个方面,通过一种网络中的程序升级方法来实现上述和其他目的,所述网络包括:升级包处理器,其产生程序的升级包;和升级包服务器,其允许接收方设备下载所述升级包。所述程序升级方法包括:在升级包处理器上,根据程序的第一版本和第二版本之间的差别来产生升级包;在升级包服务器上向多于一个的接收方设备通知升级包的发布;在所述接收方设备上,从所述升级包服务器下载所述升级包;安装所述升级包到非易失性存储器中;并且响应于升级命令而合并所述升级包和第一版本以作为第二版本装载到易失性存储器中。
根据本发明的另一方面,通过一种网络中的程序升级方法来实现上述和其他目的,所述网络包括:升级包处理器,其产生程序的升级包;和升级包服务器,其允许接收方设备下载所述升级包,所述程序升级方法包括:在所述升级包处理器上,根据所述程序的第一版本和第二版本之间的差别来产生所述升级包;在所述升级包服务器上,向所述接收方设备通知所述升级包的发布;在所述接收方设备上,从所述升级包服务器下载所述升级包;将所述升级包安装到其中安装有第一版本的第一存储器的升级包区域中;响应于升级命令,通过合并所述升级包和所述第一版本来将第一版本升级到所述第二版本;以及将第二版本装载到第二存储器中。
根据本发明的另一方面,通过一种网络中的程序升级方法来实现上述和其他目的,所述网络包括:升级包处理器,其产生程序的升级包;和升级包服务器,其允许接收方设备下载所述升级包。所述程序升级方法包括:在所述升级包处理器上,以块为单位比较所述程序的第一版本和第二版本;根据比较结果,产生包括用于将所述第二版本的块映射到所述第一版本的映射数据的安装数据;以及通过合并所述安装数据和升级数据来产生所述升级包;在所述接收方设备上下载所述升级包;和通过将所述升级包应用于所述第一版本,将在接收方设备上安装的第一版本升级到第二版本。
根据本发明的再一方面,通过一种程序升级系统来实现上述和其他目的。所述程序升级系统包括:升级包处理器,用于利用程序的第一版本和第二版本来产生升级包;升级包服务器,用于存储所述升级包,并且通知所述升级包的发布;和至少一个接收方设备,用于下载所述升级包,并且利用所下载的包来升级所述程序,所述接收方设备包括:第一存储器,用于分开安装第一版本和所述升级包;和第二存储器,用于装载通过合并第一版本和所述升级包而升级的第二版本。
参照附图详细描述本发明的示范性实施例。相同的参考数字自始至终被用于指代相同或类似部分。可能忽略对合并在此的公知功能和结构的详细描述以避免模糊本发明的主题。
在下面的实施例中,定义升级版本的块数目以及宏块/块的尺寸仅仅是为了帮助理解本发明。然而,对于本领域技术人员来说,很明显,在不特别定义宏块的数目和尺寸或其修改的情况下可以实现本发明。
在下面的实施例中,“升级”是利用用于修改缺陷和提高可用性或性能的升级包来修改系统的固件或软件的源代码的过程。
“升级包”是关于目标程序的新旧版本的信息的集合。“升级数据”是对目标程序的现有代码的修改。“安装数据”是一组用于将程序的旧版本更新到新版本的信息。安装数据可以包括用于指示升级包和第一版本的关系的历史数据、和用于将第二版本的块映射到第一版本的映射数据。映射数据可以包括诸如“拷贝”、“移动”、“修改”等的用于创建程序的新版本的命令、以及用于执行命令的块位置数据。“第一版本”表示目标程序的旧版本,并且可互换地称为“参考版本”。“第二版本”表示程序的第一版本的升级版本。程序的第二版本可以是根据程序的第一和第二版本之间的差别创建的升级包。接收方设备在制造阶段被安装有软件的第一版本,并且当发生升级事件时可以下载和存储至少一个升级包。升级包包括将程序从第一版本更新到第二版本所需的安装数据和升级数据,特别地,可以包括命令“拷贝”、“移动”和“修改”、以及用于执行命令的块位置数据。“程序”可以是操作固件和应用程序软件。
“第一存储器”是用于存储程序的第一和第二版本的存储器。“第二存储器”是用于利用由第二版本代表的升级包来装载从第一版本升级的程序的存储器。可以利用在单个存储器单元中的第一和第二存储器区域来实现第一和第二存储器,或第一和第二存储器可以被实现为物理上分开的存储器模块。在下面的实施例中,第一和第二存储器是各自的存储器模块。第一存储器是诸如非易失性存储器的快闪存储器,而第二存储器是为易失性存储器的同步动态随机存取存储器(SDRM)。第一存储器存储程序的第一版本以及至少一个作为程序的第二版本的升级包。升级包包括用于标识程序(包括映射数据)的版本的历史数据和升级数据。如果通过系统初始化或用户命令而发生升级事件,则系统装载利用升级包升级的程序的第二版本到第二存储器中,从而系统利用程序的第二版本来运行。
程序的第一版本可以是程序的参考版本。程序的第二版本可以是包括安装数据和升级数据的升级包。安装数据可以包括历史数据和/或映射数据。程序的第一版本可以是程序的初始版本,而程序的第二版本包括根据程序的第一和第二版本之间的差别产生的升级数据和用于安装升级数据的安装数据。在第二存储器中装载的程序可以是通过组合程序的第一和第二版本来创建的程序。
程序升级系统可以被划分成:发送系统,用于产生和发送升级包;接收方设备,用于接收升级包并利用该升级包来升级目标程序。
图1是示出根据本发明一示范性实施例的程序升级系统的图。
参照图1,程序升级系统包括通过网络彼此通信的升级包处理器10、升级包服务器20、和接收方设备30。
如果引入了程序的新版本(第二版本),则升级包处理器10从程序的旧版本(第一版本)和新版本(第二版本)产生升级包,并且然后将该升级包发送到升级包服务器20。这里,升级包处理器10通过无线信道来与升级包服务器20通信,所述无线信道是基于诸如码分多址(CDMA)、通用移动电信系统(UMTS)、无线宽带(WiBro)、无线保真(Wi-Fi)、微波接入的宽带互操作性(WiMAX)、蓝牙(Bluetooth)和紫蜂(Zigbee)的无线通信标准或诸如通用串行总线(USB)和通用异步接收机/发送机(UART)的有线通信标准而建立的。升级包服务器20可以集成到升级包处理器10中。如果从升级包处理器10接收到升级包,则升级包服务器20向多个接收方设备30发送通知消息以便接收方设备下载升级包。而且,升级包服务器20和接收方设备30通过下述无线信道彼此通信:所述无线信道是基于诸如CDMA、UMTS、WiBro、Wi-Fi、WiMAX、Bluetooth和Zigbee的无线通信标准或诸如USB和UART的有线通信标准而建立的。
如果成功地下载了升级包,则接收方设备30将该升级包存储到存储器单元中,以用于产生程序的第二版本。可以利用第一存储器和第二存储器来实现存储器单元。第一和第二存储器可以被集成在单个存储器单元中,或可以彼此分开。第一存储器存储程序的第一版本和升级包,而第二存储器装载从程序的第一版本和升级包产生的程序的第二版本。也就是说,接收方设备30存储从升级包服务器20下载的升级包到第一存储器中作为用于创建程序的第二版本的信息。通过合并程序的第一版本和升级包来产生程序的第二版本,然后响应于升级命令而被装载到第二存储器中。在升级过程之后,接收方设备30利用装载在第二存储器上的程序的第二版本来运行。
下面描述升级包处理器10的操作。图2是示出图1的程序升级系统的升级包处理器10的操作的方框图。
参考图2,升级包处理器10接收从外部输入的程序的第一版本50和第二版本55。程序的第一版本50可以是原始版本,而程序的第二版本可以是从程序的第一版本升级的版本。升级包处理器10从程序的第一和第二版本产生升级包。升级包处理器10比较第一版本50和第二版本55,并根据在第一版本50和第二版本55之间的差别来产生升级包,并且然后将该升级包发送到升级包服务器20。升级包包括升级数据和安装数据。根据程序的第一版本和第二版本之间的差别产生升级数据,并且安装数据包括历史信息和映射数据。历史数据是要与第二版本合并的数据,而映射数据包括用于根据版本比较结果进行拷贝、改变和移动的命令、以及命令的索引信息。升级包可以只包括历史数据和映射数据。在这种情况下,修改的数据包含在映射数据中,而不是升级数据中。可以通过有线或无线信道将升级包传输到升级包服务器20。
图3到图8是示出在图2所示的升级包处理器10中产生的升级包的数据格式的图。
在该实施例中,升级包包含升级数据、历史数据和映射数据,或者只包含历史数据和映射数据。在对本发明的描述中,自始至终,术语“旧版本”可互换地用于指代第一版本(V1),而术语“新版本”用于指代第二版本(V2)。在通过使用程序的第一版本产生第二版本(V2)时,可以为程序的第一版本(V1)分配间隔区域,以便减少在升级过程中的移动操作。
参照图3到8,升级包处理器10逐块(所述块具有预设尺寸,在此,所述块被称为宏块或MB)比较V1和V2的数据,获得每个块的属性(拷贝(C)、修改(M)、移动(S)),并基于属性产生升级包。升级包包括升级数据、历史数据和映射数据。在一些情形中,在升级包中不包含升级数据。宏块是通过分割数据而产生的单元,并且16指令为16个比特,而32指令为32个比特。
映射数据包括以诸如C(拷贝)、M(修改:插入或替换相同尺寸)和S(移动)的命令开始的命令字符串。以下列命令字符串格式构建每个命令字符串:
[Cmd][start block No,number of block][flag][distance][difference]
其中,“Cmd”可以是C、M和S之一,“start block No”代表相应命令的开始块号,而“number of block”代表对应于该命令的块的数目。“flag”具有0、1或2的值。该flag在Cmd是“C”(仅仅拷贝)或S(仅仅移动)时被设置为0,在可以利用Cmd“M”从V1产生块数据(从V1产生数据)时被设置为1,在不能利用Cmd“M”从V1产生块数据但是该块数据位于delta包(不使用V1)时被设置成2。该delta包可以是升级数据。“distance”表示指示V2的块在V1中的位置的块索引信息。
如果在比较V1和V2时检测到V2的其数据与V1的相应块的数据不同的块,则升级包处理器10利用M标记该块,以指示被修改的数据块。如果检测到被修改的数据块,则升级包处理器10在两个方向上从V1的块中搜索相应于被修改块的预定数量的块,以寻找具有被修改块的数据的块。
在图3到5的例子中,从由被修改块开始的两个方向上的块中搜索15个块。如果在搜索范围中找到具有相同数据的块,则升级包处理器10收集具有相同数据的块的索引。可将搜索范围设置为任意数量的块,例如2、4、8、16或32。在这个实施例中,搜索范围的块的数量是16。升级包处理器10在从当前块开始的各个方向上搜索16个块。相应地,将32个块与第二版本的块进行比较。在图3到5中,找到相对于V1被修改的V2的四个块16到19作为具有与被修改数据的数据相同的数据的块。相应地,升级包处理器10利用包括块6、7、12和13的索引的映射数据而不是对被修改数据本身打包来生成升级包。
通过以块或一组块为单位进行比较来产生被修改块的映射数据。通常,可以将第二版本的被修改数据产生为多个块。也就是说,当程序被升级为新版本时,可以通过以被修改块的形式插入和/或替换数据来产生升级程序(V2)。在这种情况下,被修改块的数据可以与参考程序(V1)的块数据相同或类似。在本实施例中,当搜索到被修改块时,通过以一组块为单位进行比较来产生映射数据。在这种情况下,包含在该组中的块的数目可以是2、4、8、16等。块的数目被设置为2的倍数,以便增加计算速度。将第二版本(V2)的块与第一版本(V1)的块进行比较。如果块被拷贝或移动,则在映射数据中包含该块的索引。如果块是被修改块,则升级包处理器10比较该块数据,将用于第二版本的块的命令确定为“修改”,并且利用该块的索引来产生映射数据。在2-块的搜索的情况下,在0、2、4、6等的块索引处开始该搜索。在4-块搜索的情况下,在0、4、8的块索引处开始该搜索。在8-块搜索的情况下,在0、8、16的块索引处开始该搜索。这是为了减少升级包处理器10的计算复杂度。
在图3到5中,搜索范围被设置为32个块(两个方向上各16个块),并且以多个块为单位执行被修改块的搜索。图3示出了在第一版本(V1)的搜索范围内存在与第二版本(V2)的被修改块相同的块的示例。图4示出了在第一版本(V1)的搜索范围内存在与第二版本(V2)的被修改块类似的块的示例。图5示出了在第一版本(V1)的搜索范围内不存在与第二版本(V2)的被修改块相同或类似的块的示例。
当在V1的搜索范围中找到与V2的被修改块相同的块时,升级包处理器10产生具有关于所述块的索引的信息的映射数据。
如图3中所示,升级包处理器10以块为单位比较V1和V2。如果检测到至少一个被修改块,则升级包处理器10在V1的搜索范围中搜索相同块。如果找到相同块,则升级包处理器10产生包含V1的块的索引的映射数据而不是产生V2的被修改块的升级数据。
在图3的例子中,V1的第16到第19块被右移以便占据V2的第20到第24块。相应地,升级包处理器10搜索与V2的被修改的第16到第19块相同的块,并检测到V1的第12、第13、第8和第9块与该被修改的第16到第19块相同。如图3中所示,V2的第16和第17块与V1的第12和第13块相同,V2的第18和第19块与V1的第8和第9块相同。表1示出以图3中描述的这样的方式产生的、要包含在升级包中的映射数据。
表1
C:0,15,F:0,null(空),null
M:16,4 F:1,(16-12),(17-13),(18-8),(19-9),0,0,0,0
S:20,5 F:0,(20-4),0
OR
C:0,15,F:0,null,null
M:16,4 F:1,(16-12),(17-13),(18-8),(19-9),0,0,0,0
S:20,5 F:0,(20-16),0
在表1中,映射数据表明:V2的第0到第15块与V1的那些块相同,V2的第16到第19块与V1的第12、第13、第8和第9块相同,V2的第20到第24块与V1的第16到第20块相同。也就是说,当在V 1的搜索范围中找到V2的被修改块,则升级包处理器10产生用于将V2的被修改块映射到在V1的搜索范围中找到的块的映射数据。在这种情况下,利用历史数据和在表1中示出的映射数据来产生升级包。
图4示出了当在V1的搜索范围中不存在与V2的一些被修改块相同的块但是存在类似块时的升级包产生技术的另一个例子。如图4中所示,新插入V2的第16到第19块并且V1的原来的第16到第19块被右移以形成V2的第20到第24块。
如图4所示,在V1的搜索范围中不存在与V2的第17到第18块相同的块。在这种情况下,升级包处理器10利用V1和V2的数据来产生如表2中所示的映射数据。
表2
C:0,15,F:0,null,null
M:16,4 F:1,(16-12),(17-13),(18-6),(19-7),0,code(B,K),code(B,C),0
S:20,5 F:0,(20-4),0
在表2中,映射数据表明:V2的第0到第15块与V1的那些块相同,V2的第20到第24块与V1的第16到第20块相同。而且,所述映射数据表明:V2的第16和第19块与V1的第12和第7块相同,通过与V1的第13块的差来熵编码(code(B,K))V2的第17块,并且通过与V1的第8块的差来熵编码(code(B,C))V2的第18块。在如图6所示的在V1的搜索范围中找不到与V2的被修改块相同的块时,升级包处理器10将V2的被修改块映射到V1的相应块,并基于V1和V2的块的差来执行熵编码。
图5示出了当在V1的搜索范围中不存在与V2的一些被修改块相同或类似的块时的升级包产生技术的另一例子。
升级包处理器10以块为单位比较V1和V2,检查V2的块的属性(C、M或S),并基于块的属性来产生升级数据。被修改块的数据被打包到升级包中。如上所述,升级包处理器10检查在V1的搜索范围中是否存在与V2的被修改包相同的块。如果没有找到相同块,则升级包处理器10利用V1和V2的块的差来执行熵编码以产生升级数据。
在图5中,与V1的第16到第19块被右移相对,插入V2的第16到第19块。升级包处理器10在V1的搜索范围中搜索到与V2的新插入块相同的块。由于在搜索范围中不存在相同块,所以升级包处理器10向被插入块分配属性M并将所述块设置为升级数据。
如图5所示,在V1的搜索范围中不存在与V2的第16到第19块相同的块。在这种情况下,升级包处理器10产生如表3中所示的映射数据和利用熵编码产生升级数据。
表3
C:0,15,F:0,null,null
M:16,4 F:2,null,null
S:20,5,F:0,(20-4),0
在表3中,映射数据表明:V2的第0到第15块与V1的那些块相同,V2的第20到第24块与V1的第16到第20块相同,并且V2的第16到第19块被熵编码成Z、W、P和X(code(E,C))。当如图5所示的在搜索范围中没有找到被修改块时,升级包处理器10将块的flag设置为2(F=2)并且产生分开的升级数据。在这种情况下,升级包包括历史数据、映射数据和升级数据。
在图5的情况下,升级包处理器10还可以产生不带有附加的升级数据的升级包。表4示出了在从升级包中排除升级数据时的映射数据。
表4
C:0,15,F:0,null,null
M:16,4 F:2,null,Z,W,P,X
S:20,5,F:0,(20-4),0
当在V1的搜索范围中找不到被修改块时(参见图5),升级包处理器通过对被修改块的数据进行熵编码来产生映射数据。如果以表4的形式产生映射数据,则升级包处理器10不产生附加的升级数据并且利用历史数据和映射数据来产生升级包。
图6示出了通过在V1中提供间隔区域的改进升级包产生技术的例子,图7示出了特别是在从V2中除去V1的块时的升级包产生技术的例子。
参照图6,如果与V1相比,在V2中添加了新数据或除去了某些数据,则升级包处理器10将移动跟在所添加块或被除去块之后的块。如果该块被左移,则升级包处理器10在V1的搜索范围中搜索与每个被修改块相同的块。如果找到了相同块,则升级包处理器10将V1的块索引映射到V2的被修改块。相反,如果没有找到相同的宏块,则升级包处理器10对V2的被修改块的数据执行熵编码以产生升级数据。
当将V1更新为V2时,可以执行多个移动操作。可以利用为移动操作预备的间隔区域来编程V1。可以考虑V2的升级数据来配置间隔区域。优选地,利用如图6中所示的间隔区域在不影响下一组成部分的情况下执行移动操作。在图6的例子中,通过移除V1的第6到第10块、添加第3、第4、第8、第9、第13和第17至第19块到V1中、并且替换第15块来对V2编程。在这种情况下,删除了5个块,并且添加了8个块,从而移动最后3个块。由于最后3个块被移动到间隔区域,所以可以在不受移动操作的影响的情况下比较V2的下一组成部分和V1的相应组成部分。
参照图7,可利用固件空中机制(FOTA)的二进制数据被提供有间隔区域,以便相互保护组成部分。程序具有图7的结构。也就是说,V1由多个组成部分组成(在图7中为5个组成部分),并且每个组成部分具有间隔区域。当引入V2作为具有附加数据块的V1的被升级程序时,升级包处理器10可以利用该间隔区域来执行移动操作。也就是说,升级包处理器10以组成部分为单位来执行升级过程以便基于每个组成部分产生升级包。
如上所述,利用历史数据、映射数据和升级数据来产生升级包。在这种情况下,映射数据包括具有块索引的块的属性(拷贝、修改和移动),升级数据代表被修改块。而且,可以利用映射数据和历史数据而不是升级数据来产生升级包。在这种情况下,除了块的属性和它们的索引之外,映射数据还可以包括关于被修改块的信息。
图8示出了利用历史数据和升级数据的升级包生成技术的例子。当利用历史数据和升级数据产生升级包时,升级包处理器10产生如图8所示的升级数据而不产生映射数据。这里,升级数据具有包含块数据和V2的块索引的结构。
参照图8,通过在V1的第5和第6块之间添加新的第6和第7块、在V1的第14和第15块之间添加新的第13到第17块、以及移除V1的第9到第12块来对V2编程。在这种情况下,升级包处理器10将块索引和关于块数据的信息并入升级包中。升级数据具有类似于映射数据的结构。也就是说,升级数据包括以C(拷贝)、M(以相同尺寸修改、插入或替换)和S(移动)命令之一开始、并且以下列字符串格式构造的命令字符串。
拷贝命令字符串
[cmd][start block No][number of block]
修改命令字符串
[cmd][start block No][number of block][data]
移动命令字符串
[cmd][start block No][number of block][previous version position]
拷贝命令字符串包括开始块索引和要拷贝的块的数目;修改命令字符串包括开始块索引和块的连接信息(concatenation information);而移动命令字符串包括开始块索引和V1的相应块索引。
在图8的例子中,可以通过“C:0,6”来表达用于指示要拷贝到V2中的块的升级信息。用于指示要修改的块的升级信息可以由“M:6,2,X,Y”和“M:13,5,A,B,C,D,E”来表达,而用于指示要移动的块的升级信息可以由“S:8,3,6,S:11,2,13”和“S:18,7,15”来表达。
当如图8所示产生升级包时,接收方设备接收下述升级包:所述升级包从V1拷贝V2的第0到第5块、对于第6到第7块添加X和Y、对于V2的第8到第10块移动V1的第6到第8块、丢弃V1的第9到第12块、对于V2的第11到第12块移动V1的第13到第14块、对于V2的第13到第17块添加A、B、C、D和E、以及对于V2的第18到第24块移动V1的第15到21块。升级包处理器10产生的升级包(delta包)的升级数据可以被如表5表达。
表5
C:0,6
M:6,2,X,Y
S:8,3,6
S:11,2,13
M:13,5,A,B,C,D,E
S:18,7,15
升级包处理器10通过组合升级数据和历史数据来产生升级包,并且将该升级包传送到升级包服务器20。此时,由升级包处理器10产生的升级包在升级包服务器20之前被压缩。通过利用升级数据在没有映射数据的情况下产生升级包,可以增加升级包产生速度。可以在不包括压缩处理的情况下产生升级包。
参照图9到13更详细地描述在利用历史数据、映射数据和升级数据以及利用历史数据和升级数据时的升级包产生技术。
图9是示出根据本发明一示范性实施例的程序升级系统的升级包处理器的配置的方框图。升级包处理器10压缩V1和V2、通过对比分析产生升级数据和映射数据、通过组合包括映射数据的安装数据和升级数据来产生升级包。
图10是示出根据本发明另一示范性实施例的程序升级系统的升级包处理器的配置的方框图。升级包处理器10压缩V1和V2、产生升级数据、通过组合安装数据和升级数据来产生升级包。在该实施例中,安装数据不包括映射数据。
图11是示出由图9所示的升级包处理器产生的升级包的数据格式的图,而图12是示出由图10所示的升级包处理器产生的升级包的数据格式的图。
图13是示出根据本发明另一示范性实施例的程序升级系统的升级包处理器的配置的方框图。升级包处理器10比较V1和V2的原始数据以通过比较分析来产生升级数据、并通过组合包括映射数据的安装数据和升级数据来产生升级包。在该实施例中,可以在没有映射数据的情况下产生安装数据。
参照图9到12,升级包处理器10包括第一压缩器160、第一解压缩器165、比较器110、包括历史数据产生器120和映射数据产生器150的安装数据产生器180、包产生器130、第二压缩器140和第二解压缩器145。程序的第一版本(V1)50和第二版本(V2)55在被如图4和5所示压缩后输入,或者如图13中所示以原始数据的形式输入,而不需要压缩过程。比较器110以块为单位比较V1和V2,并且检查以确定V1和V2的相应块是否彼此相同。比较器110可以使用异或OR运算电路。如果被比较的块彼此不相同,则比较器110在V1的搜索范围内搜索与V2的相应块相同的块。如果在V1的搜索范围内找到与V2的相应块相同的块,则比较器110将关于比较结果的信息和对于V2的相应块找到的块的块索引传送到安装数据产生器180。
也就是说,比较器110比较V1和V2的具有相同块索引的块,并且,如果具有相同块索引的两个块彼此相同,则传送具有标识信息的比较结果。相反,如果两个块彼此不相同,则比较器110在V1的搜索范围中搜索与V2的当前块相同的块。通过压缩过程的前进方向和反方向中的从目标块开始的块数目来定义搜索范围(在图3到8的例子中,总共30个,前进方向和反方向的每个方向上15个块)。可以通过在V1的搜索范围中摆动V2的目标块来执行所述搜索。如果在V1的搜索范围中找到相同块,则比较器110传送比较结果和相同块的块索引到安装数据产生器180。如果没有找到相同块,则比较器110将比较结果和V1中的相邻块的块索引(在被修改块的情况下,紧接被拷贝或被移动块的块的块索引)传送到安装数据产生器180。
返回图3到5,如果比较V2的第0到第15块与V1的相应块,则比较器110将比较结果和它们的标识信息传送到安装数据产生器180。
在V2的第16到19块的情况下,比较器110识别出所述块与V1的那些块不同以便在V1的搜索范围中搜索与V2的各个目标块相同的块。如果搜索范围是15个块,则比较器110搜索第1到第15块,然后再搜索V1的第17块到第31块。在图3的情况下,比较器110识别出V2的第16到19块分别与V1的第12、第13、第8、和第9块相同。相应地,比较器110传送具有V2的第16到19块的块索引和V1的第12、第13、第8、和第9块的块索引以及它们的关系的比较结果给安装数据产生器180。
在图4的情况下,比较器110识别出V2的第16到19块类似于V1的第12、第13、第6、和第7块,从而比较器110传送具有V2的第16到19块的块索引和V1的第12、第13、第6、和第7块的块索引以及它们的关系的比较结果给安装数据产生器180。此时,比较结果表明在V2的第17块的数据K和V1的第13块的数据B之间的差、以及在V2的第18块的数据C和V1的第6块的数据B之间的差。也就是说,当V2的两个连续块中的前一块和V1的两个连续块中的前一块相同但是V2的两个连续块中的后一块和V1的两个连续块中的后一块不相同时,比较器110传送具有块索引和它们的关系的比较结果。
在图5的在V1的搜索范围中找不到与V2的第16到第19块相同或类似于V2的第16到第19块的一系列块的情况下,比较器110传送指示不能从V1得到V2的第16到第19块的比较结果。
安装数据产生器180可以如图9所示利用历史数据产生器120和映射数据产生器150来实现,或者如图10所示仅仅利用历史数据产生器120来实现。历史数据产生器120存储所述程序的第二版本的版本号。例如,在历史数据产生器120中存储的版本号是5,第二程序V2的版本是5,从而通过组合具有版本号5的第二版本V2来升级第一版本V1。映射数据产生器150通过分析具有第一和第二版本的块索引的比较结果来产生用于生成升级包的映射数据。以格式[Cmd][start block No,number of block][flag][distance][difference]来产生映射数据。如果第一和第二版本的具有相同块索引的块彼此相同,则映射数据产生器150将映射数据的命令字段设置为C,并且列出块索引。重复该操作直到在第二版本中检测到被修改块或被删除块。
如果具有相同块索引的块彼此不同,则映射数据产生器150将映射数据的命令字段设置为M或S。命令M可以表示插入命令或替换命令。映射数据产生器150分析与块索引关联的比较结果。如果确定与第一版本V1相比第二版本V2包括额外块,则映射数据产生器150将映射数据的命令字段设置为M。在将命令字段设置为M之后,映射数据产生器150在V1的搜索范围中搜索与添加的块相同的块。映射数据产生器150根据在V1的搜索范围中是找到相同块(如图3的例子所示)、是找到类似的块模式(如图4的例子所示)、还是没有找到相同的块模式和类似的块模式(如图5的例子所示),产生修改映射数据。在图5的情况下,分开产生映射数据和升级数据(如表3中所示),或升级数据可以集成到映射数据中(如表4中所示)。在下面的实施例中,分开描述如何产生映射数据和升级数据。
当被修改块替换相同尺寸的原来的块时,映射数据产生器150根据两个块之间的差执行熵编码,并且利用熵编码结果来产生映射数据。在这种情况下,不移动紧跟在被替换的块之后的块。当在第二版本V2中移除第一版本V1的一些块时,映射数据产生器150产生用于移动紧跟在被移除块之后的块的映射数据以便由被移动的块来填充空的空间。
如果插入被修改块,则右移原来的块。在产生用于插入被修改块的插入映射数据后,映射数据产生器150分析比较器110的输出(即第一和第二版本的块索引)。接着,映射数据产生器150产生并入块索引、要移动的块的数量、和第一和第二版本的移动块的数目的映射数据。
如果引入图3所示的第二版本,则映射数据产生器150产生如表1所示的映射数据。如果引入如图4所示的第二版本,则映射数据产生器150产生如表2所示的映射数据。如果引入如图5所示的第二版本,则映射数据产生器150产生如表3或4所示的映射数据。在随后的描述,利用图5和表3的示例来描述映射数据生成。
包产生器130分析从第一压缩器160输出的第二版本的压缩的块数据和从映射数据产生器150输出的映射数据,并根据分析结果产生升级包。包产生器130根据从映射数据产生器150接收的映射数据来确定是否产生升级数据。更详细地,包产生器130分析映射数据的命令字段。如果块的映射数据的命令字段被设置为C或S,则包产生器130不产生升级数据。如果映射数据包括用于相应块的数据或用于索引第一版本的块的块索引,则即使在映射数据的命令字段被设置为M时,包产生器130也不产生升级数据。相反,如果映射数据具有被设置为M的命令字段,但不包括第一版本的块索引或熵数据,则包产生器130利用第二版本的压缩的块数据来产生升级数据。也就是说,虽然命令字段被设置为M,但是如果flag被设置为F=1,则包产生器130不产生数据,但是当命令字段被设置为M并且flag被设置为2时则产生数据。
接着,如果不提供,则包产生器130通过合并升级数据和由安装数据产生器180产生的安装数据来产生升级包。安装数据可以仅仅包括历史数据或者安装数据包括历史数据和映射数据。也就是说,安装数据产生器180可以利用历史数据产生器120和映射数据产生器150来实现(如图9所示),或者仅仅利用历史数据产生器120来实现(如图10所示)。
参照图10,和图9不同,在不包括映射数据产生器150的情况下,实现安装数据产生器180。在这种情况下,包产生器130产生包括映射到第二版本的相应块索引的第一版本的块索引以及关于块数据的信息的升级数据。此时,升级数据被提供有类似于由图9的映射数据产生器150提供的那些的命令。每个块的升级数据可以以下述格式来表达:如C:[start block No][numberof block],M:[start block No][number of block][data],和S:[start blockNo][number of block][previous version position]。也就是说,用于从V1拷贝块的升级数据包括开始块索引和要拷贝的块的数目;用于添加或修改V1的块的升级数据包括开始块索引、要插入或修改的块的数目、和用于要插入或修改的块的连接的块数据;用于移动V1的块的升级数据包括要移动的块的数目和要移动的第一个块的块索引。
接着,包产生器130通过合并升级数据和历史数据来产生升级包,并将该升级包发送到升级包服务器20。在被发送到升级包服务器20之前,可以由第二压缩器140压缩该升级包。当在不采用映射数据生成升级包时,可以快速地产生升级包。
如上所述,升级包可以包括历史数据、映射数据和升级数据,或者仅包括历史数据和升级数据。图11示出由图9所示的升级包处理器产生的升级包的数据格式,而图12示出由图10所示的升级包处理器产生的升级包的数据格式。
通过第二压缩器140压缩从包产生器130输出的升级包,并且压缩的升级包被发送到升级包服务器20。可以不使用第二压缩器140。然而,优选地,压缩升级包,以提高传输效率。当由第一压缩器160压缩程序的第一和第二版本时,第一解压缩器165解压缩压缩的第一和第二版本,以用于测试是否正确地执行了对第一和第二版本的压缩。如果确定在压缩第一和第二版本时发生错误,则控制第一压缩器160以重新尝试压缩。
在图4和5中,升级包处理器10被如此构造使得以压缩的程序数据的形式来比较所述程序的第一和第二版本。在这种情况下,比较器110比较所述程序的压缩的第一和第二版本。然而,比较器110可被配置成比较第一和第二版本的原始数据。
图13是示出根据本发明的另一示范性实施例的程序升级系统的升级包处理器的配置的方框图。如图13中所示,和图4和5中的升级包处理器不同,实现升级包处理器10而不包括第一压缩器。相应地,比较器110将程序的第一和第二版本划分成块,并且以块为单位比较所述程序的第一和第二版本的数据。除了图13所示的升级包处理器不包括第一比较器之外,图13所示的升级包处理器的结构和操作和图9的相同。虽然安装数据产生器180包括历史数据产生器120和映射数据产生器,但是可以仅仅利用历史数据产生器120来实现安装数据产生器180(如在图10所示的升级包处理器中)。
如上所述,升级包处理器10比较第二版本的数据和第一版本的相应数据并且根据比较结果产生具有或不具有安装数据的升级包。如果第二版本被如此编程使得从第一版本移除一些数据块或向第一版本添加一些数据块,则移动原来的数据块。当移除一些块时,跟在被移除块之后的块被左移。相反,如果添加一些块,则被添加新块所占据的位置上的块向右移。当第二版本包括被修改块时,升级包处理器10在第一版本的搜索范围中搜索与被修改块相同的块,并且根据搜索结果,将V1中的搜索到的块的块索引与在V2中的被修改块的块索引匹配,或者基于某些系列的块的相似性来执行熵编码。在V2中,由被修改块替换的V1的块被右移与被修改块的数目一样多的位置。升级包处理器10根据比较结果产生具有被设置为C(拷贝)、M(修改)和S(移动)的命令字段的映射数据,并产生包括映射数据、历史数据和升级数据的升级包。映射数据可以被包含到升级数据中。通过有线或无线通信信道,该升级包被发送到升级包服务器20。
如果从升级包处理器10接收到升级包,则升级包服务器20向接收方设备30通知新升级包的发布,以便接收方30可以从升级包服务器20下载该升级包。升级包服务器可以包括用于通知新升级包的发布的通知服务器。
如果从升级包服务器20接收到升级通知消息,则接收方设备30通过响应升级通知消息来触发升级包的下载。
图14是示出根据本发明示范性实施例的程序升级系统的接收方设备的配置的方框图。
参照图14,接收方设备30包括下载器220、安装器230、译码器(translator)240、第一存储器250和第二存储器260。
下载器220从升级包服务器20接收升级包,安装器230提取安装数据和升级数据,并将所提取的安装数据和升级数据存储到第一存储器250中。安装数据包括历史数据和映射数据。然而,安装数据可以仅包括历史数据。当安装数据不包括映射数据时,块映射信息可以被包含在升级数据中。如果接收到不包括映射数据的安装数据,则安装器230执行对第一版本和升级数据的对比分析,并根据分析结果确定是否产生映射数据。当不通过安装器230产生映射数据时,译码器240可以利用包含在升级数据中的映射信息来合并升级包和程序的第一版本。安装器230在为升级包准备的第一存储器250的区域中存储历史数据、映射数据和升级数据。第一存储器250可以存储程序的第一版本和至少一个用于将程序的第一版本升级到第二版本的升级包。可以预设可存储在第一存储器250中的升级包的数量N。在该实施例中,N被设置为6。
如果下载了程序新版本的升级包,则接收方设备30输出提示,用于通知用户准备了程序升级。此时,译码器240读出程序的第一版本的数据和第二版本的升级包,并合并第一版本的数据和升级包以便产生第二版本。程序的第二版本被装载到第二存储器260上。此时,译码器240分析升级包的安装数据以检查版本号以及要升级的目标版本。而且,译码器240分析映射数据,并且参照映射数据利用相应升级数据来升级目标版本的块的数据(在本实施例中为第一版本)。当安装数据中不包括映射数据时,译码器240分析历史数据,并根据历史数据的分析结果来确定要升级的程序的目标版本。可以通过合并升级包的升级数据和第一版本来产生第二版本。在第一版本被升级到第二版本的同时,译码器240将第二版本的数据装载到第二存储器260上。在完成升级过程之后,接收方设备30利用装载在第二存储器260上的程序的第二版本来运行。
如上所述,第一存储器250存储程序的第一版本和用于将第一版本更新到第二版本的至少一个升级包。升级包包括安装数据(历史和映射数据)以及升级数据。安装数据可以仅包括历史数据。而且,升级包可以仅包括安装数据。安装数据包括包含历史数据的映射信息的映射数据和升级包的升级数据。映射数据通过利用三种类型的命令(即拷贝、修改和移动)来提供两个版本之间的关系。映射数据用于快速地址计算,以用于将第一版本的数据更新到第二版本的数据。参照存储在第一存储器250中的第一版本的数据和利用映射数据,可以快速地产生程序的第二版本并将其装载到第二存储器260上。
在升级包处理器10上,可以利用或不利用映射数据产生升级包的安装数据。相应地,从升级包服务器20下载的升级包可能包括映射数据或可能不包含映射数据。当升级包不包含映射数据时,安装器230可以通过比较存储在第一存储器250中的第一版本的数据和升级包、并且分析比较结果来产生用于将包含在升级包中的升级数据映射到第一版本的数据的映射数据。可以如图8所示构造升级数据。由安装器230产生映射数据的原因是增加译码器240的第二版本产生速度。当升级数据包含用于将升级数据映射到第一版本的数据的映射信息时,可以直接替换或参照后面产生的映射数据来替换升级数据。
虽然优选地利用最新的升级包来升级第一版本,但是可以利用程序的其他版本的升级包来升级第一版本。这是可能因为接收方设备30提供不同版本的升级包的存储。相应地,如果利用特定升级包的第二版本生成失败,则可以尝试利用在第一存储器250中存储的其他升级包来产生第二版本。
可以分别利用几个用于存储升级包的存储区域来实现第一存储器250(在本实施例中可以存储6个升级包)。相应地,甚至在对于升级包服务器20下载新的升级包时,也不删除先前下载的升级包。存储升级记录作为升级历史,同时维持所述程序的第一版本的升级和安装数据。由于利用升级历史来维护关于第一和第二版本的信息,所以可以高容错地执行升级。例如,当最后的升级包不工作时,通过用户选择可以使用其他升级包。甚至在所有升级包都不工作的最坏的情况下,也可以恢复所述程序的原来版本。
图15是示出图14所示的接收方设备的第一存储器的配置的方框图。参照图15,第一存储器包括第一存储区域310、第二存储区域320和第三存储区域330。
第一存储区域310存储原始数据或压缩数据形式的程序的第一版本。第二存储区域320存储用于产生程序的新版本的至少一个升级包。每个升级包包括升级数据和安装数据。升级数据可以包括具有块索引的用于更新旧版本的数据、或针对新版本添加的数据的命令。相应地,第二存储区域320的尺寸基于其中存储的升级包的数目来确定。第三存储区域330是用于存储具有文件系统的用户数据的用户空间。
图16是示出图15所示的第一存储器250的第二存储区域320的结构的图,而图17是示出在图16所示的第二存储区域320中存储的每一升级包的历史数据的数据格式的图。
参照图16,第二存储区域320被提供有预定数量的存储区域,用于存储升级包(在本实施例中为6个升级包)。每个存储区域被构造成存储构成升级包的历史数据、映射数据和升级数据。通常,升级包包括安装数据和升级数据,并且安装数据包括历史数据或历史和映射数据。第二存储区域320可以被配置成分开存储历史数据和映射数据。存储历史数据以保持到在第一存储区域310中存储的第一版本的链接。第一版本的映射数据和升级数据可能没有被存储,或可能作为空数据存在。图16示出包括历史数据、映射数据和升级数据的升级包的例子。在升级包处理器10利用历史数据和映射数据产生升级包时,第二存储区域320可以被构造为具有用于存储相应版本的历史数据和映射数据的存储区域。
参照图17,历史数据包括版本字段、尺寸字段、组合标志字段、以及失败标志字段。这里,版本字段包括升级包的版本号(在图16中为#2到#7之一),尺寸字段包含历史数据的尺寸值,组合标志字段包含要升级的目标版本的版本号(在本示例中,为第一版本的版本号#1),而失败标志字段包含指示装载失败的发生的信息。第一版本的版本号#1可以被包含在版本字段中,并且被链接到组合标志字段。例如,如果升级包的历史数据的版本字段和组合标志字段分别包含#5和V#1,则接收方设备30通过合并第二版本#5和第一版本#1来升级第一版本#1。下载的升级包以图10所示的结构被存储到图15所示的第一存储器310的第二存储区域320中。当请求在第二存储区域320中存储的升级包时,所请求的包与在第一存储区域310中存储的第一版本合并以便将第一版本升级到第二版本。
图18是示出根据本发明一示范性实施例的程序升级系统的升级操作的方框图。在图18中示出的例子中,第一存储器是非易失性存储器,如快闪存储器,而第二存储器是易失性存储器,如随机存取存储器(RAM)。
参照图18,如果输入了升级请求,则装载器(未示出)从第一存储器250的第二存储区域320装载所请求版本的升级包,而译码器240通过合并所装载的升级包和在第一存储区域310中存储的程序的第一版本来产生程序的第二版本,并且然后将该第二版本装载到第二存储器260上。响应于用户命令而产生升级请求。也就是说,在下载了升级包、或存在未应用的下载包时,接收方设备30输出提示,用于通知用户该升级包的发布以便用户可以触发对目标程序的升级。如果用户响应于升级提示而输入升级请求,则接收方设备30执行如上所述的升级过程,并将程序的被升级版本装载到第二存储器260上。相应地,接收方设备30在之后利用第二版本来运行。
在接收方设备被初始化后,可以执行升级处理。如图15中所示,程序的第一版本和升级包被分开存储在第一存储器250中,并且通过合并第一版本与多个升级包中的一个来执行程序升级以便产生程序的第二版本并且将其装载到第二存储器260上。
图19是示出根据本发明另一示范性实施例的程序升级系统的升级操作的方框图。在本实施例中,第一存储器250不存储第二版本的升级包。
参照图19,第一存储器250存储程序的第一版本。这里,第一版本可以是程序的初始版本。程序的第一版本包括n个块B#1到B#n。第一版本的安装数据包括历史数据和映射数据。历史数据包括被设置为#1的版本字段和被设置为#1的组合标志字段。映射数据可以以表1到3之一的形式来构造。
如果输入了升级请求命令,则译码器240分析安装数据。在第一存储器250中不存在升级包时,映射数据区域处于空状态或者被提供有映射数据{C:0,n,F:0,null,null}。这样的映射数据表示用于将在第一存储器250中存储的程序的第一版本装载到第二存储器中的命令,由此,译码器240从第一存储器250拷贝第一版本,并将拷贝的第一版本装载到第二存储器260中。相应地,通过装载在第二存储器260中的第一版本来运行接收方设备30。第一版本可以以压缩状态存储在第一存储器250中。在这种情况下,译码器240利用解压缩器270对压缩的第一版本进行解压缩,并且然后将其装载到第二存储器260中。而且,当下载通过升级包处理器10的第二压缩器140压缩的升级包时,在装载到第二存储器260中之前,译码器240在通过解译码器270对压缩的升级包解压缩之后执行译码。
图20和21是示出根据本发明另一示范性实施例的程序升级系统的升级操作的方框图。在本实施例中,第一版本V1被存储在第一存储器250的第一存储区域310中,而升级包被存储在第一存储器250的第二存储区域320中。第一版本可以是初始版本或预设的参考版本,并且每个升级包包括升级数据和安装数据。安装数据包括包含第二版本的版本号和要升级的目标版本(在本示例中为第一版本)的历史数据以及映射数据。第一版本包括如图20和21中所示的n个块B#1到B#n。历史数据的组合标志字段被设置为#0,映射数据可以以表1到3之一的形式来构造。
参照图20,第一存储器250的第一存储区域310存储程序的第一版本,而在第一存储器250的第二存储区域320中存储的特定升级包具有表1形式的映射数据。升级包的历史数据具有用于合并升级包和第一版本的标志。在这种情况下,译码器240参照映射数据将第一版本升级到第二版本并将第二版本装载到第二存储器260中。映射数据包括用于拷贝第一版本的第0到第15块、对于第二版本的第16到19块拷贝第一版本的第12、第13、第8和第9块、以及右移紧跟在第一版本的第15块之后的块的信息。相应地,译码器240参照映射数据升级第一版本,并将被升级程序(即第二版本)装载到第二存储器260中,如图21中所示。
当在块之间存在间隔时,所述块被移动到所述间隔中。
参照图21,第一存储器的第一存储区域310存储程序的第一版本,第一存储器250的第二存储区域320存储升级包。假定特定升级包具有其以表3的形式构造的映射数据。升级包的历史数据具有用于指示第一版本和升级包的合并的标志。映射数据具有用于拷贝第一版本的第0到第15块、对于第二版本的第16到第19块插入升级数据{Z,W,P,X}、以及右移紧跟在第一版本的第15块之后的块的信息。以这种方式,译码器240参照映射数据升级第一版本。
在升级所述程序之后,通过根据图20和21的示例升级的程序的第二版本来运行接收方设备30。可以以压缩状态存储第一版本和升级包。可以下载作为压缩包的升级包或所述升级包在下载之后被压缩。当以压缩状态存储第一版本和升级包时,译码器240利用用于升级处理的解压缩器270来对压缩的第一版本和升级包进行解压缩。当以(当通过升级包处理器10的第一压缩器160压缩第一和第二版本时)压缩状态比较第一和第二版本时,输入到译码器240的块可以处于压缩状态。在这种情况下,译码器240利用解压缩器275对第一版本的压缩数据和升级包进行解压缩,并且将经解压缩的数据装载到第二存储器260中。
图22是示出根据本发明一示范性实施例的程序升级系统的接收方设备的升级操作的方框图。
参照图22,第一存储器250存储程序的第一版本和第二版本的升级包。译码器240响应于升级命令而合并升级包和第一版本以便产生第二版本并且将其装载到第二存储器260中。在将程序的第二版本装载到第二存储器260中之后,通过程序的第二版本来运行接收方设备30。当接收方设备30被初始化或输入了升级命令时,可以重复执行升级处理。
如上所述,根据本发明实施例的程序升级方法通过预定通信标准的信道来下载升级包,存储所下载的升级包,并利用所存储的升级包来执行程序的升级,装载所升级的程序,并且在所升级的程序的控制下运行接收方设备。
本发明的程序升级方法可以是升级包产生过程、所下载安装数据的处理过程、所下载升级包的管理处理和升级执行过程。
在升级包产生过程中,程序的第一和第二版本被输入到升级包处理器10中。可以以原始状态或以压缩状态来输入第一和第二版本。接着,比较第一和第二版本以便确定两个版本之间的差别。基于所述差别,产生包括用于合并升级包和在接收方设备中安装的第一版本的映射数据的安装数据。安装数据和升级数据一起被打包到升级包中,并且该升级包被发送到升级包服务器。
在所下载安装数据的处理过程中,发送到升级包服务器的升级包被下载到接收方设备。接收方设备可以通过比较升级包和参考版本(这里为第一版本)来获得在升级包中包含的安装数据、以及帮助地址计算的安装数据。也就是说,当合并存储在第一存储器250中的第一版本和升级包到第二存储器260中时,可以利用安装数据、以块为基础快速地处理第一版本的数据和升级包。
在升级包的管理过程中,安装数据用于通过参照比较升级包和第一版本而获得的映射数据进行的快速地址计算,以及用于帮助将第一版本和升级包合并到第二存储器260中。
可以根据在升级包中是否打包有映射数据来执行升级包安装。当在升级包中打包有映射数据时,接收方设备30从升级包提取历史数据、映射数据和升级数据并在第一存储器250的升级包区域中分开存储所提取的数据。
另一方面,如果在升级包中不包含映射数据,则接收方设备30可以通过比较在第一存储器250中存储的第一版本和下载的升级包来获得映射数据。此时,映射数据可以被集成到升级包中,如图8所示。在这种情况下,接收方设备在安装处理期间从升级数据中提取映射数据,并且在映射数据区域中安装映射数据。接收方设备还提取升级数据,并且将其安装到升级包存储区域中。相应地,当在升级包中打包有映射数据时,接收方设备可以以相同方式安装升级包。安装数据还包括升级包的历史数据。历史数据指示升级包和目标程序的版本。在本实施例中,在第一存储器250中可以存储6个升级包。当发生与特定升级包相关的合并失败时,接收方设备允许用户通过显示升级包列表来选择其他升级包。
在升级执行过程中,升级包被存储在于第一存储器250中准备的相应存储区域中。相应地,当下载了新升级包时,不擦除先前下载的升级包。相应地,当没有装载特定升级包时,接收方设备30允许用户通过显示升级包列表来选择用于程序升级的其他升级包。甚至在未装载所有升级包的最坏情况下,也可以装载程序的第一版本。
图23是示出根据本发明一示范性实施例的程序升级方法的流程图。相关于图1所示的程序升级系统的升级包处理器10和接收方设备30的操作来描述该程序升级方法的步骤。
参照图23,在步骤S411,升级包处理器10接收程序的第一和第二版本。当通过比较旧版本(即第一版本)和新版本(即第二版本)而引入程序的新版本时,产生升级包。升级包包括升级数据和安装数据。第一版本可以是原始版本或被编程为与升级包合并的参考版本。升级包是用于将在接收方设备中安装的程序的第一版本升级到第二版本的信息包。接收方设备可以存储至少一个升级包。
在步骤S413,如果接收到程序的第一和第二版本,则升级包处理器10分析在第一和第二版本之间的差别,并在步骤S415,根据分析结果产生升级包。升级包可以包括升级数据和包括用于组合升级数据和第一版本的信息的安装数据。安装数据包括提供第二版本的历史的历史数据和提供用于映射程序的第一和第二版本的块的信息的映射数据。安装数据中不是必须要包括映射数据。在这种情况下,接收方设备可以在程序升级过程中产生映射数据。为帮助程序升级过程而提供安装数据。如果成功地产生了升级包,则升级包处理器10将该升级包发送到升级包服务器20。当接收到升级包之后,升级包服务器20将升级通知消息发送到接收方设备30。如果接收到升级通知消息,则接收方设备30响应于用户命令而开始下载该升级包。可以根据由接收方设备30支持的通信标准来确定下载过程。所述通信标准包括CDMA、UMTS、GSM、WiBro、Wi-Fi、WiMAX、Bluetooth、UWB、Zigbee和USB。
在步骤S451,如果启动了升级包下载,则接收方设备30接收升级包,并将下载的升级包存储到第一存储器250中,第一存储器250被提供有:第一存储区域310,用于存储程序的第一版本;第二存储区域320,用于存储升级包。第二存储区域320可以以用于存储相应升级包的多个存储区域的形式来构造。在本实施例中,第二存储区域320具有6个存储区域。每个存储区域可以分开存储历史数据、映射数据和升级数据。
当在下载的升级包的安装数据中不包含映射数据时,接收方设备30的安装器230参照升级包和程序的第一版本来产生映射数据。在将升级包存储到第一存储器250中之后,在步骤S455,接收方设备30响应于用户命令或重引导而通过合并升级包和第一版本来将程序升级到第二版本,并且然后将程序的第二版本装载到第二存储器260上。相应地,后面在程序的第二版本的控制下运行接收方设备30。第二存储器260可以是诸如易失性存储器的工作存储器。以这种方式,在系统初始化过程中,接收方设备30通过合并在第一存储器250中存储的第一版本和最近下载的升级包来产生程序的第二版本,并装载所述第二版本到第二存储器260上,以用于控制接收方设备30的操作。当相对于特定升级包的程序升级失败,则接收方设备30可以自动尝试利用在第一存储器250中存储的其他升级包来升级程序。而且,接收方设备30允许用户通过提供升级包列表来选择升级包以便利用所选择的升级包来升级第一版本。
下面更详细地描述升级包产生过程。
图24到26是示出根据本发明一示范性实施例的程序升级方法的升级包产生过程的流程图。
参照图24,在步骤S501,升级包处理器10装载程序的第一和第二版本到存储器中,并且在步骤S503,彼此比较两个版本以确定在两个版本之间的差别。在确定了第一和第二版本之间的差别之后,升级包处理器10产生比较分析数据。接着,升级包处理器10根据比较分析来在步骤S505产生升级数据并且在步骤S507产生安装数据。可以利用包产生器130和安装数据产生器180来实现升级包处理器10。在这种情况下,可以以并行处理来产生升级数据和安装数据。还可以将包产生器130实现为串行产生升级数据和安装数据。在这种情况下,可以在产生安装数据之前或之后产生升级数据。
安装数据提供了以指示历史数据和映射数据的形式的用于合并升级包和程序的第一版本的信息。历史数据包含关于程序的第一和第二版本的版本以及版本的尺寸的信息。映射数据提供用于映射程序的第一和第二版本的块的信息。可以在升级包处理器10上或接收方设备30上产生映射数据。相应地,在升级包中不是必须打包有映射数据。
图25是示出图24的步骤S507的安装数据产生过程的流程图。而26是示出图24的步骤S509的升级包产生过程的流程图。
相应地,在图25的安装数据产生过程中,可能产生映射数据或可能不产生映射数据。而且,在图26的升级包产生过程中,可能合并映射数据或可能不合并映射数据。
参照图25,在步骤S521,升级包处理器10产生历史数据,并且在步骤S523确定升级包是否需要映射数据。如果需要映射数据,则在步骤S525,升级包处理器10参照比较结果来产生映射数据。
参照图26,在步骤S531,升级包处理器10确定是否将映射数据打包到升级包中。如果确定将映射数据打包到升级包中,则在步骤S533,升级包处理器10来产生带有映射数据升级包。否则,在步骤S535,升级包处理器10产生不带有映射数据的升级包。可以如与图3到5关联的表1到4所示构造映射数据。
在图24的步骤S501中,可以输入原始数据或压缩数据状态的程序的第一和第二版本(例如,可以由第一压缩器160压缩第一和第二版本)。而且,在步骤S509产生的升级包在发送到升级包服务器之前可以被压缩(例如,可以通过升级包处理器10的第二压缩器140来压缩升级包)。通过压缩第一和第二版本,可以减少比较第一和第二版本所需的数据处理。升级包的压缩可以减少传输数据量。当应用了数据压缩时,对压缩的数据进行解压缩以便执行可靠性测试。仅当压缩的数据通过了测试时,才可以执行下一过程。
图27是示出根据本发明一示范性实施例的程序升级方法的升级包产生过程的流程图。图28是示出图17所示的压缩可靠性测试过程的流程图。图29是示出图27所示的安装数据产生过程的流程图。图30是示出图27所示的升级包产生过程的流程图。
参照图17到20,在步骤S551,配置文件被输入到升级包处理器10中。该配置文件包括用于定义升级包处理器10的操作的标志。在这些标志当中,C_FLAG是用于配置是否采用数据压缩的压缩标志,M_FLAG是用于配置是否产生映射数据的映射产生标志,而V_FLAG是用于确认是否通过对压缩信息进行解压缩来正常执行压缩的验证标志。接着,在步骤S553,升级包处理器10装载程序的第一和第二版本两者。第一版本可以是初始版本或用于升级程序的参考版本,第二版本是程序的最后版本。
在装载两个版本之后,在步骤S555,升级包处理器10通过参照C_FLAG确定是否压缩两个版本。如果不需要压缩,则在步骤S561,升级包处理器10配置两个版本以便产生映射。如果C_FLAG被设置为1(C_FLAG=1),即需要数据压缩,则升级包处理器10在步骤S557运行压缩器(compressor_1)并且在步骤S559控制该压缩器以压缩程序的第一和第二版本。接着,在步骤S563,升级包处理器10运行压缩器以比较压缩的两个版本。
如图28所示执行在步骤S559的压缩过程。当压缩标志被设置时,通常验证标志也被设置。如果验证标志(V_FLAG)被设置,则升级包处理器10对压缩的数据进行解压缩并且比较经解压缩的数据和压缩前的原始数据。
参照图28,在压缩程序的第一和第二版本之后,在步骤S601,升级包处理器10确定验证标志是否被设置为1(V_FLAG=1)。如果验证标志被设置为1,则升级包处理器10在步骤S603运行解压缩器(Decompressor_1)以对压缩的第一版本和第二版本进行解压缩,并且在步骤比较压S605缩前后的数据。接着,在步骤S607,升级包处理器10通过确定在压缩前后的数据是否彼此相同来验证是否是成功的压缩。如果压缩被验证通过,则升级包处理器10在步骤S609将验证结果发送给比较器110,否则,升级包处理器10在步骤S611执行出错处理过程。在这种情况下,升级包处理器10可以再次对第一和第二版本执行压缩。
返回图27,在步骤S563比较第一和第二版本之后,升级包处理器10在步骤S565运行安装数据产生器180以产生安装数据。安装数据产生器180根据M_FLAG的值可能产生映射或可能不产生映射。相应地,升级包处理器10在步骤S567确定映射标志是否被设置为1(M_FLAG=1)。如果映射标志被设置为1,则在步骤S569,升级包处理器控制比较器110比较第一和第二版本。以预定数据尺寸的块为单位执行数据比较。如果在比较过程中找到具有不同数据的块,则在第一版本的搜索范围中执行相同块搜索,如图3到5中所示。
以原始数据状态或压缩数据状态来比较第一和第二版本。在完成比较之后,升级包处理器10在步骤S571控制比较器110发送比较结果给安装数据产生器180并且在步骤S577将比较结果存储在存储区域中。当映射标志被设置为0(M_FLAG=0)时,升级包处理器10在步骤S575控制比较器比较第一和第二版本,并且在步骤S577将在产生安装数据中使用的比较结果存储到存储区域中。以原始数据状态或压缩数据状态比较第一和第二版本。当需要映射数据时,升级包处理器10控制将比较结果发送到安装数据产生器180并且将比较结果存储在存储区域中以用于产生映射数据和升级数据。当不需要映射数据时,升级包处理器10控制将比较结果存储到存储区域中以用于产生升级数据。
接着,在步骤S579升级包处理器10控制安装数据产生器180产生安装数据。如图29所示执行安装数据产生过程。
参照图29,升级包处理器10控制安装数据产生器180在步骤S651开始产生安装数据,并且在步骤S653检查第一和第二版本的历史信息。接着,升级包处理器10在步骤S655运行历史数据产生器120,以便历史数据产生器在步骤S657产生历史数据。历史数据具有包括首标、第一输入版本信息、第二输入版本信息和存储器信息的格式。第一和第二输入版本信息的每一个包括版本标识符(SW VER)、时间戳(SW时间戳)和校验和(SW校验和)。也就是说,历史数据提供关于第一和第二版本的版本号的信息。
在产生历史数据之后,升级包处理器10在步骤S659确定映射标志是否被设置为1(M_FLAG=1)。如果映射标志被设置为1,则升级包处理器10在步骤S603运行映射数据产生器150,并且映射数据产生器150产生映射数据(S665)。映射数据包括诸如拷贝(C)、修改(M)、和移动(S)的命令。基于每个块设置映射数据。根据第一和第二版本的比较结果来产生映射数据以便其数据与先前版本的数据相同的块被利用C来设置,附加地插入到先前版本的块或从先前版本的块修改的块被设置为M,而位于要被插入或修改块占据的位置上的块被利用S来设置。也就是说,映射数据包括块索引和指示第一和第二块之间的差别的数据。如上所述,以格式[Cmd][start block No,numberof block][flag][distance][difference]产生映射数据。当如图3到5给出第一和第二版本时,如表1到3所示构造映射数据。在这种情况下,升级数据变成与命令M关联的块,即被修改数据。在产生映射数据之后,在步骤S667,升级包处理器10合并历史数据和映射数据。相应地,在步骤S661,利用或不利用映射数据来产生安装数据。
返回图27,在产生安装数据之后,升级包处理器10在步骤S581运行包产生器130并且包产生器130在步骤S583产生升级包。
图30是示出根据本发明另一示范性实施例的程序升级方法的升级包产生过程的流程图。
参照图30,升级包处理器10控制包产生器130根据比较结果产生升级数据。当在第一版本中没有找到与第二版本的被修改块相同的块时,包产生器130将该被修改块设置为升级数据。根据映射数据来确定升级数据的位置。虽然在本实施例中假定升级包包括历史数据、映射数据和安装数据,但是可以在没有映射数据的情况下组成升级包。当升级包仅包括安装数据时,升级包处理器10产生具有关于与第一版本不同的第二版本的块以及它们自己的不同块的映射信息的映射数据。
当安装数据不包括映射数据时,升级包产生器130可以产生具有要与第一版本组合的第二版本的块的索引的升级数据。在这种情况下,可以以如图8所示的具有命令C、M和S的格式来构造升级数据。也就是说,用于从第一版本拷贝块的升级数据包括开始块索引和要拷贝的块的数目,用于添加或修改第一版本的块的升级数据包括开始块索引、要插入或修改的块的数目、以及要插入或修改的块的连接块的数据,而用于移动第一版本的块的升级数据包括要移动的块的数目和要移动的第一个块的索引。以这种方式,升级数据包括映射信息。
优选地,以压缩状态发送升级数据。相应地,升级包处理器10在步骤S623运行压缩器(Comressor_2),并且在步骤S625控制压缩器压缩升级数据。接着,升级包处理器10在步骤S627运行解压缩器(Decompressor_2)以验证压缩,并且在步骤S629控制比较器比较压缩前后的数据。如果在步骤S631,压缩被验证通过,则升级包处理器10在步骤S633通过合并升级数据和安装数据来产生升级包,并且在步骤S635将该升级包发送到升级包服务器20。如果在步骤S631检测到压缩失败,则升级包处理器10在步骤S637执行出错处理过程。
根据下载过程,升级包被分发到接收方设备30。升级包包括根据第一和第二版本之间的差别产生的升级数据和用于安装升级数据的安装数据。
图31是示出根据本发明一示范性实施例的程序升级方法的程序下载过程的消息流图。
参照图31,在步骤S711,如果从升级包处理器10接收到升级包,则升级包服务器20向接收方设备30发送通知消息。升级包服务器20和接收方设备30通过基于诸如CDMA、UMTS、GSM、WiBro、Wi-Fi、WiMAX、Bluetooth、UWB、Zigbee和USB的通信标准建立的通信信道来连接。
在步骤S713,响应于该通知消息,接收方设备30向升级包服务器20发送应答消息(ACK)。当接收到ACK之后,在步骤S715,升级包服务器20向接收方设备30发送下载允许消息。如果从接收方设备30接收到响应于下载允许消息的ACK,则在步骤S719,升级包服务器20向接收方设备30发送管理信息消息。通过向升级包服务器20发送响应于管理信息消息的ACK,接收方设备30在步骤S723开始从升级包服务器20下载升级包。如果成功地下载了升级包,则接收方设备30在步骤S725向升级包服务器20发送下载完成消息,并且升级包服务器20在步骤S727向接收方设备30发送传输结束信息消息(send end_info)。在升级包服务器20上,在步骤S729,通过从接收方设备30接收到响应于传输结束信息消息的ACK,升级包下载过程结束。
如上所述,升级包服务器20通知接收方设备30升级包的发布以便接收方设备30下载该升级包。接收方设备30将从升级包服务器20下载的升级包存储到第一存储器250中,并且响应于用户命令而开始升级目标程序,以便将程序的被升级版本装载到第二存储器260上。
图32是示出根据本发明一示范性实施例的程序升级方法的所下载升级包的处理过程的流程图。
参照图32,在步骤S801,接收方设备30将程序的第一版本存储在第一存储器250中。第一版本可以是在接收方设备30的制造阶段安装在第一存储器250中的版本、或以后安装的参考版本。如果接收到升级包通知消息,接收方设备30通过在图31中描述的过程来下载升级包。接收方设备30通过步骤S803到S807从升级包服务器20下载升级包并且临时存储所下载的升级包。该升级包可被立即安装到第一存储器250中,或者在接收方设备30的正常操作结束之后被安装。在下载升级包之后,接收方设备30在步骤S809确定是否输入了安装命令。如果没有输入安装命令,则在步骤S811,接收方设备30返回正常操作模式。
如果输入了安装命令,则接收方设备30在步骤S813将升级包安装到第一存储器250中。第一存储器250是非易失性存储器并且包括用于存储第一版本和多个升级包的分开的区域。也就是说,第一存储器250包括如图9、16和17所示的第一和第二存储区域。以发布时间的顺序存储升级包,从而确保升级历史。
在安装升级包之后,接收方设备30在步骤S815中确定是否输入了系统重引导命令。在步骤S817,如果没有输入系统重引导命令,则接收方设备30返回正常操作模式。在这种情况中,由于仍没有对程序升级,所以接收方设备30利用先前版本运行。如果在步骤S813检测到重引导命令,则在步骤S821,接收方设备30重引导以被初始化,并且在步骤S823,运行译码器240,以从下载的升级包中激活第二版本。
译码器240合并在第一存储器250中安装的升级包和程序的第一版本以便产生和装载第二版本到第二存储器260中。相应地,接收方设备30随后在程序的第二版本的管理下运行。
接着,在步骤S825,接收方设备30检查升级包的状态以确定是成功地执行了升级还是升级失败。如果升级失败,则在步骤S833接收方设备30装载程序的第一版本。如果成功地执行了升级,则接收方设备30在步骤S827装载升级包并且在步骤S829在第二存储器260中组装升级包和第一版本,并且然后在步骤S831,在第二存储器上的第二版本的管理下运行。
图33是示出根据本发明一示范性实施例的程序升级方法的升级包安装过程的流程图。
参照图33,在输入升级包下载命令的过程中,接收方设备30在步骤S841运行下载器,并且在步骤S843控制下载器从升级包服务器20下载升级包。根据接收方设备30采用的通信标准,可以以不同方式来执行升级包下载。也就是说,接收方设备30可以是利用CDMA、UMTS、GSM、WiBro、Wi-Fi、WiMAX、Bluetooth、UWB、和Zigbee的终端之一,或可以通过USB连接到升级包服务器20。
在下载会话期间,接收方设备30在步骤S845检测是否成功地下载了升级包。如果检测到出错,则接收方设备30在步骤S849执行出错处理过程,并且然后在步骤S849重试升级包的下载。
如果成功地下载了升级包,则接收方设备30在步骤S851运行安装器。接着,在步骤S853,接收方设备30控制安装器从升级包提取历史数据,在步骤S855从历史数据收集历史信息,并且在步骤S857在第一存储器中构建历史表格。接着,在步骤S859,接收方设备30检测在升级包中是否打包有映射数据。如果在升级包中打包有映射数据,则在步骤S875,接收方设备30从升级包提取映射数据,并且在步骤S877和S879,在第一存储器250的相应存储区域中存储映射数据和升级数据。结果,在步骤S881,被打包在升级包中的历史数据、映射数据和升级数据被安装在第一存储器250中。
如果在升级包中没有打包映射数据,则接收方设备30在步骤S861运行解压缩器(decompressor_2)。接着,在步骤S863,接收方设备30控制该解压缩器对打包在升级包中的升级数据进行解压缩,并且在步骤S865中对该升级数据进行解析。接着,接收方设备30在步骤S867比较升级数据和第一存储器250中的第一版本,并且在步骤S869参照比较结果产生映射数据。接着,在步骤S871和S873,接收方设备30将在接收方设备中产生的映射数据和打包在升级包中的升级数据存储到第一存储器的升级包存储区域中。结果,在步骤S881打包在升级包中的历史数据、映射数据和升级数据被安装到第一存储器250中。当升级数据包括关于映射数据的信息时,可以跳过映射数据产生过程。也就是说,可以利用如图8所示的关于映射数据的信息来构造升级数据。在图8的情况下,升级数据被提供有用于处理各个块的命令和相应块索引,以便接收方设备30可以独立地从升级数据产生映射数据。而且,由于不需要映射数据产生过程,所以可以跳过步骤S861到S873。在这种情况下,译码器参照并入到升级数据中的关于映射数据的信息来组合升级数据和第一版本。在本实施例中,当升级数据包括关于映射的信息时,安装器从升级数据产生映射数据以便以相同的数据格式将升级数据和安装数据安装在升级包区域中,并且译码器以相同格式处理所述升级数据和安装数据。
如图33中所述,接收方设备30下载升级包,并且将打包在升级包中的历史数据、映射数据和升级数据安装在第一存储器250的相应存储区域中。此时,在升级包中可能打包有映射数据或者可能没有打包映射数据。当在升级包中没有打包映射数据时,接收方设备30将升级包存储到第一存储器250中,并且比较升级包和第一版本以便根据比较分析来产生映射数据,并且将映射数据存储到升级包存储区域中。
图34是示出根据本发明一示范性实施例的程序升级方法的升级程序运行过程的流程图。
参照图34,当接收方设备30被开启时,或响应于用户命令,激活经升级的程序。在初始化接收方设备30之后,通过组合第一版本和最后下载的升级包升级的程序的第二版本被装载到第二存储器260中,用于运行接收方设备30。通过可以在易失性存储器中运行的程序来表示存储在第二存储器260中的信息。
如果在步骤S881,接收方设备30被开启,则接收方设备30在步骤S882开始引导系统和初始化代码,并且在步骤S883运行装载器。接着,在步骤S884,接收方设备30扫描第一存储器250的升级包存储区域并且检查升级包。如果不存在升级包,则接收方设备30在步骤S885运行译码器240,并且在步骤S886控制译码器执行安全检查和版本的有效性检查。接着,在步骤S887,接收方设备30确定存储在第一存储器250中的第一版本是否被压缩过。如果确定第一版本被压缩过,则接收方设备30在步骤S888运行解压缩器(decompressor_1)270以对第一版本解压缩,并且在步骤S889控制译码器在第二存储器260中对第一版本译码,以便程序的第一版本运行。如果在步骤S887确定没有压缩第一版本,则接收方设备30跳过步骤S888,并执行步骤S889和S890。
返回步骤S884,如果在第一存储器250中存在至少一个升级包,则接收方设备30在步骤S891运行译码器240,并且在步骤S892装载最近下载的升级包。升级包可以包括历史数据、映射数据和升级数据中的至少两种。
接着,在步骤S893,接收方设备30运行解压缩器(decompressor_2)270以对所装载的升级包(可能仅仅压缩了升级数据)进行解压缩,并且在步骤S894执行安全检查和版本的有效性检查。接着,在步骤S895,接收方设备30确定在第一存储器250中存储的第一版本是否被压缩过。如果确定第一版本被压缩过,则接收方设备30在步骤S896中运行解压缩器(decompressor_1)270以对第一版本解压缩,并且在步骤S897中,控制译码器在第二存储器260中译码和组合第一版本和升级包,以便在步骤S890中程序的被升级版本运行。如果在步骤S895确定第一版本没有被压缩过,则接收方设备30跳过步骤S896,并且执行步骤S897和S890。
图35到38是示出根据本发明另一示范性实施例的程序升级方法的升级程序运行过程的流程图。
参照图35到38,如果在步骤S901,接收方设备30被开启,则接收方设备在步骤S903开始引导系统和初始化代码,并且在步骤S905运行装载器。接着,接收方设备30在步骤S907参照升级包的历史来确定是否有任何升级包可用,并且在步骤S909检查升级包。如果不存在升级包,则接收方设备30在步骤S911运行译码器240,并且在步骤S921执行安全检查(见图36)。接着,接收方设备30在步骤S922确定第一版本是否被压缩过。如果确定第一版本被压缩过,则接收方设备30在步骤S923和S924运行(decompressor_1)270和译码器,并且在步骤S925控制解压缩器和译码器协同地对第一版本进行解压缩和译码。在对第一版本的数据进行解压缩和译码的同时,接收方设备30在步骤S927通过利用计数器(Count=EOD)监视所述处理以检测第一版本是否被完全译码。重复解压缩和译码处理直到计数器达到在第二存储器260中的数据结束值(EOD)(Count=EOD)为止。如果在步骤S922确定程序的第一版本没有被压缩过,则接收方设备30控制译码器在第二存储器260中对第一版本译码而不执行步骤S926中的解压缩,直到计数器达到数据结束值为止。如果计数器达到EOD,则接收方设备30在步骤S928验证被译码的程序的第一版本的全部数据,并且运行第一版本,以用于运行该系统。
返回图35,如果在步骤S909,在第一存储器250中存在至少一个升级包,则接收方设备在步骤S913检查所有升级包的历史信息,并且在步骤S915检查历史信息中的失败标志。该失败标志指示装载升级包是否失败。如果失败标志被设置成真(失败标志=真),则升级包失败。为此,在步骤S917,接收方设备30确定升级包的历史信息的失败标志是否被设置成“真”。如果失败标志没有被设置成“真”,接收方设备30执行图37的步骤S931到S946的程序升级过程。相反,如果失败标志被设置成“真”,则接收方设备30执行图38的步骤S951到S969的程序升级过程。
如图37中所示,如果失败标志没有被设置成“真”,则接收方设备30在步骤S921中检查最后的升级包的历史数据,并且在步骤S932检查历史数据的失败标志。如果失败标志没有被设置为“真”,则接收方设备30在步骤S933和S934装载升级包的映射数据和升级数据。接着,接收方设备30在步骤S935装载译码器,在步骤S936执行安全检查,并且在步骤S937装载解压缩器(Decompressor_1)。接着,接收方设备30在步骤S938确定程序的第一版本是否被压缩过。如果确定第一版本被压缩过,则接收方设备30在步骤S939、S940和S941运行解压缩器和译码器。接着接收方设备30在步骤S942控制第一和第二解压缩器以及译码器在第二存储器260中对第一版本和升级包进行解压缩和译码。在对第一版本和升级包的数据进行解压缩和译码的同时,接收方设备30在步骤S943参照计数器(Count=EOD)监视所述处理以检测是否完成处理。重复解压缩和译码处理直到计数器达到EOD为止。如果在步骤S938确定第一版本没有被压缩过,则接收方设备30在步骤S940运行译码器并且在步骤S944控制译码器在第二存储器中对第一版本和升级包的数据译码而不执行解压缩过程,直到计数器达到EOD为止。如果计数器达到EOD,则接收方设备30在步骤S945验证被译码的第一版本和升级包的全部数据,并且在步骤S946运行程序的升级版本以运行该系统。
包含在升级包中的映射数据可以如表1到4所示构造。在表1、2或4的情况下,接收方设备30的译码器240通过参照映射数据合并程序的第一版本和升级包来产生第二版本。
参照表1的映射数据:{C:0,15,F:0,null,null},{M:16,4F:1,(16-12),(17-13),(18-8),(19-9),0,0,0,0},{S:20,5F:0,(20-4),0},接收方设备30处理标记有命令C、M和S的块,并且根据该映射数据来升级第一版本。也就是说,接收方设备30拷贝第一版本的第0到15块并且通过相同块索引粘贴所拷贝的块到第二版本中,拷贝第一版本的第12、第13、第8和第9块并且对于第二版本的第16到19块粘贴所拷贝的块,以及拷贝第一版本的第16到第19块并且对于第二版本的第20到24块粘贴所拷贝的块。
参照表2的映射数据{C:0,15,F:0,null,null},{M:16,4F:1,(16-12),(17-13),(18-8),(19-9),0,code(B,K),code(E,C),0},{S:20,5F:0,(20-4),0},接收方设备30拷贝第一版本的块并且根据跟在命令C和S之后的索引映射针对第二版本放置所拷贝的块,并利用跟在命令M之后的块索引和熵编码数据来产生块数据。也就是说,接收方设备30拷贝第一版本的第0到第15块并将所拷贝的块通过相同块索引粘贴到第二版本中,针对第二版本的第16到第19块放置第一版本的第12块、code(B,K)、code(E,C)和第9块,以及对于第二版本的第20到第24块放置第一版本的第16到第20块。这里,code(B,K)表示通过对第一版本的第13块和第二版本的第17块之间的差进行熵编码得到的数据,而code(E,C)表示通过对第一版本的第8块和第二版本的第18块之间的差进行熵编码得到的数据。
参照表3的映射数据:{C:0,15,F:0,null,null}、{M:16,4F:2,null,null}、{S:20,5,F:0,(20-4),0},接收方设备30拷贝第一版本的块并且根据跟在命令C和S之后的索引映射针对第二版本放置所拷贝的块,并利用跟在命令M之后的块索引和更新数据来产生块数据。也就是说,接收方设备30拷贝第一版本的第0到第15块并将所拷贝的块通过相同块索引放置到第二版本中,针对第二版本的第16到第19块放置包含在升级数据中的块。相应地,第二版本的第16到第19块具有数据Z、W、P和X(见图5)。
当升级包包括历史数据和升级数据而没有映射数据时,接收方设备30可以通过比较程序的第一版本和升级数据以及分析比较结果来产生映射数据。可以跳过映射数据产生过程。在本实施例中,安装器利用并入到升级数据中的映射信息来产生映射数据。参照表4的映射数据:{C:0,6},{M:6,2,X,Y},{S:8,3,6},{S:11,2,13},{M:13,5,A,B,C,D,E},{S:18,7,15},接收方设备30的安装器230产生与命令C和S关联的映射数据。但是,与命令M关联,安装器230根据在升级包中表示的映射信息来产生映射数据和/或升级数据。映射数据和升级数据被分开存储在升级包区域中。
如图38所示,如果在图35的步骤S917失败标志被设置为“真”,则接收方设备30在步骤S951检查升级包的所有失败标志是否被设置为“真”。如果所有失败标志被设置为“真”,则接收方设备30在步骤S925中装载译码器并且执行步骤S921。也就是说,如果所有升级包具有错误,则接收方设备30装载程序的第一版本到第二存储器260中以便接收方设备30在第一版本的控制下运行。第一版本可以是在制造阶段安装的程序的原始版本。
如果不是所有的升级包的失败标志被设置为“真”,则接收方设备30在步骤S953中检查其失败标志未被设置为“真”的升级包,并且在步骤S954显示可用的升级包。如果在步骤S955输入选择命令以选择一个可用升级包,则接收方设备30在步骤S956和S957中装载与历史信息关联的所选择升级包的映射数据和升级数据。接着,接收方设备30在步骤S956中运行译码器并且在步骤S959中对所述数据执行安全检查。接着,如果升级数据被压缩过,则在步骤S960接收方设备30运行解压缩器(Decompressor_2)以用于解压缩升级数据。接着,在步骤S961,接收方设备30确定程序的第一版本是否被压缩过,如果第一版本被压缩过,则在步骤S962、S963和S964,接收方设备30运行第一解压缩器(Decompressor_1)和译码器。接着,在步骤S965,接收方设备30控制第一和第二解压缩器和译码器在第二存储器260中对第一版本和升级包进行解压缩和译码。在对第一版本的数据和升级数据解压缩和译码的同时,接收方设备30在步骤S966参照EOD(Count=EOD?)来监视这些处理以检测是否完成所述处理。重复解压缩和译码处理直到计数器达到EOD为止。
如上所述,在根据本发明实施例的程序升级方法中,升级包提供者根据目标程序的旧版本和新版本之间的差别来产生升级包,并且接收方设备进行下载并将旧版本升级到新版本以便非易失性存储器中的被升级的新版本装载到易失性存储器中,以运行接收方设备。
升级包产生机制具有下列特征。
如果输入程序的两个版本,则升级包处理器比较两个版本并利用两个版本的差别来产生比较结果数据。这里,第一版本是下述参考版本:其可以是在制造阶段安装的程序或后来确定的程序。第二版本是接收方设备要下载以用于升级程序的第一版本的程序的升级版本。可以发布多个升级版本,因此,第二版本可以是多个升级版本之一,尤其是最后一个版本。
可以在压缩之前或之后比较两个版本。在压缩后比较的情况下,通过对每个压缩的版本进行解压缩并比较在压缩前后的数据来执行压缩验证过程。
根据比较结果数据来产生安装数据。安装数据是提供关于如何将更新数据安装到第一版本中的信息的数据。安装数据必须包括历史数据。安装数据还包括第一和第二版本的版本标识符和指示装载失败历史的标志。除了历史数据之外,安装数据还可以包括映射数据。映射数据是提供关于如何将更新数据映射到第一版本的信息的数据。映射数据被提供有诸如“拷贝”、“修改”和“移动”之类的命令、以及用于映射第一版本中的块的块索引。如果需要通过将一些块插入到第一版本中来产生第二版本以及要插入的块是相同的或者至少相似,则通过映射数据而不是通过对块本身打包来告知所述块。
安装数据可以被集成到升级数据中。在这种情况下,升级包处理器以块为单位比较程序的第一和第二版本。当改变了块的数目(即除去或添加了一些块)或修改了每个块的数据时,这样的信息被并入到升级数据中作为安装数据。在这种情况下,升级数据包括映射数据的修改命令M。安装数据还可以不包括映射数据。在这种情况下,在接收方设备上产生映射数据。当升级数据包括映射数据时,不需要映射数据产生过程。
可以以压缩形式提供升级数据或升级包。在这种情况下,升级包处理器对压缩的升级数据或包进行解压缩,并比较压缩前后的数据以验证压缩成功与否。
通过升级包处理器10产生的升级包发送到升级包服务器20,而升级包服务器20向接收方设备30通知升级包的发布以便接收方设备下载该升级包。
接收方设备30将升级包安装到诸如非易失性存储器之类的第一存储器中,并且将利用升级包来从第一版本升级的第二版本装载到诸如易失性存储器之类的第二存储器中,以便接收方设备在程序的第二版本的控制下运行。
工业应用性
如上所述,在本发明的程序升级系统和方法中,根据程序的参考版本和新版本之间的差别产生升级包,导致了快速的升级包产生。由于第一版本和从网络下载的升级包被分开存储在非易失性存储区域中并且被作为升级版本装载到易失性存储区域上,所以可以确保程序的可操作性,甚至在升级失败状态中也是如此。而且,由于本发明的程序升级系统和方法使得能够将多个升级包分开安装在非易失性存储区域中,所以可以利用用户偏好的程序版本来运行接收方设备。而且,程序升级系统和方法的优点在于用户可以选择程序版本。
而且,由于不在第一存储器上执行V1本身的升级,所以无疑可以期望容错控制效果。这是因为甚至在程序升级失败时利用在第一存储器中存储的第一版本的V1的升级包来确保操作稳定性。
虽然前面详细描述了本发明的示范性实施例,但是应当理解:对于本领域技术人员来说,很明显,对在此示教的基本发明构思的许多变化和修改仍然落在所附权利要求限定的本发明的精神和范围之内。
Claims (46)
1. 一种网络中的程序升级方法,包括:
根据程序的第一版本和第二版本之间的差别来产生升级包;
在升级包服务器上向至少一个接收方设备通知升级包的发布;以及
响应于升级命令,从所述升级包服务器下载所述升级包到所述接收方设备,安装所述升级包到第一存储器中,并且合并所述升级包和程序的第一版本以作为程序的第二版本装载到第二存储器中。
2. 如权利要求1所述的程序升级方法,其中,所述升级包包括用于合并所述升级包和所述程序的第一版本的安装数据以及要与所述程序的第一版本组合的升级数据。
3. 如权利要求2所述的程序升级方法,其中,所述安装数据包括用于合并所述程序的第一版本和所述升级包的历史数据、以及用于将所述升级数据映射到所述程序的第一版本的映射数据。
4. 如权利要求1所述的程序升级方法,其中,产生升级包包括:
以块为单位比较所述程序的第一和第二版本;
根据比较结果,产生包括用于将所述程序的第二版本的块映射到所述程序的第一版本的映射数据的安装数据;并且
通过对所述安装数据和所述升级数据打包来产生所述升级包。
5. 如权利要求4所述的程序升级方法,其中,所述程序的第一版本和至少一个升级包被分开存储在所述第一存储器中。
6. 如权利要求5所述的程序升级方法,其中,当所述接收方设备被初始化时或通过键输入而利用对版本的选择来产生升级命令。
7. 如权利要求4所述的程序升级方法,其中,所述映射数据包括与程序升级相关的程序的第二版本的块的索引、以及用于将所述块应用到所述程序的第一版本中的升级命令。
8. 如权利要求7所述的程序升级方法,其中,所述映射数据包括命令字符串,所述字符串的每一个以[Cmd][start block No][number ofblocks][flag][distance]的形式来构造,其中[Cmd]字段具有指示命令“拷贝”、“修改”和“移动”中的至少一个的值,[start block No]字段具有开始块的块索引,[number of blocks]字段具有指示从开始块开始的块的数目的值,[flag]字段具有指示块的来源的值,[distance]字段具有指示相互映射的所述程序的第一版本的块到所述程序的第二版本的块的距离的值。
9. 如权利要求8所述的程序升级方法,其中,所述命令“修改”表示插入新块或修改所述程序的第一版本的块。
10. 如权利要求7所述的程序升级方法,其中,所述映射数据包括命令字符串,所述字符串的每一个以[Cmd][start block No,number ofblocks][flag][distance][difference]的形式来构造,其中[Cmd]字段具有指示命令“拷贝”、“修改”和“移动”之一的值,[start block No,number of blocks]字段具有开始块的块索引、以及指示从开始块开始的块的数目的值,[flag]字段具有指示块的来源的值,[distance]字段具有指示相互映射的所述程序的第一版本的块到所述程序的第二版本的块的距离的值,而[difference]字段具有指示在所述程序的所述第一版本和所述第二版本的块之间的差别的值。
11. 如权利要求10所述的程序升级方法,其中,所述[difference]字段被设置,用于取消产生相应块的升级数据。
12. 如权利要求11所述的程序升级方法,其中,所述程序的第一版本是在所述接收方设备的制造阶段安装的程序的原始版本,而所述程序的第二版本是从所述程序的第一版本升级而来的程序,所述程序的第二版本代表在所述程序的第一版本之后发布的所述程序的多个版本。
13. 一种程序升级包产生方法,包括步骤:
以块为单位比较程序的第一版本和第二版本;
根据比较结果,产生包括用于将所述程序的第二版本的块映射到第一版本的块的映射数据的升级数据;
通过将用于指示所述升级包和所述程序的第一版本的关系的历史数据和所述升级数据打包来产生所述升级包;
通知所述升级包的发布;以及
响应于升级请求信号,将所述升级包下载到至少一个接收方设备中,将所下载的升级包安装到非易失性存储器中,通过合并升级包和所述第一版本来产生所述程序的第二版本,以及利用所述程序的第二版本来运行所述接收方设备。
14. 如权利要求13所述的程序升级方法,其中,所述程序的第一版本和至少一个升级包被分开存储在所述非易失性存储器中。
15. 如权利要求14所述的程序升级方法,其中,当所述接收方设备被初始化时或通过键输入来产生升级命令,并且可以从多个升级包当中选择所述升级包。
16. 如权利要求15所述的程序升级方法,其中,所述升级包包括安装数据,所述安装数据包括用于指示所述升级包和所述程序的第一版本的关系以支持对所述升级包和所述第一版本的合并的历史数据。
17. 如权利要求16所述的程序升级方法,其中,所述升级数据包括下述数据中的至少一种:以字符串[start block No][number of blocks]构造的拷贝块数据、以字符串[start block No][number of blocks][data]构造的修改块数据、和以字符串[start block No][number of blocks][previous version position]构造的移动块数据,其中,[start block No]字段具有开始块的块索引,[number of blocks]字段具有指示从开始块开始的块的数目的值,[data]字段包含相应块的数据,而[previous version position]字段具有要移动的块的开始块的索引。
18. 如权利要求17所述的程序升级方法,其中,所述[previous versionposition]字段指示程序的第二版本的块号±块数目或者所述程序的第二版本的块号-所述程序的第一版本的块数目中的一个。
19. 一种网络中的程序升级方法,所述网络包括:升级包处理器,其产生程序的升级包;和升级包服务器,其允许接收方设备下载所述升级包,所述方法包括步骤:
在所述升级包处理器上,根据所述程序的第一版本和第二版本之间的差别来产生所述升级包;
在所述升级包服务器上,向所述接收方设备通知所述升级包的发布;
将所述升级包从所述升级包服务器下载到所述接收方设备中;
将所述升级包安装到其中安装有所述程序的第一版本的第一存储器的升级包区域中;
响应于升级命令,通过合并所述升级包和所述程序的第一版本来将所述程序的第一版本升级到所述第二版本;以及
将所述程序的第二版本装载到第二存储器中。
20. 如权利要求19所述的程序升级方法,其中产生升级包包括:
以块为单位比较所述程序的第一版本和第二版本;
根据比较结果,产生包括用于将所述程序的所述第二版本的块映射到所述第一版本的块的映射数据的安装数据;以及
通过对所述安装数据和升级数据打包来产生所述升级包。
21. 如权利要求20所述的程序升级方法,其中,所述第一存储器包括:
第一版本存储区域,用于存储所述程序的第一版本;和
升级包存储区域,其具有至少两个区域,用于存储不同的升级包,打包在所述升级包中的安装数据和升级数据被分开存储。
22. 如权利要求21所述的程序升级方法,其中,所述安装数据包括用于指示升级包和所述程序的第一版本的关系以支持对所述升级包和所述程序的第一版本的合并的历史数据,并且安装所述升级包包括:
从所述升级包提取历史数据、映射数据和升级数据;
将所述历史数据存储到相应升级包区域的历史数据区域中;
将所述映射数据存储到相应升级包区域的映射数据区域中;以及
将所述升级数据存储到相应升级包区域的升级数据区域中。
23. 如权利要求22所述的程序升级方法,其中,将所述程序的第一版本升级到第二版本包括:
从所述第一存储器装载所述程序的最后版本的升级包;以及
参照所述升级包的映射数据,将所装载的升级包的升级数据应用于所述程序的第一版本。
24. 如权利要求23所述的程序升级方法,其中,所述第一存储器是非易失性存储器,而所述第二存储器是易失性存储器。
25. 如权利要求24所述的程序升级方法,其中,当所述接收方设备被初始化时或通过键输入来产生升级命令,并且从多个升级包当中选择最后发布的升级包,以用于升级所述程序。
26. 一种网络中的程序升级方法,所述网络包括:升级包处理器,其产生程序的升级包;和升级包服务器,其允许接收方设备下载所述升级包,所述方法包括步骤:
在所述升级包处理器上,以块为单位比较所述程序的第一版本和第二版本;
根据比较结果,产生包括用于将所述程序的所述第二版本的块映射到所述第一版本的映射数据的安装数据;以及
通过合并所述安装数据和升级数据来产生所述升级包;
在所述接收方设备上下载所述升级包;和
通过将所述升级包应用于所述第一版本,将在接收方设备上安装的所述程序的第一版本升级到所述程序的第二版本。
27. 如权利要求26所述的程序升级方法,其中,所述映射数据被构造成字符串[Cmd][start block No][number of blocks][flag][distance],其中[Cmd]字段具有指示命令“拷贝”、“修改”和“移动”之一的值,[start block No]字段具有开始块的块索引,[number of blocks]字段具有指示从开始块开始的块的数目的值,[flag]字段具有指示块的来源的值,[distance]字段具有指示相互映射的所述程序的第一版本的块到第二版本的块的距离的值。
28. 如权利要求27所述的程序升级方法,其中,所述命令“修改”表示插入新块或修改所述第一版本的块。
29. 如权利要求26所述的程序升级方法,其中,所述映射数据包括命令字符串,所述命令字符串的每一个以[Cmd][start block No,number ofblocks][flag][distance][difference]的形式来构造,其中[Cmd]字段具有指示命令“拷贝”、“修改”和“移动”之一的值,[start block No,number of blocks]字段具有开始块的块索引、以及指示从开始块开始的块的数目的值,[flag]字段具有指示块的来源的值,[distance]字段具有指示相互映射的所述程序的第二版本的块到第一版本的块的距离的值,而[difference]字段具有指示在所述程序的所述第一版本和所述第二版本的块之间的差别的值。
30. 如权利要求29所述的程序升级方法,其中,所述[difference]字段被设置,用于取消产生相应块的升级数据。
31. 一种程序升级系统,包括:
升级包处理器,用于利用程序的第一版本和第二版本来产生升级包;
升级包服务器,用于存储所述升级包,并且通知所述升级包的发布;和
至少一个接收方设备,用于下载所述升级包,并且利用所下载的包来升级所述程序,所述接收方设备包括:第一存储器,用于分开安装所述程序的第一版本和所述升级包;和第二存储器,用于装载通过合并所述程序的第一版本和所述升级包而升级的所述程序的第二版本。
32. 如权利要求31所述的程序升级系统,其中,所述升级包处理器包括:
比较器,用于以块为单位比较所述程序的第一和第二版本;
安装数据产生器,用于产生包括用于将所述程序的第二版本的块映射到第一版本的块的映射数据的安装数据;和
包产生器,用于通过合并所述安装数据和升级数据来创建所述升级包。
33. 如权利要求32所述的程序升级系统,其中,所述接收方设备包括:
安装器,用于将所述升级包安装到所述第一存储器的升级包区域中;和
译码器,用于响应于升级命令而将所述程序的第一版本和升级包装载到所述第一存储器中,通过将升级包应用到程序的第一版本中来产生程序的第二版本,并且装载所述程序的第二版本到所述第二存储器中。
34. 如权利要求33所述的程序升级系统,其中,当所述接收方设备被初始化时或通过键输入来产生升级命令,并且在多个升级包当中选择最后发布的升级包,以用于升级所述程序。
35. 如权利要求34所述的程序升级系统,其中,所述安装数据包括用于指示所述升级包和所述程序的第一版本之间的关系的历史数据。
36. 如权利要求35所述的程序升级系统,其中,所述映射数据包括与程序升级相关的所述程序的第二版本的块的索引、以及用于将所述块应用到所述程序的第一版本中的命令。
37. 如权利要求35所述的程序升级系统,其中,所述映射数据包括命令字符串,所述命令字符串的每一个以[Cmd][start block No][number ofblocks][flag][distance]的形式来构造,其中[Cmd]字段具有指示命令“拷贝”、
“修改”和“移动”中的一个的值,[start block No]字段具有开始块的块索引,[number of blocks]字段具有指示从开始块开始的块的数目的值,[flag]字段具有指示块的来源的值,[distance]字段具有指示相互映射的所述程序的第一版本的块到所述程序的第二版本的块的距离的值。
38. 如权利要求36所述的程序升级系统,其中,所述命令“修改”表示插入新块或修改所述第一版本的块。
39. 如权利要求35所述的程序升级系统,其中,所述映射数据包括命令字符串,所述字符串的每一个以[Cmd][start block No,number ofblocks][flag][distance][difference]的形式来构造,其中[Cmd]字段具有指示命令“拷贝”、“修改”和“移动”之一的值,[start block No,number of blocks]字段具有开始块的块索引、以及指示从开始块开始的块的数目的值,[flag]字段具有指示块的来源的值,[distance]字段具有指示相互映射的所述程序的第一版本的块到所述程序的第二版本的块的距离的值,而[difference]字段具有指示在所述程序的所述第一版本和所述第二版本的块之间的差别的值。
40. 如权利要求39所述的程序升级系统,其中,所述[difference]字段被设置,用于取消产生相应块的升级数据。
41. 如权利要求40所述的程序升级系统,其中,所述程序的第一版本是在所述接收方设备的制造阶段安装的程序的原始版本,而所述程序的第二版本是从所述程序的第一版本升级而来的程序,所述程序的第二版本代表在所述程序的第一版本之后发布的所述程序的多个版本的任意一个。
42. 如权利要求31所述的程序升级系统,其中,所述升级包处理器包括:
比较器,用于以块为单位比较所述程序的第一和第二版本;
安装数据产生器,用于产生安装数据,所述安装数据包括用于将所述程序的第二版本的块与第一版本的块合并的升级数据;和
包产生器,用于通过合并所述升级数据来创建所述升级包,其中所述升级数据包括用于将所述程序的第二版本的块映射到所述程序的第一版本的块的映射数据和用于指示所述升级数据和所述程序的第一版本之间的关系的历史数据。
43. 如权利要求42的程序升级系统,其中,所述接收方设备包括:
安装器,用于从所述升级包提取映射数据,并且根据所述映射数据将包含历史数据、映射数据和升级数据的升级包安装到所述第一存储器的升级包存储区域中;和
译码器,用于根据所述映射数据通过合并升级数据和所述程序的第一版本来产生所述程序的第二版本,并且将所述程序的第二版本装载到所述第二存储器中。
44. 如权利要求43所述的程序升级系统,其中,当所述接收方设备被初始化时或通过键输入来产生升级命令,并且在多个升级包当中选择最后发布的升级包,以用于升级所述程序。
45. 如权利要求44所述的程序升级系统,其中,所述升级数据包括下述数据中的至少一种:以字符串[start block No][number of blocks]构造的拷贝块数据、以字符串[start block No][number of blocks][data]构造的修改块数据、和以字符串[start block No][number of blocks][previous version position]构造的移动块数据,其中,[start block No]字段具有开始块的块索引,[number of blocks]字段具有指示从开始块开始的块的数目的值,[data]字段包含相应块的数据,而[previous version position]字段具有要移动的块的开始块的索引。
46. 如权利要求45所述的程序升级系统,其中,所述[previous versionposition]字段指示所述程序的第二版本的块号±块数目以及所述程序的第二版本的块号-所述程序的第一版本的块数目中的一个。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060054746 | 2006-06-19 | ||
KR10-2006-0054746 | 2006-06-19 | ||
KR20060054746 | 2006-06-19 | ||
PCT/KR2007/002947 WO2007148900A1 (en) | 2006-06-19 | 2007-06-18 | Program upgrade system and method for ota-capable portable device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101356519A CN101356519A (zh) | 2009-01-28 |
CN101356519B true CN101356519B (zh) | 2011-11-09 |
Family
ID=38833605
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800015965A Expired - Fee Related CN101361051B (zh) | 2006-06-19 | 2007-06-18 | 用于具有空中广播能力设备的信息升级系统和方法 |
CN2007800011610A Expired - Fee Related CN101356519B (zh) | 2006-06-19 | 2007-06-18 | 用于可利用空中机制的便携式设备的程序升级系统及方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800015965A Expired - Fee Related CN101361051B (zh) | 2006-06-19 | 2007-06-18 | 用于具有空中广播能力设备的信息升级系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US20070294685A1 (zh) |
EP (2) | EP2030120A4 (zh) |
JP (3) | JP2009536395A (zh) |
KR (2) | KR101417759B1 (zh) |
CN (2) | CN101361051B (zh) |
RU (1) | RU2388045C2 (zh) |
WO (2) | WO2007148900A1 (zh) |
Families Citing this family (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ZA965340B (en) | 1995-06-30 | 1997-01-27 | Interdigital Tech Corp | Code division multiple access (cdma) communication system |
WO2007094052A1 (ja) * | 2006-02-14 | 2007-08-23 | Fujitsu Limited | パッチ適用装置およびプログラム |
US8806472B2 (en) * | 2007-09-27 | 2014-08-12 | Ericsson Ab | In-service software upgrade utilizing metadata-driven state translation |
KR20090103637A (ko) * | 2008-03-28 | 2009-10-01 | 삼성전자주식회사 | 방송 시스템에서 펌웨어를 업데이트하는 방법과 장치 및 그시스템 |
TWI376598B (en) * | 2008-07-04 | 2012-11-11 | Acer Inc | Method for monitoring computer system performance and computer-readable medium thereof |
US9354853B2 (en) * | 2008-07-02 | 2016-05-31 | Hewlett-Packard Development Company, L.P. | Performing administrative tasks associated with a network-attached storage system at a client |
US8832681B1 (en) * | 2008-08-29 | 2014-09-09 | Adobe Systems Incorporated | Bundled mobile/desktop application package |
GB2465193A (en) | 2008-11-10 | 2010-05-12 | Symbian Software Ltd | Detecting updated files in a firmware over the air update using CRC values |
JP5471883B2 (ja) * | 2009-07-17 | 2014-04-16 | 株式会社リコー | 情報処理装置、情報処理方法、情報処理プログラム |
JP5563659B2 (ja) * | 2009-07-30 | 2014-07-30 | フレクストロニクス エイピー エルエルシー | 遠隔機器の診断修復装置及び方法 |
JP5478986B2 (ja) * | 2009-08-21 | 2014-04-23 | 株式会社日立ソリューションズ | 情報機器及びプログラム |
US8694985B2 (en) * | 2009-10-30 | 2014-04-08 | Apple Inc. | Managing digital content in hierarchies |
KR20110068098A (ko) * | 2009-12-15 | 2011-06-22 | 삼성전자주식회사 | 가입자 댁내 장치의 소프트웨어 업그레이드 방법 및 장치 |
US8893112B2 (en) * | 2009-12-21 | 2014-11-18 | Intel Corporation | Providing software distribution and update services regardless of the state or physical location of an end point machine |
JP2013517565A (ja) * | 2010-01-12 | 2013-05-16 | グーグル インコーポレイテッド | オペレーティングシステム自動更新手順 |
CN101763269A (zh) * | 2010-01-27 | 2010-06-30 | 中兴通讯股份有限公司 | 一种软件安装包的制作方法 |
KR101134116B1 (ko) * | 2010-08-19 | 2012-04-09 | 주식회사 잉카인터넷 | 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법 |
US9207928B2 (en) * | 2011-01-17 | 2015-12-08 | Bladelogic, Inc. | Computer-readable medium, apparatus, and methods of automatic capability installation |
KR20120115825A (ko) * | 2011-04-11 | 2012-10-19 | 주식회사 케이티 | 이동 단말의 3d 객체 업데이트 방법 |
EP2523106B1 (en) * | 2011-05-11 | 2015-12-30 | Alcatel Lucent | Upgrading of application processors |
CN102215479B (zh) * | 2011-06-22 | 2018-03-13 | 中兴通讯股份有限公司 | 升级包下载及安装的方法、服务器及系统 |
US8997085B2 (en) * | 2011-06-24 | 2015-03-31 | International Business Machines Corporation | Image delta-based upgrade of complex stack in software appliance |
CN102356394B (zh) * | 2011-08-23 | 2013-09-11 | 华为技术有限公司 | 文档更新方法和装置 |
KR101843980B1 (ko) * | 2011-09-01 | 2018-03-30 | 삼성전자주식회사 | 휴대단말기의 데이터 송수신 관리 장치 및 방법 |
KR101251626B1 (ko) * | 2011-09-20 | 2013-04-08 | (주)골든이어스 | 스마트 기기를 이용한 음향기기의 특성에 대한 보상 서비스 제공 방법 |
EP2590073A1 (en) * | 2011-11-02 | 2013-05-08 | Research In Motion Limited | Method and system for on-demand patch generation and management |
CN103136010A (zh) * | 2011-11-25 | 2013-06-05 | 环旭电子股份有限公司 | 韧体更新方法及可供该方法使用的韧体更新装置 |
US20130166655A1 (en) * | 2011-12-23 | 2013-06-27 | Daryl Joseph Martin | Cross-platform software distribution |
US8914790B2 (en) * | 2012-01-11 | 2014-12-16 | Microsoft Corporation | Contextual solicitation in a starter application |
CN102722386B (zh) * | 2012-05-28 | 2015-09-30 | 华为终端有限公司 | 生成无线固件升级包的方法和装置 |
EP2677719A1 (en) * | 2012-06-19 | 2013-12-25 | Alcatel Lucent | A method for interfacing a communication terminal with networked objects |
US8943489B1 (en) * | 2012-06-29 | 2015-01-27 | Juniper Networks, Inc. | High availability in-service software upgrade using virtual machine instances in dual computing appliances |
US9170804B2 (en) * | 2012-07-05 | 2015-10-27 | Nokia Technologies Oy | Method and apparatus for modifying compressed files |
CN102880495A (zh) * | 2012-10-15 | 2013-01-16 | 华为终端有限公司 | 移动终端及其软件升级方法 |
CN103793238A (zh) * | 2012-10-31 | 2014-05-14 | 英业达科技有限公司 | 机柜与其同时更新多个基本输入输出系统的方法 |
US9489188B1 (en) * | 2012-11-14 | 2016-11-08 | Amazon Technologies, Inc. | Tag-based deployment |
KR20140077435A (ko) * | 2012-12-14 | 2014-06-24 | 삼성전자주식회사 | 모바일 단말의 소프트웨어 업데이트 서비스 방법 및 장치 |
CN103902309A (zh) * | 2012-12-27 | 2014-07-02 | 龙尚智联通信科技(上海)有限公司 | 一种远程升级无线模块固件的方法 |
CN103123588A (zh) * | 2013-02-05 | 2013-05-29 | 东莞宇龙通信科技有限公司 | 一种获取差分升级补丁的方法及系统 |
CN103412777A (zh) * | 2013-08-13 | 2013-11-27 | 珠海金山网络游戏科技有限公司 | 一种将打包文件同步到指定版本的更新方法及系统 |
CN103473097A (zh) * | 2013-09-09 | 2013-12-25 | 福州瑞芯微电子有限公司 | Android系统固件升级系统、装置及升级方法 |
CN104602221A (zh) * | 2013-11-01 | 2015-05-06 | 龙尚科技(上海)有限公司 | 一种基于gprs的远程升级设计方式的模块 |
US8725995B1 (en) * | 2013-11-04 | 2014-05-13 | Symantec Corporation | Systems and methods for updating system-level services within read-only system images |
CN103581331B (zh) * | 2013-11-13 | 2018-04-03 | 中国科学院计算技术研究所 | 虚拟机在线迁移方法与系统 |
CN103701856B (zh) * | 2013-11-29 | 2016-08-17 | 四川长虹电器股份有限公司 | 一种定义及终端设备获取升级包的方法 |
CN103840968A (zh) * | 2014-01-02 | 2014-06-04 | 深圳市金立通信设备有限公司 | 一种版本更新方法、装置及终端设备 |
CN107193612B (zh) * | 2014-06-27 | 2021-03-23 | 青岛海信移动通信技术股份有限公司 | 一种移动终端的版本升级方法及装置 |
US9351182B2 (en) * | 2014-06-30 | 2016-05-24 | At&T Intellectual Property I, Lp | Method and apparatus for monitoring and adjusting multiple communication services at a venue |
CN104077163B (zh) * | 2014-07-01 | 2017-07-14 | 宇龙计算机通信科技(深圳)有限公司 | 一种安装包的安装方法、装置和终端 |
CN104133706B (zh) * | 2014-08-01 | 2017-07-11 | 珠海全志科技股份有限公司 | 固件修改方法及固件修改装置 |
CN105335181A (zh) * | 2014-08-06 | 2016-02-17 | 中兴通讯股份有限公司 | 一种实现ota升级的方法和终端 |
US20160080408A1 (en) * | 2014-09-15 | 2016-03-17 | Lookingglass Cyber Solutions | Apparatuses, methods and systems for a cyber security assessment mechanism |
CN104239110B (zh) * | 2014-09-30 | 2017-06-16 | 广东欧珀移动通信有限公司 | 减少ota增量包大小的方法与装置 |
CN104320774B (zh) * | 2014-10-16 | 2020-07-10 | 小米科技有限责任公司 | 一种升级方法、装置及设备 |
CN104391720A (zh) * | 2014-11-29 | 2015-03-04 | 广东好帮手电子科技股份有限公司 | 基于Android系统后视镜盒子升级方法及后视镜盒子 |
US9886264B2 (en) | 2014-12-09 | 2018-02-06 | Xiaomi Inc. | Method and device for upgrading firmware |
CN104484200B (zh) * | 2014-12-09 | 2018-05-25 | 小米科技有限责任公司 | 对固件进行升级的方法及装置 |
US20160170739A1 (en) * | 2014-12-15 | 2016-06-16 | Dimitar Kapashikov | Alter application behaviour during runtime |
JP6216730B2 (ja) | 2015-03-16 | 2017-10-18 | 日立オートモティブシステムズ株式会社 | ソフト更新装置、ソフト更新方法 |
US9910664B2 (en) * | 2015-05-04 | 2018-03-06 | American Megatrends, Inc. | System and method of online firmware update for baseboard management controller (BMC) devices |
CN104991796B (zh) * | 2015-06-19 | 2018-05-25 | 青岛海信移动通信技术股份有限公司 | 一种连续升级的方法及装置 |
JP2017033136A (ja) * | 2015-07-30 | 2017-02-09 | 富士通株式会社 | 情報制御プログラム、情報制御装置及び情報制御方法 |
CN105208200A (zh) * | 2015-08-25 | 2015-12-30 | 维沃移动通信有限公司 | 移动终端的系统升级方法及其移动终端 |
CN106484453B (zh) * | 2015-09-02 | 2021-04-20 | 中兴通讯股份有限公司 | 一种实现系统升级的方法及装置 |
JP6512055B2 (ja) * | 2015-09-30 | 2019-05-15 | 富士通株式会社 | 分析プログラム、分析装置および分析方法 |
CN106909404A (zh) * | 2015-12-22 | 2017-06-30 | 博雅网络游戏开发(深圳)有限公司 | 软件更新方法和系统 |
CN107015821B (zh) * | 2016-01-28 | 2021-05-11 | 腾讯科技(深圳)有限公司 | 增量更新的方法和装置 |
CN105843645B (zh) * | 2016-03-24 | 2020-01-14 | 浙江风向标科技有限公司 | zigbee设备的固件升级方法和装置 |
JP6609508B2 (ja) | 2016-04-27 | 2019-11-20 | 日立オートモティブシステムズ株式会社 | 車両用電子制御装置、プログラム更新方法 |
CN106815051A (zh) * | 2016-12-30 | 2017-06-09 | 深圳怡化电脑股份有限公司 | 一种嵌入式设备的固件升级方法、装置及验钞器 |
US9929748B1 (en) * | 2017-03-31 | 2018-03-27 | Intel Corporation | Techniques for data compression verification |
CN107066303B (zh) * | 2017-05-04 | 2020-11-27 | 深圳市欧瑞博科技股份有限公司 | 固件比对方法和装置 |
US10915331B2 (en) * | 2017-08-04 | 2021-02-09 | Qualcomm Incorporated | Partitioning flash and enabling flexible boot with image upgrade capabilities |
CN108334356A (zh) * | 2017-09-21 | 2018-07-27 | 安徽江淮汽车集团股份有限公司 | 一种远程程序升级方法及系统 |
KR102043075B1 (ko) * | 2017-11-24 | 2019-11-11 | 슈어소프트테크주식회사 | 모델 변경 분석을 통한 모델 검증 방법 및 모델 검증 장치 |
US10642602B2 (en) * | 2017-12-12 | 2020-05-05 | Nxp Usa, Inc. | NVM architecture with OTA support |
WO2019159715A1 (ja) | 2018-02-16 | 2019-08-22 | 日立オートモティブシステムズ株式会社 | 車両制御装置およびプログラム更新システム |
CN110740154A (zh) * | 2018-07-20 | 2020-01-31 | 视联动力信息技术股份有限公司 | 一种流媒体服务的升级方法、装置及设备 |
PL3617875T3 (pl) * | 2018-08-27 | 2021-11-08 | Ovh | Sposób ulepszonej zautomatyzowanej aktualizacji oprogramowania przy zastosowaniu urządzenia sieciowego |
KR102111449B1 (ko) * | 2018-10-23 | 2020-05-15 | 주식회사 시옷 | 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법 |
US11070618B2 (en) | 2019-01-30 | 2021-07-20 | Valve Corporation | Techniques for updating files |
US11386233B2 (en) | 2019-04-30 | 2022-07-12 | JFrog, Ltd. | Data bundle generation and deployment |
US11340894B2 (en) | 2019-04-30 | 2022-05-24 | JFrog, Ltd. | Data file partition and replication |
US11106554B2 (en) | 2019-04-30 | 2021-08-31 | JFrog, Ltd. | Active-active environment control |
US11886390B2 (en) * | 2019-04-30 | 2024-01-30 | JFrog Ltd. | Data file partition and replication |
US11086757B1 (en) * | 2019-06-12 | 2021-08-10 | Express Scripts Strategic Development, Inc. | Systems and methods for providing stable deployments to mainframe environments |
US11720347B1 (en) | 2019-06-12 | 2023-08-08 | Express Scripts Strategic Development, Inc. | Systems and methods for providing stable deployments to mainframe environments |
WO2021014326A2 (en) | 2019-07-19 | 2021-01-28 | JFrog Ltd. | Software release verification |
US10999314B2 (en) | 2019-07-19 | 2021-05-04 | JFrog Ltd. | Software release tracking and logging |
CN114402286A (zh) * | 2019-11-18 | 2022-04-26 | 深圳市欢太科技有限公司 | 一种文件处理方法、文件处理装置及终端设备 |
US11695829B2 (en) | 2020-01-09 | 2023-07-04 | JFrog Ltd. | Peer-to-peer (P2P) downloading |
TWI734370B (zh) * | 2020-02-06 | 2021-07-21 | 大陸商合肥兆芯電子有限公司 | 快閃記憶體之資料合併方法、控制電路單元與儲存裝置 |
CN111782254A (zh) * | 2020-07-02 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 用于升级对象的方法、装置、设备以及存储介质 |
CN111949293A (zh) * | 2020-08-06 | 2020-11-17 | 曙光信息产业(北京)有限公司 | 固件升级方法、装置、计算机设备和存储介质 |
CN112218289B (zh) * | 2020-09-18 | 2022-11-08 | 中煤科工集团重庆研究院有限公司 | 定位卡无线升级系统和方法 |
CN112152846B (zh) * | 2020-09-18 | 2023-04-18 | 重庆神缘智能科技有限公司 | 一种基于物联网的计量仪表远程升级方法 |
US11860680B2 (en) | 2020-11-24 | 2024-01-02 | JFrog Ltd. | Software pipeline and release validation |
CN112383908A (zh) * | 2020-11-24 | 2021-02-19 | 无锡寰芯微电子科技有限公司 | 一种蓝牙设备的升级方法及系统 |
CN112667266B (zh) * | 2021-01-22 | 2024-02-06 | 百度在线网络技术(北京)有限公司 | 固件升级方法、装置、设备和存储介质 |
US20220377533A1 (en) * | 2021-05-19 | 2022-11-24 | Mehmood Zafarullahkhan | System of mobile device operating system and apps delivery service |
CN113721967A (zh) * | 2021-08-30 | 2021-11-30 | 苏州磐联集成电路科技股份有限公司 | 差分包生成方法,差分包生成设备,及升级方法 |
CN113986277A (zh) * | 2021-09-24 | 2022-01-28 | 成都市卡蛙科技有限公司 | 一种基于终端状态进行固件升级的方法 |
CN114168182A (zh) * | 2021-11-15 | 2022-03-11 | 读书郎教育科技有限公司 | 一种Android终端应用升级的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567843A (zh) * | 2003-06-22 | 2005-01-19 | 华为技术有限公司 | 终端设备的软件自动升级方法 |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10576A (en) * | 1854-02-28 | lyman | ||
US193386A (en) * | 1877-07-24 | Improvement in ozone-generators | ||
US237081A (en) * | 1881-01-25 | Smoke-consuming furnace | ||
US132382A (en) * | 1872-10-22 | Improvement in knitting-machine needles | ||
US203968A (en) * | 1878-05-21 | Improvement in velocipedes | ||
JPH04137136A (ja) * | 1990-09-28 | 1992-05-12 | Nec Corp | プログラム記憶方式 |
JPH04362735A (ja) * | 1991-06-10 | 1992-12-15 | Mitsubishi Heavy Ind Ltd | ソースプログラム照合システム |
JPH05120067A (ja) * | 1991-10-30 | 1993-05-18 | Nec Software Ltd | プログラムパツチ方式 |
KR100286008B1 (ko) * | 1995-12-30 | 2001-04-16 | 윤종용 | 소프트웨어 프로그램 자동 갱신방법 |
US6018747A (en) * | 1997-11-26 | 2000-01-25 | International Business Machines Corporation | Method for generating and reconstructing in-place delta files |
US6952823B2 (en) * | 1998-09-01 | 2005-10-04 | Pkware, Inc. | Software patch generator using compression techniques |
KR100284430B1 (ko) * | 1998-12-18 | 2001-04-02 | 구자홍 | 프로그램 갱신 방법 및 장치 |
US7469381B2 (en) * | 2007-01-07 | 2008-12-23 | Apple Inc. | List scrolling and document translation, scaling, and rotation on a touch-screen display |
US6751794B1 (en) * | 2000-05-25 | 2004-06-15 | Everdream Corporation | Intelligent patch checker |
JP2001350684A (ja) * | 2000-06-05 | 2001-12-21 | Nec Gumma Ltd | ソフトウェア提供システム及びソフトウェア提供装置 |
US7000230B1 (en) * | 2000-06-21 | 2006-02-14 | Microsoft Corporation | Network-based software extensions |
US7058941B1 (en) * | 2000-11-14 | 2006-06-06 | Microsoft Corporation | Minimum delta generator for program binaries |
US20030186689A1 (en) * | 2001-08-06 | 2003-10-02 | Samsung Electronics Co., Ltd | System and method for IOTA software download notification for wireless communication devices |
US20030074657A1 (en) * | 2001-10-12 | 2003-04-17 | Bramley Richard A. | Limited time evaluation system for firmware |
US7251812B1 (en) * | 2001-10-31 | 2007-07-31 | Microsoft Corporation | Dynamic software update |
JP2003143091A (ja) * | 2001-11-01 | 2003-05-16 | Matsushita Electric Ind Co Ltd | 放送装置並びに受信装置 |
JP3967121B2 (ja) * | 2001-12-11 | 2007-08-29 | 株式会社ルネサステクノロジ | ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム |
JP4205350B2 (ja) * | 2002-02-28 | 2009-01-07 | 富士通株式会社 | 差分データ生成方法、プログラム、記録媒体及び装置 |
US7600021B2 (en) * | 2002-04-03 | 2009-10-06 | Microsoft Corporation | Delta replication of source files and packages across networked resources |
JP2004102379A (ja) * | 2002-09-05 | 2004-04-02 | Hitachi Ltd | パッチ適用管理プログラム、方法、およびシステム |
JP2004152136A (ja) * | 2002-10-31 | 2004-05-27 | Matsushita Electric Ind Co Ltd | データ更新システム、データ更新システムの差分データ生成装置及びプログラム、並びに更新後ファイル復元装置及びプログラム |
US7047448B2 (en) * | 2002-11-21 | 2006-05-16 | Bitfone Corporation | Software self-repair toolkit for electronic devices |
JP2004227520A (ja) * | 2003-01-27 | 2004-08-12 | Mitsubishi Electric Corp | 新旧プログラム書換情報生成装置及び新旧プログラム書換情報生成方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体 |
TWI229291B (en) * | 2003-04-03 | 2005-03-11 | Inventec Corp | Device and method for updating contents of flash memory unit |
US20040230963A1 (en) * | 2003-05-12 | 2004-11-18 | Rothman Michael A. | Method for updating firmware in an operating system agnostic manner |
US20040237081A1 (en) * | 2003-05-19 | 2004-11-25 | Homiller Daniel P. | Methods and apparatus for generating upgraded software from initial software and software upgrade packages |
JP3985737B2 (ja) * | 2003-06-20 | 2007-10-03 | ソニー株式会社 | ソフトウェア更新システムと電子機器およびソフトウェア更新方法 |
WO2004114130A2 (en) * | 2003-06-23 | 2004-12-29 | Red Bend Ltd. | Method and system for updating versions of content stored in a storage device |
US20050010576A1 (en) * | 2003-07-09 | 2005-01-13 | Liwei Ren | File differencing and updating engines |
US7313792B2 (en) * | 2003-09-08 | 2007-12-25 | Microsoft Corporation | Method and system for servicing software |
JP2005092623A (ja) * | 2003-09-18 | 2005-04-07 | Nec Software Chubu Ltd | パッケージソフトウェア更新方式,方法,およびプログラム |
JP2005135187A (ja) * | 2003-10-30 | 2005-05-26 | Toshiba Corp | 電子機器および組み込みソフトウェア更新方法 |
JP4467965B2 (ja) * | 2003-12-08 | 2010-05-26 | 株式会社野村総合研究所 | 差分ファイル作成プログラム及び方法 |
US7478381B2 (en) * | 2003-12-15 | 2009-01-13 | Microsoft Corporation | Managing software updates and a software distribution service |
US7509636B2 (en) * | 2003-12-15 | 2009-03-24 | Microsoft Corporation | System and method for updating files utilizing delta compression patching |
US7546594B2 (en) * | 2003-12-15 | 2009-06-09 | Microsoft Corporation | System and method for updating installation components using an installation component delta patch in a networked environment |
US7568195B2 (en) * | 2003-12-16 | 2009-07-28 | Microsoft Corporation | Determining a maximal set of dependent software updates valid for installation |
US9213609B2 (en) * | 2003-12-16 | 2015-12-15 | Hewlett-Packard Development Company, L.P. | Persistent memory device for backup process checkpoint states |
US7197634B2 (en) * | 2004-01-16 | 2007-03-27 | Dell Products L.P. | System and method for updating device firmware |
WO2005085997A2 (en) * | 2004-03-10 | 2005-09-15 | Sony Ericsson Mobile Communications Ab | Automatic backup store in firmware upgrades |
US7853609B2 (en) * | 2004-03-12 | 2010-12-14 | Microsoft Corporation | Update distribution system architecture and method for distributing software |
US7587433B2 (en) * | 2004-06-01 | 2009-09-08 | Red Bend Ltd. | Method and system for in-place updating content stored in a storage device |
JP4036852B2 (ja) * | 2004-09-13 | 2008-01-23 | 三菱電機株式会社 | 差分データ生成装置、差分データ生成方法および差分データ生成プログラム |
JP4016025B2 (ja) * | 2004-10-12 | 2007-12-05 | 富士通株式会社 | 無線端末装置 |
JP2008522254A (ja) * | 2004-11-08 | 2008-06-26 | イノパス・ソフトウェアー・インコーポレーテッド | スタティック・ファイル・システムの差異検出および更新 |
EP1657638A1 (en) * | 2004-11-12 | 2006-05-17 | Research In Motion Limited | System and method for downloading a program from a program store location to a mobile device |
US7774596B2 (en) * | 2005-02-02 | 2010-08-10 | Insyde Software Corporation | System and method for updating firmware in a secure manner |
WO2007108127A1 (ja) * | 2006-03-23 | 2007-09-27 | Mitsubishi Denki Kabushiki Kaisha | システムプログラムダウンロードシステム |
US20070277167A1 (en) * | 2006-05-23 | 2007-11-29 | International Business Machines Corporation | System and method for computer system maintenance |
-
2007
- 2007-06-18 KR KR1020070059550A patent/KR101417759B1/ko not_active IP Right Cessation
- 2007-06-18 WO PCT/KR2007/002947 patent/WO2007148900A1/en active Application Filing
- 2007-06-18 JP JP2009509449A patent/JP2009536395A/ja active Pending
- 2007-06-18 EP EP07746981A patent/EP2030120A4/en not_active Withdrawn
- 2007-06-18 WO PCT/KR2007/002939 patent/WO2007148899A1/en active Application Filing
- 2007-06-18 JP JP2009509450A patent/JP2009536396A/ja active Pending
- 2007-06-18 KR KR1020070059551A patent/KR20070120447A/ko not_active Application Discontinuation
- 2007-06-18 CN CN2007800015965A patent/CN101361051B/zh not_active Expired - Fee Related
- 2007-06-18 RU RU2008114331/09A patent/RU2388045C2/ru not_active IP Right Cessation
- 2007-06-18 EP EP07746973A patent/EP2030119A4/en not_active Withdrawn
- 2007-06-18 CN CN2007800011610A patent/CN101356519B/zh not_active Expired - Fee Related
- 2007-06-19 US US11/765,191 patent/US20070294685A1/en not_active Abandoned
- 2007-06-19 US US11/765,214 patent/US20070294686A1/en not_active Abandoned
-
2011
- 2011-10-19 JP JP2011230097A patent/JP5508370B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567843A (zh) * | 2003-06-22 | 2005-01-19 | 华为技术有限公司 | 终端设备的软件自动升级方法 |
Non-Patent Citations (1)
Title |
---|
全文. |
Also Published As
Publication number | Publication date |
---|---|
WO2007148900A1 (en) | 2007-12-27 |
EP2030119A4 (en) | 2009-07-22 |
RU2388045C2 (ru) | 2010-04-27 |
KR20070120447A (ko) | 2007-12-24 |
JP2009536395A (ja) | 2009-10-08 |
JP5508370B2 (ja) | 2014-05-28 |
KR20070120446A (ko) | 2007-12-24 |
US20070294685A1 (en) | 2007-12-20 |
JP2012069131A (ja) | 2012-04-05 |
EP2030120A4 (en) | 2009-08-26 |
EP2030120A1 (en) | 2009-03-04 |
WO2007148899A1 (en) | 2007-12-27 |
RU2008114331A (ru) | 2009-10-20 |
CN101361051A (zh) | 2009-02-04 |
CN101361051B (zh) | 2011-01-26 |
CN101356519A (zh) | 2009-01-28 |
JP2009536396A (ja) | 2009-10-08 |
KR101417759B1 (ko) | 2014-07-14 |
EP2030119A1 (en) | 2009-03-04 |
US20070294686A1 (en) | 2007-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101356519B (zh) | 用于可利用空中机制的便携式设备的程序升级系统及方法 | |
EP1652069B1 (en) | Method and system for updating versions of content stored in a storage device | |
CN103942058A (zh) | 一种嵌入式电子设备软件升级方法及系统 | |
CN110928483B (zh) | 数据存储、数据获取方法及设备 | |
CN111683066B (zh) | 异构系统集成方法、装置、计算机设备和存储介质 | |
CN101359293A (zh) | 制作部分更新包的方法和装置 | |
CN102890675A (zh) | 一种数据存储和查找的方法及装置 | |
CN103399934A (zh) | 一种表单数据的传输与存储方法 | |
CN108415722A (zh) | 渠道应用的更新方法、装置、计算机设备和存储介质 | |
CN106250476B (zh) | 一种更新和同步白名单的方法、装置和系统 | |
CN113821536B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN104951482B (zh) | 一种操作Sparse格式的镜像文件的方法及装置 | |
CN111063183B (zh) | 一种基于蓝牙的电能表统计方法、装置及存储介质 | |
CN102567377B (zh) | 电子地图数据管理系统及方法 | |
CN110825706A (zh) | 一种数据压缩的方法和相关设备 | |
CN101571808B (zh) | 提高电信智能卡生产效率的方法 | |
CN114238240B (zh) | 一种分布式多集群的数据存储方法、装置及存储介质 | |
CN101221581B (zh) | 一种数据文件生成方法及装置 | |
CN107943700A (zh) | 一种自动修复bug的方法及系统 | |
CN110222051A (zh) | 以太坊区块链的智能合约压缩方法 | |
CN103312792A (zh) | 从外接存储设备中读取文件的方法及系统 | |
CN112733210B (zh) | 一种设备标识获取方法、装置和计算机可读存储介质 | |
CN116775690A (zh) | 资源转移处理方法、装置、设备及存储介质、程序产品 | |
CN116185948A (zh) | 代码虚拟环境的迁移方法及装置、存储介质、电子设备 | |
CN113254262B (zh) | 一种数据库容灾方法、装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111109 Termination date: 20190618 |
|
CF01 | Termination of patent right due to non-payment of annual fee |