一种嵌入式程序压缩方法,解压缩方法和嵌入式系统的制作方法

文档序号:6581258阅读:238来源:国知局
专利名称:一种嵌入式程序压缩方法,解压缩方法和嵌入式系统的制作方法
技术领域
本发明涉及嵌入式程序处理技术,尤其涉及一种嵌入式程序压缩方法,解压缩方 法和嵌入式系统。
背景技术
51系列单片机是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM) FalshProgrammable and Erasable Read Only Memory)的低电压,高性能 CM0S8 位微处理 器,俗称单片机。存储器是单片机中非常重要的和不可或缺的部件,单片机的工作离不开程序,而 程序正是存放在程序存储器中的。同样,程序的运行少不了对数据的处理,各种常数、变量、 中间数据、运行状态、运算结果,都是存放在数据存储器中的。尽管程序存储器和数据存储器同是存储器,由于用途不同,因而它们对于存储器 性能的要求也不相同。程序存储器用于存放程序、表格和固定的常数,单片机工作时只从 中提取指令或常数,通常不会对其内容进行修改,因此对其的基本要求是。必须确保存储 内容长期不变,断电也不丢失,所以程序存储器用的是非易失性只读存储器(Non-Volatile Read OnlyMesmory, NVR0M);而数据存储器是用来存储常数、变量、中间数据、运行状 态、运算结果等的,也就是说,数据存储器所存放的内容在程序运行中要经常改变,即对 数据存储器的要求是要能够随时快速方便地读写,所以数据存储器用的是随机存储器 (Random—AccessMemory, RAM)。单片机中常用的程序存储器有掩膜型只读存储器MR0M、一次性可编程存储器 0TPR0M、紫外线可擦除可编程只读存储器EPROM和闪速存储器Flash Memory等四种。由于51系列单片机16位地址寄存器的限制,外部程序存储器和外部数据存储器 的寻址范围都是64KB。分组连接定位器BL51允许生成代码长度大于64KB的8051目标程 序,它可以管理一个公共区域(C0MM0NAREA)和最多32个代码组区域(BANKAREA),每个代码 组最大为64KB,所以这就决定可执行代码最大不能超过2MB(32*64KB)。随着8051系列上的应用开发不断增加,而且应用规模比以往大,可执行代码往往 上几MB。对于8位的单片机来说,由于其容量的限制,在开发较大型程序的时候,因为程序 存储器和数据存储器容量都比较小,而不得裁减应用功能。因此,随着越来越多的存储程序的需求,如何充分利用现有的程序存储器和数据 存储器容量,使产品更具有市场竞争力,成为急待解决的问题。

发明内容
本发明目的在于提供一种嵌入式程序压缩方法,解压缩方法和嵌入式系统,充分 利用现有的程序存储器和数据存储器容量,以适应越来越多的程序存储。为解决本发明的技术问题,本发明公开一种嵌入式程序代码的压缩方法,其中,包 括
微控制单元对程序代码进行编译,将关于芯片初始化和电源管理部分的内核程序 代码数据集中放入代码组区域的BANKO代码组区,将其它一些功能代码装入代码组区域的 BANKl BANK31 区域;连接程序存储器;在编译和连接过程中对BANKl BANK31区域的代码进行压缩;输出可执行的程序到所述程序存储器。较优地,所述编译采用游程编码(RLE,Run Length Encoding)的算法。为解决本发明的技术问题,本发明还公开一种嵌入式程序代码的解压缩方法,其 中,包括微控制单元从程序存储器装入BANKO执行程序;系统初始值;所述微控制单元从所述程序存储器装入BANK(1-31)解压缩;在嵌入程序正常运行过程中,所述微控制单元从所述程序存储器读入BANKl BANK31的压缩数据解压到连接双倍速率同步动态随机存储器的运行区; 所述微控制单元进行主循环。较优地,所述微控制单元进行主循环后,所述方法还包括所述微控制单元还在空闲段里依次从所述程序存储器读入BANKl BANK31压缩 数据依次解压缩。为解决本发明的技术问题,本发明还公开一种嵌入式系统,其中,包括微控制单 元和程序存储器,其中,所述微控制单元连接所述程序存储器;其中所述微控制单元,用于对程序代码进行编译,将关于芯片初始化和电源管理部分 的内核程序代码数据集中放入代码组区域的BANKO代码组区,将其它一些功能代码装入代 码组区域的BANKl BANK31区域;在编译和连接过程中对BANKl 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,用于对程序代码进行编译,将关于芯片初始化和电源管理部 分的内核程序代码数据集中放入代码组区域的BANKO代码组区,将其它一些功能代码装入 代码组区域的BANKl BANK31区域;在编译和连接过程中对BANKl BANK31区域的代码 进行压缩,输出可执行的程序到所述程序存储器23 ;所述程序存储器23,用于接收和存储所述微控制单元21编译和压缩后的代码数 据。所述双倍速率同步动态随机存储器22,用于接收所述微控制单元21解压缩后的 代码数据,并进行运行。嵌入MCU21对于嵌入式可执行程序是无法进行主体程序进行压缩。但嵌入式程序 里的关于芯片初始化和电源管理部分等内核程序代码量比较小,大概几十KB,加上解压缩 几KB代码量,对于一个代码组区域64KB空间足够。因此,可以将此部分关于芯片初始化和 电源管理部分等内核程序代码数据集中放入BANKO代码组区,确保嵌入式系统正常运行, 将其它一些功能代码装入BANKl BANK31区域。如图3所示,为本发明一实施例的一种嵌入式程序代码的压缩方法流程示意图, 在编译连接过程中对BANKl BANK31进行压缩,主要可以如下所述。步骤31,MCU21进行程序代码的编译;步骤32,MCU21进行BANK(1_31)数据的压缩,采用RLE压缩方法,将关于芯片初 始化和电源管理部分等内核程序代码数据集中放入BANKO代码组区,确保嵌入式系统正 常运行,将其它一些功能代码装入BANKl BANK31区域,在编译过程中对代码组区域的 BANKl BANK31区域的代码进行压缩。步骤33,MCU21连接程序存储器23,且在连接过程中对代码组区域的BANKl BANK31区域的代码进行压缩;步骤34,输出可执行的程序。例如,输出可执行的程序到连接的所述程序存储器23。
如图4所示,为本发明实施例的一种嵌入式程序代码的解压缩方法的流程示意 图,可以如下所述。步骤41,嵌入MCU21从程序存储器23装入BANKO执行程序;步骤42,系统初始值;步骤43,嵌入MCU21从程序存储器装入BANK (1_31)解压缩;在嵌入程序正常运行过程中,嵌入MCU21从程序存储器23里读入BANKl BANK31 的压缩数据解压到存储器DDR22的运行区,其中,系统需要花费几秒种解压时间。步骤44,嵌入MCU21进行主循环。如图5所示,为本发明另一实施例的一种嵌入式程序代码的解压缩方法的流程示 意图,可以如下所述。步骤51,嵌入MCU21从程序存储器23装入BANKO执行程序;步骤52,系统初始值;步骤53,嵌入MCU21从程序存储器装入BANK(1_31)解压缩;在嵌入程序正常运行过程中,嵌入MCU21从程序存储器23里读入BANKl BANK31 的压缩数据解压到存储器DDR22的运行区,其中,系统需要花费几秒种解压时间。步骤54,嵌入MCU21进行主循环。步骤54执行完后,嵌入式系统的所述微控制单元21还可以在空闲段里依次从程 序存储器里23读入BANKl BANK31压缩数据依次解压缩。综上所述,本发明属于开发大型嵌入式程序系统,将执行代码进行合理压缩和解 压缩,装入程序存储器,使相同的程序存储器装入更多的执行代码,实现更多的功能,也可 以大大降低程序存储器设备空间,减低系统成本。
权利要求
1.一种嵌入式程序代码的压缩方法,其特征在于,包括微控制单元对程序代码进行编译,将关于芯片初始化和电源管理部分的内核程序代 码数据集中放入代码组区域的BANKO代码组区,将其它一些功能代码装入代码组区域的 BANKl BANK31 区域;连接程序存储器;在编译和连接过程中对BANKl BANK31区域的代码进行压缩;输出可执行的程序到所述程序存储器。
2.如权利要求1所述的方法,其特征在于,所述编译采用游程编码(RLE,Run LengthEncoding)的算法。
3.一种嵌入式程序代码的解压缩方法,其特征在于,包括微控制单元从程序存储器装入BANKO执行程序;系统初始值;所述微控制单元从所述程序存储器装入BANK (1-31)解压缩;在嵌入程序正常运行过程中,所述微控制单元从所述程序存储器读入BANKl BANK31 的压缩数据解压到连接双倍速率同步动态随机存储器的运行区;所述微控制单元进行主循环。
4.如权利要求3所述的方法,其特征在于,所述微控制单元进行主循环后,所述方法还 包括所述微控制单元还在空闲段里依次从所述程序存储器读入BANKl BANK31压缩数据 依次解压缩。
5.一种嵌入式系统,其特征在于,包括微控制单元和程序存储器,其中,所述微控制 单元连接所述程序存储器;其中所述微控制单元,用于对程序代码进行编译,将关于芯片初始化和电源管理部分的内 核程序代码数据集中放入代码组区域的BANKO代码组区,将其它一些功能代码装入代码组 区域的BANKl BANK31区域;在编译和连接过程中对BANKl BANK31区域的代码进行压 缩,输出可执行的程序到所述程序存储器;所述程序存储器,用于接收和存储所述微控制单元编译和压缩后的代码数据。
6.如权利要求5所述的系统,还包括与所述微控制单元连接的双倍速率同步动态随 机存储器,其中,所述双倍速率同步动态随机存储器,用于接收所述微控制单元解压缩后的代码数据, 并进行运行。
全文摘要
本发明公开一种嵌入式程序压缩方法,解压缩方法和嵌入式系统,包括微控制单元对程序代码进行编译,将关于芯片初始化和电源管理部分的内核程序代码数据集中放入代码组区域的BANK0代码组区,将其它一些功能代码装入代码组区域的BANK1~BANK31区域;连接程序存储器;在编译和连接过程中对BANK1~BANK31区域的代码进行压缩;输出可执行的程序到所述程序存储器。通过本发明,充分利用现有的程序存储器和数据存储器容量,以适应越来越多的程序存储。
文档编号G06F9/45GK102087608SQ20091018872
公开日2011年6月8日 申请日期2009年12月4日 优先权日2009年12月4日
发明者周波 申请人:康佳集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1