一种嵌入式软件的在线升级方法及系统
技术领域
本发明涉及嵌入式系统,更具体地说,涉及一种嵌入式软件的在线升级方法及系统。
背景技术
在许多可以远程或现场升级软件的嵌入式设备中,其升级软件的方法都是将需要写入到该嵌入式装置中的软件(通常称为软件的最新版本),整个下载到上述嵌入式装置中,并用上述的最新版本软件覆盖原来嵌入式装置中的已有软件(通常称为旧版本软件),完成软件的升级过程。但是,这种方法在操作人员与该嵌入式装置在同一个位置时,其缺点不太容易显现出来。但是,如果在远程升级的,其缺点就比较明显。由于远程升级时需要通过网络连接作为上位机的服务器以及作为下位机的嵌入式设备,整个程序传输时其数据量较大,必然会花费较多的时间,在以流量计费的情况下,还会因为较大的传输数据量带来较大的开支。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述传输时间较长、传输数据量较大的缺陷,提供一种传输数据量较小、传输时间较短的一种嵌入式软件的在线升级方法及系统。
本发明解决其技术问题所采用的技术方案是:构造一种嵌入式软件的在线升级方法,包括上位机和与所述上位机连接、作为下位机的嵌入式装置,所述在线升级方法包括如下步骤:
A)取得嵌入式装置中嵌入式软件与需要配置到所述嵌入式装置中的软件的区别;
B)形成表示上述软件差别的差别文件;
C)传送所述差别文件到所述嵌入式装置,并使用所述差别文件升级所述嵌入式装置中的软件。
在本发明所述的一种嵌入式软件的在线升级方法中,所述步骤A)中进一步包括:
A1)所述上位机取得所述嵌入式软件中安装的软件,并取出需要安装在所述嵌入式装置中的软件;
A2)依次比较所述两个软件之间的差别,每个不同的位置形成一个段文件。
在本发明所述的一种嵌入式软件的在线升级方法中,所述步骤B)进一步包括:将得到的所述段文件依次排列,得到所述差别文件。
在本发明所述的一种嵌入式软件的在线升级方法中,所述段文件内容包括需要更新位置的起始地址、本段文件包括的更新数据长度以及本段文件包括的更新数据。
在本发明所述的一种嵌入式软件的在线升级方法中,所述步骤C)进一步包括:
C1)下载所述差别文件到所述嵌入式装置的预留区域内;
C2)解析所述差别文件,并更新所述嵌入式装置软件的内容。
在本发明所述的一种嵌入式软件的在线升级方法中,所述步骤C2)进一步包括:
C21)解析所述差别文件,得到所述差别文件中的所有段文件内容;
C22)逐一查找所述段文件中指定的需要更新位置的起始地址,将所述段文件中的更新数据由所述起始地址嵌入到所述嵌入式装置软件中;
C23)完成所述段文件更新后,更新所述软件的版本号。
在本发明所述的一种嵌入式软件的在线升级方法中,所述步骤A1)中进一步包括如下步骤:
A11)取得所述嵌入式装置中的软件版本号;
A12)在本地取得所述版本号所对应的软件内容。
本发明还涉及一种嵌入式软件的在线升级系统,包括:
区别取得模块:用于取得嵌入式装置中嵌入式软件与需要配置到所述嵌入式装置中的软件的区别;
差别文件形成模块:用于形成表示上述软件差别的差别文件;
升级模块:用于传送所述差别文件到所述嵌入式装置,并使用所述差别文件升级所述嵌入式装置中的软件。
在本发明所述的一种嵌入式软件的在线升级系统中,所述区别取得模块进一步包括:
软件取得单元:用于所述上位机取得所述嵌入式软件中安装的软件,并取出需要安装在所述嵌入式装置中的软件;
软件比较单元:依次比较所述两个软件之间的差别,每个不同的位置形成一个段文件;
其中,所述软件取得单元还包括:
版本号取得子单元:用于取得所述嵌入式装置中的软件版本号;
嵌入式软件内容取得子单元:用于在本地取得所述版本号所对应的软件内容。
在本发明所述的一种嵌入式软件的在线升级系统中,所述差别文件形成模块进一步包括:所述差别文件形成模块进一步包括:用于形成所述段文件的段文件形成单元以及用于将得到的所述段文件依次排列,得到所述差别文件的差别文件形成单元;所述段文件内容包括需要更新位置的起始地址、本段文件包括的更新数据长度以及本段文件包括的更新数据。
实施本发明的嵌入式软件的在线升级方法及系统,具有以下有益效果:由于比较最新版本软件和旧版本软件的内容,进而得到段文件;多个段文件组成差别文件,只要传输上述差别文件,就能把上述嵌入式装置中的旧版本软件升级到最新版本的软件;而与整个软件相比,上述差别文件的数据量无疑较小,所以,其数据量较小,传输时间较短,软件升级所用的时间也就较短。
附图说明
图1是本发明嵌入式软件的在线升级方法及系统实施例中方法流程图;
图2是所述实施例中差别文件结构示意图;
图3是所述实施例中软件更新步骤的进一步的流程图;
图4是所述实施例中系统的结构示意图。
具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图1所示,在本发明一种嵌入式软件的在线升级方法及系统实施例中,其升级嵌入式软件(也就是安装在嵌入式装置之内的软件)的方法包括如下步骤:
步骤S11 取得嵌入式装置中软件的版本号:一般而言,在嵌入式装置在工作时,可以通过网络与外部的设备连接,也可以不与外部设备连接。但是在升级其中的软件时,特别是远程升级时,该嵌入式装置一定是通过网络与外部的服务器或终端(通常是PC)连接的,通过在服务器或终端上的操作,实现嵌入式装置的软件升级(也就是将嵌入式装置上安装的软件由较旧的版本用存储在上述服务器或PC上的最新版本的软件替代)。在这个过程中,上述服务器或PC作为上位机,而嵌入式装置作为下位机,其间通过网络连接。在本步骤中,服务器或PC开始操作嵌入式装置软件升级,其在联系上上述嵌入式装置,明确要替代上述嵌入式装置中的软件的最新版本内容之后,要求上述嵌入式装置发送其上软件的版本号到服务器或PC中;而嵌入式装置在收到上述指令后,发送被要求的软件版本号到上述服务器或PC中。
步骤S12 在本地取得上述版本号对应的软件:在本步骤中,服务器或PC通过上一步骤得到的嵌入式装置中现在安装的软件版本号,在其本地(本机)内查找该版本号对应的软件内容。这些内容是事先在上述服务器或PC中存储的,并且其存储在指定位置或指定文件夹内,便于查找。同时,希望通过本方法安装到上述嵌入式装置中的软件版本(也就是最新版本的软件)也是存储在上述服务器或PC中的。
步骤S13 对比,得到新旧版本软件之间的差别:在本步骤中,对比上述由嵌入式装置上得到的软件版本号所对应的软件内容和最新版本软件内容,得到其间的区别。在本实施例中,上述软件内容实际上是通过编译得到的可执行文件的内容,因此,在本步骤中的比较实际上是比较两个可执行文件中相同位置上的数值是否相同。通常,嵌入式装置中的软件大小是固定的,由其使用的FLASH(闪存存储装置)的大小确定,例如8M模型、16M模型、32M模型等;同时不同版本的嵌入式软件之间,其不同之处通常较整个程序而言较少,就整个软件而言,多数位置上的数据是相同的。因此,本步骤中的比较得以实现。
步骤S14 每一不同之处得到一个段文件:在本步骤中,对上述步骤中的得到每个不同之处,产生一个段文件;当然,也可以发现一个不同之处,就产生一个段文件。在本实施例中,段文件描述了上述新、旧版本之间不同之处。在本实施例中,段文件包括了如下内容:两个软件之间一个不同之处的开始位置(即起始位置)、不同之处的长度(即更新数据长度)以及不同的内容(即更新数据)。由于软件的可执行文件以文件的方式存储,所以,在本实施例中比较新旧版本软件时,就是比较这两个文件是否一样,得到不一样的地方距文件开始位置的相对的存储位置、不一样的长度以及不一样的内容。其中,不一样的长度应该刚好等于不一样内容的存储长度。在本实施例中,上述开始位置、长度以及内容在一个段文件中依次排列。并且,开始位置用4个字节表示、长度用2个字节表示。
步骤S15 组合上述段文件得到新旧版本之间的差别文件:在本步骤中,将多个段文件组合起来,得到差别文件。由于在上述软件之间可能存在多个不同之处,而一个不同之处就需要一个段文件表示,因此需要将多个段文件组合起来得到差别文件。当然,如果上述两个版本的软件中只有一处不同,则该差别文件也就只有一个段文件。在本实施例中,上述组合就是将段文件按照其产生的先后依次排列,差别文件的结构如图2所示,图2中,一个差别文件2包括了依次排列的第一段文件21、第二段文件22等等,而每个段文件又分别包括起始地址、更新数据长度、更新数据三个部分。
步骤S16 传输上述差别文件到嵌入式装置,并使用上述差别文件升级上述嵌入式装置中的软件:在本步骤中,传输上述得到的差别文件到嵌入式装置,并利用该差别文件更新或升级上述嵌入式装置中的软件,使其与上述步骤中用于比较的最新版本一致。
如图3所示,在本实施例中,上述步骤S16进一步包括如下步骤:
步骤S31 传输差别文件到嵌入式装置的预留区:在本步骤中,将上述差别文件传输到上述嵌入式装置,并将其存储在该嵌入式装置的预留区内。该嵌入式装置的预留区是指嵌入式装置专门留出用于软件升级存储所用的一个存储区域。
步骤S32 解析差别文件,得到多个段文件:在本步骤中,嵌入式装置解析上述差别文件,得到多个段文件。也就是说,在本步骤中,嵌入式装置得到了其自身现有的软件与将要安装在其上的软件之间的差别信息,这些信息包含了如上面描述的内容:多个或一个更新的起始地址、多个或一个更新的长度以及多个或一个更新的内容。
步骤S33 逐一按照段文件的内容更改现有软件:在本步骤中,按照上述步骤中得到的信息,依据软件存储的地址,逐一找到上述段文件指出之处,并将段文件中的更新内容更新到现有软件中去。
步骤S34 更改软件版本号:当所有段文件指出的更新都实施之后,该软件实际上就已经是最新版本的软件(也就是希望安装在嵌入式装置中的软件或在上述步骤中用于比较的新版本软件)了,所以,在本步骤中,就是将软件版本号改为新的软件版本号。在本实施例中,该软件版本号是在形成差别文件时写入到差别文件中的。在本步骤中,取出该版本号并用其覆盖当前软件的版本号。
至此,该嵌入式装置的软件升级已经完全实现。
在本实施例中,还涉及一种实现上述嵌入式软件升级方法的系统,如图4所示,该系统包括:区别取得模块3、差别文件形成模块4以及升级模块5,其中,区别取得模块3用于取得嵌入式装置中嵌入式软件与需要配置到所述嵌入式装置中的软件的区别(也就是新、旧软件之间的区别);差别文件形成模块4用于形成表示上述软件之间差别的差别文件;升级模块5用于传送所述差别文件到嵌入式装置,并使用所述差别文件升级所述嵌入式装置中的软件。在本实施例中,上述区别取得模块3进一步包括了用于所述上位机取得所述嵌入式软件中安装的软件,并取出需要安装在所述嵌入式装置中的软件的软件取得单元32;同时区别取得模块3还包括用于依次比较所述两个软件之间的差别,每个不同的位置形成一个段文件的软件比较单元31,其中,该软件取得单元31还包括用于取得所述嵌入式装置中的软件版本号的版本号取得子单元312和用于在本地取得所述版本号所对应的软件内容的嵌入式软件内容取得子单元311。
在本实施例中,上述差别文件形成模块4进一步包括:用于形成被比较的两个软件之间更新描述的段文件形成单元42和用于将得到的得到段文件依次排列,得到所述差别文件的差别文件形成单元41;其中,所述段文件内容包括需要更新位置的起始地址、本段文件包括的更新数据长度以及本段文件包括的更新数据。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。