CN102087608A - 一种嵌入式程序压缩方法,解压缩方法和嵌入式*** - Google Patents

一种嵌入式程序压缩方法,解压缩方法和嵌入式*** Download PDF

Info

Publication number
CN102087608A
CN102087608A CN2009101887276A CN200910188727A CN102087608A CN 102087608 A CN102087608 A CN 102087608A CN 2009101887276 A CN2009101887276 A CN 2009101887276A CN 200910188727 A CN200910188727 A CN 200910188727A CN 102087608 A CN102087608 A CN 102087608A
Authority
CN
China
Prior art keywords
code
program
control unit
program storage
micro
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.)
Granted
Application number
CN2009101887276A
Other languages
English (en)
Other versions
CN102087608B (zh
Inventor
周波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Konka Holding Group Co ltd
Original Assignee
Konka Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Konka Group Co Ltd filed Critical Konka Group Co Ltd
Priority to CN200910188727.6A priority Critical patent/CN102087608B/zh
Publication of CN102087608A publication Critical patent/CN102087608A/zh
Application granted granted Critical
Publication of CN102087608B publication Critical patent/CN102087608B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开一种嵌入式程序压缩方法,解压缩方法和嵌入式***,包括:微控制单元对程序代码进行编译,将关于芯片初始化和电源管理部分的内核程序代码数据集中放入代码组区域的BANK0代码组区,将其它一些功能代码装入代码组区域的BANK1~BANK31区域;连接程序存储器;在编译和连接过程中对BANK1~BANK31区域的代码进行压缩;输出可执行的程序到所述程序存储器。通过本发明,充分利用现有的程序存储器和数据存储器容量,以适应越来越多的程序存储。

Description

一种嵌入式程序压缩方法,解压缩方法和嵌入式***
技术领域
本发明涉及嵌入式程序处理技术,尤其涉及一种嵌入式程序压缩方法,解压缩方法和嵌入式***。
背景技术
51系列单片机是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM)FalshProgrammable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
存储器是单片机中非常重要的和不可或缺的部件,单片机的工作离不开程序,而程序正是存放在程序存储器中的。同样,程序的运行少不了对数据的处理,各种常数、变量、中间数据、运行状态、运算结果,都是存放在数据存储器中的。
尽管程序存储器和数据存储器同是存储器,由于用途不同,因而它们对于存储器性能的要求也不相同。程序存储器用于存放程序、表格和固定的常数,单片机工作时只从中提取指令或常数,通常不会对其内容进行修改,因此对其的基本要求是。必须确保存储内容长期不变,断电也不丢失,所以程序存储器用的是非易失性只读存储器(Non-Volatile Read OnlyMesmory,NVROM);而数据存储器是用来存储常数、变量、中间数据、运行状态、运算结果等的,也就是说,数据存储器所存放的内容在程序运行中要经常改变,即对数据存储器的要求是要能够随时快速方便地读写,所以数据存储器用的是随机存储器(Random--AccessMemory,RAM)。
单片机中常用的程序存储器有掩膜型只读存储器MROM、一次性可编程存储器OTPROM、紫外线可擦除可编程只读存储器EPROM和闪速存储器Flash Memory等四种。
由于51系列单片机16位地址寄存器的限制,外部程序存储器和外部数据存储器的寻址范围都是64KB。分组连接***BL51允许生成代码长度大于64KB的8051目标程序,它可以管理一个公共区域(COMMONAREA)和最多32个代码组区域(BANKAREA),每个代码组最大为64KB,所以这就决定可执行代码最大不能超过2MB(32*64KB)。
随着8051系列上的应用开发不断增加,而且应用规模比以往大,可执行代码往往上几MB。对于8位的单片机来说,由于其容量的限制,在开发较大型程序的时候,因为程序存储器和数据存储器容量都比较小,而不得裁减应用功能。
因此,随着越来越多的存储程序的需求,如何充分利用现有的程序存储器和数据存储器容量,使产品更具有市场竞争力,成为急待解决的问题。
发明内容
本发明目的在于提供一种嵌入式程序压缩方法,解压缩方法和嵌入式***,充分利用现有的程序存储器和数据存储器容量,以适应越来越多的程序存储。
为解决本发明的技术问题,本发明公开一种嵌入式程序代码的压缩方法,其中,包括:
微控制单元对程序代码进行编译,将关于芯片初始化和电源管理部分的内核程序代码数据集中放入代码组区域的BANK0代码组区,将其它一些功能代码装入代码组区域的BANK1~BANK31区域;
连接程序存储器;
在编译和连接过程中对BANK1~BANK31区域的代码进行压缩;
输出可执行的程序到所述程序存储器。
较优地,所述编译采用游程编码(RLE,Run Length Encoding)的算法。
为解决本发明的技术问题,本发明还公开一种嵌入式程序代码的解压缩方法,其中,包括:
微控制单元从程序存储器装入BANKO执行程序;
***初始值;
所述微控制单元从所述程序存储器装入BANK(1-31)解压缩;
在嵌入程序正常运行过程中,所述微控制单元从所述程序存储器读入BANK1~BANK31的压缩数据解压到连接双倍速率同步动态随机存储器的运行区;
所述微控制单元进行主循环。
较优地,所述微控制单元进行主循环后,所述方法还包括:
所述微控制单元还在空闲段里依次从所述程序存储器读入BANK1~BANK31压缩数据依次解压缩。
为解决本发明的技术问题,本发明还公开一种嵌入式***,其中,包括:微控制单元和程序存储器,其中,所述微控制单元连接所述程序存储器;其中
所述微控制单元,用于对程序代码进行编译,将关于芯片初始化和电源管理部分的内核程序代码数据集中放入代码组区域的BANK0代码组区,将其它一些功能代码装入代码组区域的BANK1~BANK31区域;在编译和连接过程中对BANK1~BANK31区域的代码进行压缩,输出可执行的程序到所述程序存储器;
所述程序存储器,用于接收和存储所述微控制单元编译和压缩后的代码数据。
较优地,还包括:与所述微控制单元连接的双倍速率同步动态随机存储器,其中,
所述双倍速率同步动态随机存储器,用于接收所述微控制单元解压缩后的代码数据,并进行运行。
与现有技术相比,本发明具有如下有益效果:
本发明公开的嵌入式程序压缩方法,解压缩方法和嵌入式***,运用压缩和解压缩技术,使相同的程序存储器装入更多的执行代码,实现更多的功能。
附图说明
图1为本发明实施例的执行程序代码结构示意图;
图2为本发明实施例的一种嵌入式***结构示意图;
图3为本发明实施例的一种嵌入式程序代码的压缩方法流程示意图;
图4为本发明实施例的一种嵌入式程序代码的解压缩方法的流程示意图;
图5为本发明另一实施例的一种嵌入式程序代码的解压缩方法的流程示意图。
具体实施方式
本发明公开一种嵌入式程序压缩方法,解压缩方法和嵌入式***,运用压缩和解压缩技术,使相同的程序存储器装入更多的执行代码,实现更多的功能。
本发明的一个实施例中,采用游程编码(RLE,Run Length Encoding)的算法,又称行程长度编码,RLE是一个针对无损压缩的非常简单的算法,它用重复字节和重复的次数来简单描述来代替重复的字节。
代码组区域(BANK AREA)的压缩方法可以如下所示。
根据51系列公共区域(COMMON AREA)和最多32个代码组区域(BANK AREA),每个代码组最大为64KB此根本原理,其执行程序代码结构可以如图1所示。
如图2所示,为本发明实施例的一种嵌入式***结构示意图,该***可以包括:微控制单元(MCU,Micro Control Unit)21,双倍速率同步动态随机存储器(DDR,Double DataRate SDRAM)22和程序存储器23。其中,MCU又称单片微型计算机(Single ChipMicrocomputer)或者单片机。其中,微控制单元21分别连接所述DDR22和程序存储器23。
嵌入MCU21可以将执行代码从程序存储器23写入MCU存储器DDR22的运行区。
所述微控制单元21,用于对程序代码进行编译,将关于芯片初始化和电源管理部分的内核程序代码数据集中放入代码组区域的BANK0代码组区,将其它一些功能代码装入代码组区域的BANK1~BANK31区域;在编译和连接过程中对BANK1~BANK31区域的代码进行压缩,输出可执行的程序到所述程序存储器23;
所述程序存储器23,用于接收和存储所述微控制单元21编译和压缩后的代码数据。
所述双倍速率同步动态随机存储器22,用于接收所述微控制单元21解压缩后的代码数据,并进行运行。
嵌入MCU21对于嵌入式可执行程序是无法进行主体程序进行压缩。但嵌入式程序里的关于芯片初始化和电源管理部分等内核程序代码量比较小,大概几十KB,加上解压缩几KB代码量,对于一个代码组区域64KB空间足够。因此,可以将此部分关于芯片初始化和电源管理部分等内核程序代码数据集中放入BANK0代码组区,确保嵌入式***正常运行,将其它一些功能代码装入BANK1~BANK31区域。
如图3所示,为本发明一实施例的一种嵌入式程序代码的压缩方法流程示意图,在编译连接过程中对BANK1~BANK31进行压缩,主要可以如下所述。
步骤31,MCU21进行程序代码的编译;
步骤32,MCU21进行BANK(1-31)数据的压缩,采用RLE压缩方法,将关于芯片初始化和电源管理部分等内核程序代码数据集中放入BANK0代码组区,确保嵌入式***正常运行,将其它一些功能代码装入BANK1~BANK31区域,在编译过程中对代码组区域的BANK1~BANK31区域的代码进行压缩。
步骤33,MCU21连接程序存储器23,且在连接过程中对代码组区域的BANK1~BANK31区域的代码进行压缩;
步骤34,输出可执行的程序。
例如,输出可执行的程序到连接的所述程序存储器23。
如图4所示,为本发明实施例的一种嵌入式程序代码的解压缩方法的流程示意图,可以如下所述。
步骤41,嵌入MCU21从程序存储器23装入BANKO执行程序;
步骤42,***初始值;
步骤43,嵌入MCU21从程序存储器装入BANK(1-31)解压缩;
在嵌入程序正常运行过程中,嵌入MCU21从程序存储器23里读入BANK1~BANK31的压缩数据解压到存储器DDR22的运行区,其中,***需要花费几秒种解压时间。
步骤44,嵌入MCU21进行主循环。
如图5所示,为本发明另一实施例的一种嵌入式程序代码的解压缩方法的流程示意图,可以如下所述。
步骤51,嵌入MCU21从程序存储器23装入BANKO执行程序;
步骤52,***初始值;
步骤53,嵌入MCU21从程序存储器装入BANK(1-31)解压缩;
在嵌入程序正常运行过程中,嵌入MCU21从程序存储器23里读入BANK1~BANK31的压缩数据解压到存储器DDR22的运行区,其中,***需要花费几秒种解压时间。
步骤54,嵌入MCU21进行主循环。
步骤54执行完后,嵌入式***的所述微控制单元21还可以在空闲段里依次从程序存储器里23读入BANK1~BANK31压缩数据依次解压缩。
综上所述,本发明属于开发大型嵌入式程序***,将执行代码进行合理压缩和解压缩,装入程序存储器,使相同的程序存储器装入更多的执行代码,实现更多的功能,也可以大大降低程序存储器设备空间,减低***成本。

Claims (6)

1.一种嵌入式程序代码的压缩方法,其特征在于,包括:
微控制单元对程序代码进行编译,将关于芯片初始化和电源管理部分的内核程序代码数据集中放入代码组区域的BANK0代码组区,将其它一些功能代码装入代码组区域的BANK1~BANK31区域;
连接程序存储器;
在编译和连接过程中对BANK1~BANK31区域的代码进行压缩;
输出可执行的程序到所述程序存储器。
2.如权利要求1所述的方法,其特征在于,所述编译采用游程编码(RLE,Run LengthEncoding)的算法。
3.一种嵌入式程序代码的解压缩方法,其特征在于,包括:
微控制单元从程序存储器装入BANKO执行程序;
***初始值;
所述微控制单元从所述程序存储器装入BANK(1-31)解压缩;
在嵌入程序正常运行过程中,所述微控制单元从所述程序存储器读入BANK1~BANK31的压缩数据解压到连接双倍速率同步动态随机存储器的运行区;
所述微控制单元进行主循环。
4.如权利要求3所述的方法,其特征在于,所述微控制单元进行主循环后,所述方法还包括:
所述微控制单元还在空闲段里依次从所述程序存储器读入BANK1~BANK31压缩数据依次解压缩。
5.一种嵌入式***,其特征在于,包括:微控制单元和程序存储器,其中,所述微控制单元连接所述程序存储器;其中
所述微控制单元,用于对程序代码进行编译,将关于芯片初始化和电源管理部分的内核程序代码数据集中放入代码组区域的BANK0代码组区,将其它一些功能代码装入代码组区域的BANK1~BANK31区域;在编译和连接过程中对BANK1~BANK31区域的代码进行压缩,输出可执行的程序到所述程序存储器;
所述程序存储器,用于接收和存储所述微控制单元编译和压缩后的代码数据。
6.如权利要求5所述的***,还包括:与所述微控制单元连接的双倍速率同步动态随机存储器,其中,
所述双倍速率同步动态随机存储器,用于接收所述微控制单元解压缩后的代码数据,并进行运行。
CN200910188727.6A 2009-12-04 2009-12-04 一种嵌入式程序压缩方法,解压缩方法和嵌入式*** Active CN102087608B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910188727.6A CN102087608B (zh) 2009-12-04 2009-12-04 一种嵌入式程序压缩方法,解压缩方法和嵌入式***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910188727.6A CN102087608B (zh) 2009-12-04 2009-12-04 一种嵌入式程序压缩方法,解压缩方法和嵌入式***

Publications (2)

Publication Number Publication Date
CN102087608A true CN102087608A (zh) 2011-06-08
CN102087608B CN102087608B (zh) 2015-06-17

Family

ID=44099427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910188727.6A Active CN102087608B (zh) 2009-12-04 2009-12-04 一种嵌入式程序压缩方法,解压缩方法和嵌入式***

Country Status (1)

Country Link
CN (1) CN102087608B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360381A (zh) * 2011-09-29 2012-02-22 深圳众为兴技术股份有限公司 一种对嵌入式程序进行无损压制的装置和方法
CN109709837A (zh) * 2018-11-23 2019-05-03 上海琪埔维半导体有限公司 一种适用于单片机芯片的数据处理方法
CN116775136A (zh) * 2023-05-11 2023-09-19 广州南网科研技术有限责任公司 嵌入式操作***压缩存储和引导实现方法、设备和介质
US12008363B1 (en) 2021-07-14 2024-06-11 International Business Machines Corporation Delivering portions of source code based on a stacked-layer framework

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4944686B2 (ja) * 2007-06-28 2012-06-06 ソニーモバイルコミュニケーションズ株式会社 ソフトウェア更新方法および携帯端末装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360381A (zh) * 2011-09-29 2012-02-22 深圳众为兴技术股份有限公司 一种对嵌入式程序进行无损压制的装置和方法
CN102360381B (zh) * 2011-09-29 2014-03-12 深圳众为兴技术股份有限公司 一种对嵌入式程序进行无损压制的装置和方法
CN109709837A (zh) * 2018-11-23 2019-05-03 上海琪埔维半导体有限公司 一种适用于单片机芯片的数据处理方法
US12008363B1 (en) 2021-07-14 2024-06-11 International Business Machines Corporation Delivering portions of source code based on a stacked-layer framework
CN116775136A (zh) * 2023-05-11 2023-09-19 广州南网科研技术有限责任公司 嵌入式操作***压缩存储和引导实现方法、设备和介质
CN116775136B (zh) * 2023-05-11 2024-04-26 广州南网科研技术有限责任公司 嵌入式操作***压缩存储和引导实现方法、设备和介质

Also Published As

Publication number Publication date
CN102087608B (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
CN106537327B (zh) 快闪存储器压缩
CN104471547B (zh) 数据压缩及管理
CN104331269B (zh) 一种嵌入式***可执行代码压缩方法及代码解压缩***
CN103620564B (zh) 用于存储器设备的数据压缩和紧缩
CN102087608A (zh) 一种嵌入式程序压缩方法,解压缩方法和嵌入式***
US20140281302A1 (en) Multiple stream compression and formatting of data for data storage systems
KR102217966B1 (ko) 스토리지 드라이브의 비휘발성 반도체 메모리에 그리고 상기 비휘발성 반도체 메모리로부터 데이터를 전달하기 위해 디스크립터들을 생성하는 장치 및 방법
CN105280238A (zh) 用来控制一记忆装置的方法以及记忆装置与控制器
US8706953B2 (en) Data storage device and method performing background operation with selected data compression
EP2752760A2 (en) Method of compressing data and devices for performing the same
CN102339641A (zh) 检错/纠错校验模块及该模块读写数据的方法
US9244836B2 (en) Flash memory organization for reduced failure rate
CN100377086C (zh) 嵌入式***中直接从文件***运行程序的实现方法
CN104425014B (zh) 序列式nand型闪存、闪存装置及其操作方法
KR101386013B1 (ko) 하이브리드 스토리지 장치
CN101373436B (zh) U盘上数据自动压缩和解压缩的方法
CN105337617B (zh) 一种fsn文件高效压缩方法
CN102136270B (zh) 一种音频解码方法及装置
CN117075810B (zh) 一种基于zns固态硬盘的数据管理方法
CN102792296A (zh) 移动终端中请求页面调度方法、控制器以及移动终端
CN103744965A (zh) 一种简易的多平台个人化智能卡方法
US20170293568A1 (en) Wear leveling in non-volatile memories
CN105224503A (zh) 一种增加fpga动态配置可选程序数量的电路
CN102708081B (zh) 用户可编程的plc串口通讯扩展模块
CN105335096A (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
TR01 Transfer of patent right

Effective date of registration: 20200708

Address after: 23 / F, Guangdong hi tech District

Patentee after: Shenzhen Konka Holding Group Co.,Ltd.

Address before: 518055 No. 9008 Shennan Avenue, Shenzhen, Guangdong, Nanshan District

Patentee before: KONKA GROUP Co.,Ltd.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: 518057 23rd floor, Konka R & D building, No. 28, Keji South 12th Road, high tech Zone, Yuehai street, Nanshan District, Shenzhen, Guangdong

Patentee after: Shenzhen Konka Holding Group Co.,Ltd.

Country or region after: China

Address before: 518057 23rd floor, Konka R & D building, No. 28, Keji South 12th Road, high tech Zone, Yuehai street, Nanshan District, Shenzhen, Guangdong

Patentee before: Shenzhen Konka Holding Group Co.,Ltd.

Country or region before: China