一种可执行文件的压缩方法及装置与流程

文档序号:12786105阅读:364来源:国知局
一种可执行文件的压缩方法及装置与流程

本发明实施例涉嵌入式技术领域,尤其涉及一种可执行文件的压缩方法及装置。



背景技术:

随着科学技术的不断发展,电视等行业的竞争越来越激烈。其中,成本竞争是很重要的一个方面,如何降低成本也是绝大多数公司都需要考虑的问题。

以电视机制造行业为例,成本竞争主要集中在硬件方面。在软件方面一般是通过减少可执行文件的大小,从而减小存储芯片空间的大小来降低电视机存储硬件的材料成本。

在现有技术中,一般是根据可执行文件的不同,确定不同的压缩算法以对可执行文件进行压缩。然而,当可执行文件较多时,且对各个可执行文件分别压缩后,也可能存在存储空间无法存储所有压缩后的可执行文件的这种情况。这是因为,在各个可执行文件的压缩和/或解压缩过程中,需要为压缩和/或解压缩算法的执行开辟额外的存储空间,而当可执行文件较多时,执行压缩和/或解压缩算法本身所需要的额外存储空间也比较多,在存储空间不能满足执行压缩和/或解压算法的要求时,压缩和/或解压缩算法的效果就会受到影响,进而造成文件所占存储设备空间增大,使得存储可执行文件存储芯片的成本增加。

因此,现有技术中的可执行文件的压缩方式和压缩效率有待提高。



技术实现要素:

为解决上述相关技术问题,本发明提供一种可执行文件的压缩方法及装置,以提高可执行文件的压缩率,节省存储可执行文件存储芯片的存储空间,间接达到节约硬件成本的技术效果。

为实现上述目的,本发明实施例采用如下技术方案:

第一方面,本发明实施例提供了一种可执行文件的压缩方法,所述方法包括:

分析所述可执行文件各部分数据的功能属性和存储格式属性;

根据所述功能属性,识别出所述各部分数据中可压缩的目标数据;

根据所述目标数据的存储格式属性,得到所述目标数据的压缩策略;

根据所述压缩策略,对所述目标数据进行压缩,并更新所述目标数据的存储格式属性,得到压缩后的可执行文件。

第二方面,本发明实施例提供了一种可执行文件的装置,所述装置包括:

属性分析模块,用于分析所述可执行文件各部分数据的功能属性和存储格式属性;

目标数据识别模块,用于根据所述功能属性,识别出所述各部分数据中可压缩的目标数据;

压缩策略确定模块,用于根据所述目标数据的存储格式属性,得到所述目标数据的压缩策略;

压缩模块,用于根据所述压缩策略,对所述目标数据进行压缩,并更新所述目标数据的存储格式属性,得到压缩后的可执行文件。

本发明实施例提供的一种可执行文件的压缩方法及装置,首先分析可执行文件各部分数据的功能属性和存储格式属性,根据各部分数据的功能属性,可识别出各部分数据中可压缩的目标数据;根据目标数据的存储格式属性,可得到目标数据的压缩策略;根据压缩策略,对可压缩的目标数据进行压缩,并更新目标数据的存储格式属性,得到压缩后的可执行文件。通过采用上述技术方案,相对于现有技术,可以使得压缩后的可执行文件占用较少的存储空间,达到节省存储可执行文件的硬件成本的技术效果,间接提升了产品的市场竞争力。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。

图1为本发明实施例一提供的一种可执行文件的压缩方法的流程图;

图2a为写FLASH操作后生成的一种可执行的二进制文件数据;

图2b为写FLASH操作后生成的又一种可执行的二进制文件数据;

图3a为本发明实施例一提供的优化前电视FLASH内存的数据存储结构分布图;

图3b为本发明实施例一提供的优化后电视FLASH内存的数据存储结构分布图;

图4为本发明实施例二提供的一种可执行文件的压缩方法的流程图;

图5为本发明实施例二提供的一种可执行文件在压缩前后所占存储空间的对比示意图;

图6为本发明实施例三提供的一种可执行文件的压缩装置的结构框图。

具体实施方式

为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图1为本发明实施例一提供的一种可执行文件的压缩方法的流程图。本实施例的方法可以由如电视和/或电视机顶盒等可执行文件的压缩装置来执行,其中,该方法可由部署在如电视和/或电视机顶盒中的软件和/或硬件来实施,该软件和/或硬件一般可集成在某个嵌入式系统中。如图1所示,该方法可以包括如下步骤:

S110:分析可执行文件各部分数据的功能属性和存储格式属性。

其中,可执行文件是指由操作系统进行加载执行的文件,本实施例中提到的可执行文件优选为可执行的二进制(bin)文件。上述可执行的二进制文件可以为已经经过压缩处理的二进制文件,也可为未经过压缩处理的二进制文件。其中,本领域技术人员可根据可执行的二进制文件中携带的压缩标识,来判断该二进制文件是否已被压缩。

示例性的,可执行文件各部分数据的存储格式属性可以从各部分数据对应存储路径中附加的标识该部分数据对应存储格式的标识符中得到,通常包括如下三种情况:

1、对应存储路径中未添加有任何压缩标识;

对于在各部分数据对应存储路径中未添加任何压缩标识的可执行文件,编译器在编译该文件时只需完成正常的编译处理即可,无需做任何压缩和解压缩处理。

2、对应存储路径中添加有压缩率较低的压缩标识;

优选的,本发明实施例中的预设存储格式属性是指,在存储路径中按照第一预设存储格式(如标识符“-g”)或第二预设存储格式(如标识符“-7”)保存的可执行文件具有的特征属性。上述两种存储格式对应的压缩率不同,第一预设存储格式对应的压缩率较低,第二预设存储格式对应的压缩率较高。具体的,当第一预设存储格式的标记符为“-g”时。若在可执行的二进制文件的某部分数据的对应存储路径中检测到存在“-g”标识符时,则说明编译器在编译该可执行的二进制文件的该部分数据过程中,对该部分数据按较小压缩率的方式进行过压缩处理,以节省该二进制文件所占用的存储空间,进而节省存储该二进制文件硬件(如存储芯片)的材料成本。

3、对应存储路径中添加有压缩率较高的压缩标识。

优选的,当第二预设存储格式的标识符为“-7”。若可执行的二进制文件的某部分数据的对应存储路径中若检测到存在“-7”标识符时,则说明编译器在编译该二进制文件的该部分数据过程中,对该部分数据按较大压缩率的方式进行过压缩处理,相较于标识符为“-g”的第一预设存储格式,上述压缩方式可进一步节省该可执行的二进制文件所占用的存储空间,以节省存储该二进制文件硬件的材料成本。

需要说明的是,由于压缩算法和技术众多,可执行的二进制文件各部分数据的存储格式并不限于以上所列举的三种形式。

S120:根据功能属性,识别出各部分数据中可压缩的目标数据。

进一步的,在可执行的二进制文件各部分被压缩之前,需要根据各部分数据的功能属性这一基本特性,判断该可执行的二进制文件中的各部分数据是否可以进行压缩。示例性的,可执行的二进制文件中的各部分数据的功能属性可包括但不限于如存储属性、压缩或解压缩属性等。在具体操作过程中,对于具有解压缩属性或者具有标记属性的可执行的二进制文件的数据,则不可以违背其数据属性对其做压缩处理;而对于具有存储属性的二进制文件中的数据,则可以对其进行压缩以节省存储空间。

示例性的,下面以系统的实际结构为例进行说明,该系统优选NOS(No Operating System,没有操作系统)系统:

00113:#define IMG_INFO_OFFSET 0x21000

00112:#difine MAGIC_BOOTLOADER 0x55AA1234

00113:#define MAGIC_APP 0x55AA5678

00114:#define MAGIC_IMAGE_END 0x55AAABCD

图2a为写闪存(Flash Memory,一般简称FLASH)操作后生成的一种可执行的二进制文件数据。如图2a所示,通过对该结构体进行写FLASH操作,在实际的生成文件中,0x21000是实际写入的数据。由于该地址对应的是标记码部分,则生成的文件数据不可以被压缩,必须以实际占用的字节大小进行存储。

示例性的,对于下述可执行的二进制文件数据:

00303:#difine BIN_PACKAGE_HEADER_ID0 0x54454C09

00304:#difine BIN_PACKAGE_HEADER_ID1 0x58336900

00289:PlaceU32_(BIN_PACKAGE_HEADER_ID0),

PlaceU32_(BIN_PACKAGE_HEADER_ID1)

具体的,图2b为写FLASH操作后生成的又一种可执行的二进制文件数据。如图2b所示,本领域技术人员可以理解的是,在该二进制文件中,地址0002100h对应的数据与写入的数据(54454C09和58336900)一致,则表明该二进制文件中的该部分数据是可以被压缩的。

通过对可执行的二进制文件各部分数据的功能属性进行分析,可以快速识别出该二进制文件中可被压缩的目标数据,从而快速锁定可压缩,即待处理对象,缩小处理范围。

S130:根据目标数据的存储格式属性,得到目标数据的压缩策略。

示例性的,不同的存储格式属性对应的压缩策略不同。例如:

若目标数据对应存储路径中未添加有任何压缩标识的存储属性,则说明该目标数据完全没有别压缩。据此,从而可以得出该目标数据的下一步压缩策略,即可以按照某种压缩方式对该部分数据进行压缩,从而减少该目标数据的存储空间;

若目标数据按照第一预设存储格式(如标识符为“-g”)的形式存储在对应路径中,则说明目标数据当前是按压缩率较低的压缩方式压缩的。据此,可以得出该目标数据下一步的压缩策略,即可按比当前压缩率更高的某种压缩方式压缩该部分目标数据;

若目标数据按照第二预设存储格式(如标识符为“-7”)的形式存储在对应路径中,则说明目标数据当前可按某种压缩率较高的压缩方式压缩的。据此,有可能可以得出该目标数据下一步的压缩策略,即有可能无法再通过更换压缩方式,进一步提升该部分目标数据的压缩率了。

S140:根据压缩策略,对目标数据进行压缩,并更新目标数据的存储格式属性,得到压缩后的可执行文件。

对于可压缩的目标数据,根据上述步骤中已确定的压缩策略,可对其进行压缩处理,同时可更新目标数据对应的存储路径中的存储格式属性,使得压缩后的目标数据的存储格式属性与当前的压缩策略相对应。从而便于该目标数据被执行时选择与当前压缩策略对应的解压缩策略。因此,通过识别目标数据的存储格式属性,可确定出该目标数据是否被压缩,或者是按照怎样的方式经过压缩处理的。

进一步的,将压缩后的可执行文件保存在FLASH中后,对于FLASH剩余的存储空间,可通过充分利用其剩余空间保存数据,使得该FLASH内存空间的利用率达到最大。具体的,其优化方法如下:

图3a为本发明实施例一提供的优化前电视FLASH内存的数据存储结构分布图。如图3a所示,在0-57BANK(存储单位)的存储空间,主要存储软件的可执行文件,所以可执行文件的大小最大为58×64K=3712K。如果可执行文件的大小大于这个空间,就会存在覆盖数据区的风险。而对于可执行文件以外的数据则根据实际结构体的大小以及实际的频道个数进行存储空间的分配。将全部数据存储完成之后,只剩余了2K的可用空间,即存储空间余量不足。因此,为了对存储空间进行优化以达到精简的要求,需在图3a中的7个BANK中再节省出一个BANK来存储数据。具体优化过程如下:

经过分析,在第63个BANK中,真实的数据只有304个BYTE,但是FLASH的存储空间是以BANK为单元来进行划分的,所以,第63个BANK中304个BYTE的数据占据了整个第63个BANK,造成了FLASH存储空间资源的浪费。图3b为本发明实施例一提供的优化后电视FLASH内存的数据存储结构分布图。如图3b所示,通过升级HDCP,可将高带宽数字内容保护(High-bandwidth Digital Content Protection,HDCP)部分的数据直接写入到规定的内存(如第58个BANK)中。这样,就可以多节省出一个BANK来存放其它程序代码。除此之外,还可将数据的存储方式修改为不保存的方式,在系统初始化时将初始化整个表格,然后在切换不同的时序时,可直接从表格中加载数据,这样又可节省一个BANK出来。因此,通过采用上述优化内存分配的方式,可达到进一步节省存储空间的技术效果。

可选的,对于节省存储空间的方法,本领域技术人员可以理解的是,对于在后续程序执行中不需要用到的图片,可通过对其在程序数据中进行删除,或者在对图片进行编译时修改图片的压缩率来降低生成图片的可执行文件的大小,进而进一步节省程序所需要的存储空间。

可选的,还可通过将程序中不需要执行的代码进行屏蔽的模式,修改为直接删除这部分被屏蔽使其不被执行代码的模式,达到进一步节省可执行文件存储空间的技术效果。因为采取的屏蔽代码的技术手段只是不执行这部分代码而已,但在原可执行的二进制文件中,这部分被屏蔽的不被执行的代码仍然物理上存在于原可执行的二进制文件中,所以这部分被屏蔽的代码仍然会占据一定的物理存储空间。如果对于被屏蔽以刻意不被执行的代码,采取直接删除代码的形式,则由于代码被物理性的删除了,相较于屏蔽不被执行的技术手段,删除代码则会进一步节省可执行的二进制文件的存储空间。

本实施例提供了一种可执行文件的压缩方法,在分析可执行文件各部分数据的功能属性和存储格式属性后,根据可执行文件各部分数据的存储、压缩或解压缩等功能属性,可识别出该可执行文件各部分数据中可被压缩的目标数据。根据目标数据的存储格式属性,可得到目标数据的压缩策略。其中,压缩策略可包括不进行压缩、进行压缩,按照比原压缩率较大的新的压缩方式进行压缩,以及按照比原压缩率较小的新的压缩方式进行压缩等情况。根据压缩策略,对目标数据进行压缩,并更新目标数据的存储格式属性,得到压缩后的可执行文件。通过采用上述技术方案,可以使得压缩后的可执行文件占用较少的存储空间,达到节省可执行文件所需要的存储硬件材料成本的技术效果,从而间接地提升相应产品的市场竞争力。

实施例二

图4为本发明实施例二提供的一种可执行文件的压缩方法的流程图。本实施例二在实施例一的基础上,对实施例一的步骤S130“根据目标数据的存储格式属性,得到目标数据的压缩策略”进行了进一步地优化,参照图4,本发明实施例二具体包括如下步骤:

S210:分析可执行文件各部分数据的功能属性和存储格式属性。

S220:根据功能属性,识别出各部分数据中可压缩的目标数据。

S230:判断当前存储格式是否与预设存储格式相匹配,若是,则执行步骤S240;否则,则执行步骤S260。

示例性的,由于经过步骤S220识别出的可压缩的目标数据有可能是已经过压缩处理后的数据,也可能是未经过任何压缩的数据。因此,通过将目标数据的当前存储格式与预设存储格式相比较,若二者不相符,则有可能表明目标数据是未经过压缩处理的数据。若当前存储格式与任一预设存储格式相匹配,则可说明当前目标数据是按照预设存储格式对应的压缩率经过压缩处理之后的数据。因此步骤230可以作为确定当前目标数据的压缩策略的基础,在压缩策略确定后,可选择合适的压缩方式对当前的目标数据进行进一步地压缩,进而节省目标数据所占用的存储空间。

S240:判断当前存储格式是否与第一压缩策略对应的第一预设存储格式相匹配,若是,则执行步骤S250;否则,则执行步骤S260。

示例性的,在目标数据的当前存储格式与预设存储格式匹配的前提下,若进一步判断出当前存储格式与第一压缩策略对应的第一预设存储格式(如标识符为“-g”)相匹配,则可说明目标数据已按照第一压缩策略经过了压缩处理。此时,可根据实际需求,更改目标数据的压缩策略,并同时相应地对目标数据的原第一预设存储格式(如标识符为“-g”)进行修改,以提升目标数据的压缩率,达到节省可执行文件存储空间,节约存储材料成本的技术效果。

示例性的,还可以进一步判断当前存储格式是否与第二压缩策略对应的第二预设存储格式(如标识符为“-7”)相匹配,若是,则可说明目标数据已按照第二压缩策略经过了压缩处理。此时,也可根据实际需求,更改目标数据的压缩策略,并同时相应地对目标数据的原第二预设存储格式(如标识符为“-7”)进行修改。

S250:按照与第二预设存储格式对应的第二压缩策略压缩目标数据,其中,第二压缩策略对应的压缩率大于第一压缩策略对应的压缩率,继续执行步骤S270。

示例性的,若将目标数据中的第一预设预储格式(如标识符为“-g”)修改为第二预设存储格式(如标识符为“-7),则可提升目标数据的压缩率,节省存储空间。具体的,图5为本发明实施例二提供的一种可执行文件在压缩前后所占存储空间的对比示意图。如图5所示,未压缩的文件(vdplayer.bin)在存储空间中需要占用文件本身大小以节省存储空间(1270KB);而对于压缩后的文件(vdplayer.bin),则占用了较少一部分存储空间(380KB)。

示例性的,在一些特定情况下,对于某些目标数据,根据实际需要,若无需或不宜采用较大压缩率的方式进行压缩,则可将第二预设存储格式(如标识符为“-7”)修改为第一预设存储格式(如标识符为“-g”),以根据目标数据本身的特性节省其所占用的存储空间。

S260:根据预设存储格式,确定目标数据的压缩策略,继续执行步骤S270。

示例性的,若目标数据的当前存储格式与预设存储格式不相符时,则可表明目标数据未经过压缩处理。此时,可将预设存储格式(例如,可以为第一预设存储格式也可以为第二预设存储格式)添加到目标数据对应存储的路径中,在压缩目标数据时,编辑器则可根据不同存储格式对应的压缩方式压缩目标数据,并得到不同压缩率的目标数据,以节省可执行文件中目标数据的存储空间,减小存储可执行文件所需要的硬件成本。

S270:根据压缩策略,对目标数据进行压缩,并更新目标数据的存储格式属性,得到压缩后的可执行文件。

本实施例二在上述实施例的基础上,通过对目标数据的当前存储格式与预设的存储格式进行匹配,根据匹配结果,采取不同的压缩策略,并且根据所选择的压缩策略,相应进行添加或更改当前目标数据的原存储格式属性至新的存储格式属性,从而可以根据实际需要,相应地添加或更改目标数据的压缩方式,进而可以提升可执行文件目标数据的压缩率,节省目标数据所占存储空间,间接达到节约存储材料成本的技术效果。

以下是本发明实施例提供的可执行文件的压缩装置的实施例,可执行文件的压缩装置与上述各实施例提供可执行文件的压缩方法属于同一个发明构思。

实施例三

图6为本发明实施例三提供的一种可执行文件的压缩装置的结构框图。该装置可由部署在如电视和/或电视机顶盒中的软件和/或硬件来实现,其中,该装置一般可集成在如电视和/或电视机顶盒等硬件实体的嵌入式系统中。

如图6所示,该装置包括:属性分析模块310、目标数据识别模块320、压缩策略确定模块330和压缩模块340。其中,

属性分析模块310,用于分析所述可执行文件各部分数据的功能属性和存储格式属性;

目标数据识别模块320,用于根据所述功能属性,识别出所述各部分数据中可压缩的目标数据;

压缩策略确定模块330,用于根据所述目标数据的存储格式属性,得到所述目标数据的压缩策略;

压缩模块340,用于根据所述压缩策略,对所述目标数据进行压缩,并更新所述目标数据的存储格式属性,得到压缩后的可执行文件。

本实施例提供了一种可执行文件的压缩装置,首先分析可执行文件各部分数据的功能属性和存储格式属性,根据可执行文件各部分数据的存储、压缩或解压缩等功能属性,可识别出该可执行文件各部分数据中可压缩的目标数据。根据目标数据的存储格式属性,可得到目标数据的压缩策略。其中,压缩策略可包括不进行压缩、进行压缩,按照比原压缩率较大的新的压缩方式进行压缩,以及按照比原压缩率较小的新的压缩方式进行压缩等情况。根据压缩策略,对目标数据进行压缩,并更新目标数据的存储格式属性,得到压缩后的可执行文件。通过采用上述技术方案,可以使得压缩后的可执行文件占用较少的存储空间,达到节省可执行文件所需要的存储硬件材料成本的技术效果,从而间接地提升了相应产品的市场竞争力。

在上述实施例的基础上,所述压缩策略确定模块330可以进一步包括:

压缩策略确定单元,用于若所述目标数据的当前存储格式与预设存储格式相匹配,则根据所述当前存储格式,确定所述目标数据的压缩策略。

在上述实施例的基础上,所述压缩策略确定单元具体用于:

若所述当前存储格式与第一压缩策略对应的第一预设存储格式相匹配,则所述目标数据的压缩策略为:

按照与第二预设存储格式对应的第二压缩策略压缩所述目标数据,其中,所述第二压缩策略对应的压缩率大于所述第一压缩策略对应的压缩率。

在上述实施例的基础上,所述压缩策略确定模块330还可以具体用于:

若所述目标数据的当前存储格式与预设存储格式不匹配,则根据预设存储格式,确定所述目标数据的压缩策略。

在上述实施例的基础上,所述第一预设存储格式为“-g”,所述第二预设存储格式为“-7”。

本发明实施例提供的可执行文件的压缩装置可执行本发明任意实施例所提供的可执行文件的压缩方法,具备执行方法相应的功能模块和相应的有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的可执行文件的压缩方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1