CN116204498A - 一种应用于集中器的可执行程序的压缩及执行方法 - Google Patents
一种应用于集中器的可执行程序的压缩及执行方法 Download PDFInfo
- Publication number
- CN116204498A CN116204498A CN202211671851.XA CN202211671851A CN116204498A CN 116204498 A CN116204498 A CN 116204498A CN 202211671851 A CN202211671851 A CN 202211671851A CN 116204498 A CN116204498 A CN 116204498A
- Authority
- CN
- China
- Prior art keywords
- file
- namely
- executable
- compressed
- data
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用于集中器的可执行程序的压缩及执行方法,步骤1:将应用于集中器的可执行程序,生成压缩的可执行文件,以便可执行文件存储;步骤2:将压缩的可执行文件加载到加载器中,以便原可执行文件执行。本发明的有益效果是:1.可执行文件压缩后,占用空间压缩前减小50‑70%,且不影响正常运行。2.对文件系统和Flash无限制,使用于所有类型的文件系统和Flash芯片。3.运行前的完整性校验,避免因文件损坏导致运行异常。
Description
技术领域
本发明涉及电力设备领域,特别是一种应用于集中器的可执行程序的压缩及执行方法。
背景技术
在电力行业的集中器上,单个APP可执行程序,内存大小通常为2~10M,一个完整终端功能集中器,通常包含至少5个APP, 因此在集中器中,存在存储空间有限、可执行程序过大的问题。
目前为解决这一问题,常用的方法是更换容量更大的存储芯片, 但是该方法的缺点是物料成本较高,不适合大面积推广使用;还有一种方法是采用压缩的文件系统SquashFS, 但该方法又存在如下缺点:1) 文件系统是只读的, 无法对已有文件内容进行修改;2) 无法创建新的文件和删除已有文件。还有一种方法是采用ubifs, 但该方法又存在缺点:只适用于NAND Flash等MTD设备, 无法应用于EMMC等块设备。
发明内容
本发明的目的在于克服以上技术缺陷,提出一种应用于集中器的可执行程序的压缩方法,对可执行程序进行压缩,且不影响正常运行。
本发明为实现其技术目的所采取的技术方案是:一种应用于集中器的可执行程序的压缩及执行方法,包括以下步骤:
步骤1:将应用于集中器的可执行程序,生成压缩的可执行文件,以便可执行文件存储;
步骤2:将压缩的可执行文件加载到加载器中,以便原可执行文件执行。
优选的,将应用于集中器的可执行程序生成压缩的可执行文件时, 包含如下步骤:
S1. 文件类型判断: 判断输入文件是否为合法的集中器可执行文件;(arm LinuxELF)
S2. 数据分块和压缩: 对于合法的可执行文件, 将输入文件分块并分别压缩;
S3. 生成校验信息: 生成压缩后数据块的校验信息;
S4. 生成加载器程序: 将加载器代码编译为可执行文件;
S5. 生成输出文件: 将加载器复制至一份, 作为输出文件;
S6. 追加校验信息: 将校验信息追加至输出文件末尾;
S7. 追加压缩数据块: 记录当前首个数据块的偏移, 并将全部压缩数据块依次追加至输出文件;
S8. 追加数据块结束标识: 将数据块结束标识追加至输出文件;
S9. 追加文件类型标识: 将文件类型标识追加至输出文件;
S10. 追加数据区偏移: 将数据区偏移追加至输出文件;
S11. 输出文件重命名: 将输出文件重命名为指定文件名, 压缩的可执行文件生成完成。
优选的,S8中的数据块结束标识为一个空的压缩数据块;
S9中的文件类型标识为文件魔数,或当前压缩方式版本,或使用的数据压缩算法;
S10中的数据区偏移为S7中记录的当前首个数据块的偏移。
优选的,所述压缩的可执行文件执行时, 包含如下步骤:
S1. 加载器执行: 当压缩的可执行文件执行时,执行头部的加载器, 在加载器执行过程中, 会执行S2-S8步骤;
S2. 获取数据区偏移: 从输入文件末尾获取数据区偏移;
S3. 文件类型标识判断: 从输入文件获取文件类型标识, 判断输入文件的文件魔数是否与要求匹配, 并获取压缩方式版本和使用的数据压缩算法;
S4. 读取压缩数据块: 从数据区偏移开始读取文件, 直到数据块结束标识为止,读出所有的压缩数据块;
S5. 计算压缩数据块校验: 生成读取出的压缩后数据块的校验信息;
S6. 比对数据校验: 从数据区偏移开始, 向前读取32字节校验信息, 并与S5中计算出数据校验比对;
S7. 解压数据块: 将读出的压缩数据块解压到内存里特定地址处;
S8. 跳转执行: 将控制权交给解压出的可执行文件继续执行;
S9. 原可执行文件执行。
优选的,所述压缩的可执行文件,内容格式包括:加载器、校验信息、压缩数据块、数据块结束标识、文件类型标识、数据区偏移。
本发明的有益效果是:
1. 可执行文件压缩后, 占用空间压缩前减小50-70%, 且不影响正常运行。
2. 对文件系统和Flash无限制, 使用于所有类型的文件系统和Flash芯片。
3. 运行前的完整性校验, 避免因文件损坏导致运行异常。
附图说明
图1为可执行文件压缩过程示意图;
图2为压缩的可执行文件执行过程示意图;
图3为压缩的可执行文件内容格式组分图。
具体实施方式
下面结合附图实施例,对本发明做进一步说明。
实施例一
如图1-3所示:
一、压缩的可执行文件内容格式有如下几部分构成:
1. 加载器:可直接执行的汇编代码, 用于解压数据块, 将其还原至内存中, 并在校验完成后, 跳转至还原出的代码执行。
2. 校验信息: 所有数据块的整体校验, 32字节。
3. 压缩数据块: 使用压缩算法分别压缩的数据库, 每个数据块包含该数据长度和压缩的数据内容。
4. 数据块结束标识: 用于判定压缩数据块的结束。
5. 文件类型标识: 用于文件格式的版本控制和压缩的可执行文件可执行文件识别。
6. 数据区偏移: 用于解压时定位压缩数据块的起始位置。
二、生成压缩的可执行文件时, 包含如下步骤:
S1. 文件类型判断: 判断输入文件是否为合法的集中器可执行文件;
S2. 数据分块和压缩: 对于合法的可执行文件, 将输入文件分块并分别压缩;
S3. 生成校验信息: 生成压缩后数据块的校验信息;
S4. 生成加载器程序: 将加载器代码编译为可执行文件;
S5. 生成输出文件: 将加载器复制至一份, 作为输出文件;
S6. 追加校验信息: 将校验信息追加至输出文件末尾;
S7. 追加压缩数据块: 记录当前首个数据块的偏移, 并将全部压缩数据块依次追加至输出文件;
S8. 追加数据块结束标识: 将数据块结束标识(一个空的压缩数据块)追加至输出文件;
S9. 追加文件类型标识: 将文件类型标识(文件魔数、当前压缩方式版本、使用的数据压缩算法)追加至输出文件;
S10. 追加数据区偏移: 将数据区偏移(S7中记录的当前首个数据块的偏移)追加至输出文件;
S11. 输出文件重命名: 将输出文件重命名为指定文件名, 压缩的可执行文件生成完成。
三、压缩的可执行文件执行时, 包含如下步骤:
S1. 加载器执行: 当压缩的可执行文件执行时, 实际上是执行了头部的加载器,在加载器执行过程中, 会执行S2-S8步骤;
S2. 获取数据区偏移: 从输入文件末尾获取数据区偏移;
S3. 文件类型标识判断: 从输入文件获取文件类型标识, 判断输入文件的文件魔数是否与要求匹配, 并获取压缩方式版本和使用的数据压缩算法;
S4. 读取压缩数据块: 从数据区偏移开始读取文件, 直到数据块结束标识为止,读出所有的压缩数据块;
S5. 计算压缩数据块校验: 生成读取出的压缩后数据块的校验信息;
S6. 比对数据校验: 从数据区偏移开始, 向前读取32字节校验信息, 并与S5中计算出数据校验比对;
S7. 解压数据块: 将读出的压缩数据块解压到内存里特定地址处;
S8. 跳转执行: 将控制权交给解压出的可执行文件,即跳转到S7中的内存里的特定地址继续执行;
S9. 原可执行文件执行。
本发明的优点为:
1. 可执行文件压缩, 占用空间压缩前减小50-70%, 且不影响正常运行。
2. 对文件系统和Flash无限制, 使用于所有类型的文件系统和Flash芯片。
3. 运行前的完整性校验, 避免因文件损坏导致运行异常。
Claims (5)
1.一种应用于集中器的可执行程序的压缩及执行方法,其特征在于:包括以下步骤:
步骤1:将应用于集中器的可执行程序,生成压缩的可执行文件,以便可执行文件存储;
步骤2:将压缩的可执行文件加载到加载器中,以便原可执行文件执行。
2.根据权利要求1所述的应用于集中器的可执行程序的压缩及执行方法,其特征在于:将应用于集中器的可执行程序生成压缩的可执行文件时, 包含如下步骤:
S1. 文件类型判断: 判断输入文件是否为合法的集中器可执行文件;(arm LinuxELF)
S2. 数据分块和压缩: 对于合法的可执行文件, 将输入文件分块并分别压缩;
S3. 生成校验信息: 生成压缩后数据块的校验信息;
S4. 生成加载器程序: 将加载器代码编译为可执行文件;
S5. 生成输出文件: 将加载器复制至一份, 作为输出文件;
S6. 追加校验信息: 将校验信息追加至输出文件末尾;
S7. 追加压缩数据块: 记录当前首个数据块的偏移, 并将全部压缩数据块依次追加至输出文件;
S8. 追加数据块结束标识: 将数据块结束标识追加至输出文件;
S9. 追加文件类型标识: 将文件类型标识追加至输出文件;
S10. 追加数据区偏移: 将数据区偏移追加至输出文件;
S11. 输出文件重命名: 将输出文件重命名为指定文件名, 压缩的可执行文件生成完成。
3.根据权利要求2所述的应用于集中器的可执行程序的压缩及执行方法,其特征在于:
S8中的数据块结束标识为一个空的压缩数据块;
S9中的文件类型标识为文件魔数,或当前压缩方式版本,或使用的数据压缩算法;
S10中的数据区偏移为S7中记录的当前首个数据块的偏移。
4.根据权利要求1所述的应用于集中器的可执行程序的压缩及执行方法,其特征在于:
所述压缩的可执行文件执行时, 包含如下步骤:
S1. 加载器执行: 当压缩的可执行文件执行时,执行头部的加载器, 在加载器执行过程中, 会执行S2-S8步骤;
S2. 获取数据区偏移: 从输入文件末尾获取数据区偏移;
S3. 文件类型标识判断: 从输入文件获取文件类型标识, 判断输入文件的文件魔数是否与要求匹配, 并获取压缩方式版本和使用的数据压缩算法;
S4. 读取压缩数据块: 从数据区偏移开始读取文件, 直到数据块结束标识为止, 读出所有的压缩数据块;
S5. 计算压缩数据块校验: 生成读取出的压缩后数据块的校验信息;
S6. 比对数据校验: 从数据区偏移开始, 向前读取32字节校验信息, 并与S5中计算出数据校验比对;
S7. 解压数据块: 将读出的压缩数据块解压到内存里特定地址处;
S8. 跳转执行: 将控制权交给解压出的可执行文件继续执行;
S9. 原可执行文件执行。
5.根据权利要求1所述的应用于集中器的可执行程序的压缩及执行方法,其特征在于:
所述压缩的可执行文件,内容格式包括:加载器、校验信息、压缩数据块、数据块结束标识、文件类型标识、数据区偏移。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211671851.XA CN116204498A (zh) | 2022-12-26 | 2022-12-26 | 一种应用于集中器的可执行程序的压缩及执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211671851.XA CN116204498A (zh) | 2022-12-26 | 2022-12-26 | 一种应用于集中器的可执行程序的压缩及执行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116204498A true CN116204498A (zh) | 2023-06-02 |
Family
ID=86518238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211671851.XA Pending CN116204498A (zh) | 2022-12-26 | 2022-12-26 | 一种应用于集中器的可执行程序的压缩及执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116204498A (zh) |
-
2022
- 2022-12-26 CN CN202211671851.XA patent/CN116204498A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070055969A1 (en) | System and method for updating firmware | |
CN109189405B (zh) | 一种验证程序Flash数据一致性的方法及系统 | |
US7454673B2 (en) | Apparatus, system, and method for accessing persistent files in non-execute-in-place flash memory | |
TWI459396B (zh) | 資料寫入與讀取方法、記憶體控制器與記憶體儲存裝置 | |
CN104778060A (zh) | 一种嵌入式Linux系统快速安全启动方法 | |
US8595594B2 (en) | Data processing method, memory controller, and memory storage device | |
CN110333993B (zh) | 内存快照的生成方法、装置、电子设备和存储介质 | |
CN106293621B (zh) | 一种固件升级方法及装置 | |
US7886211B2 (en) | Memory controller | |
CN113721952A (zh) | 一种应用于采集终端的嵌入式软件升级方法 | |
CN116204498A (zh) | 一种应用于集中器的可执行程序的压缩及执行方法 | |
US11989418B2 (en) | Method and apparatus for upgrading SSD firmware compatible with raid SSD and non-raid | |
CN111831311A (zh) | 应用程序升级方法、电子设备及存储介质 | |
CN111290765B (zh) | 一种固件快速烧录方法、系统及存储介质 | |
CN110795275A (zh) | 基于异常掉电过程中的异常块识别方法和装置 | |
CN102890969B (zh) | 数据处理方法、存储器控制器及存储器储存装置 | |
CN111090542A (zh) | 基于异常掉电的异常块识别方法、装置及计算机设备 | |
CN114510256B (zh) | 固件升级方法、电能表、计算机设备和存储介质 | |
CN112540882A (zh) | 闪存设备检测系统及闪存设备检测方法 | |
US7313648B2 (en) | Corruption tolerant method and system for deploying and modifying data in flash memory | |
CN118760483A (zh) | 芯片的固件加载方法及装置 | |
EP4145271A1 (en) | Methods and terminal for updating converted applet file, and java card device | |
US10379875B2 (en) | Solid state storage device and program loading method thereof | |
KR102139826B1 (ko) | 플래시 메모리 저장장치 저장 장치 및 그 구동 방법 | |
CN115993978A (zh) | 一种固件升级方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |