信号处理算法中的动态内存处理操作的方法及装置制造方法及图纸

技术编号:2825253 阅读:240 留言:0更新日期:2012-04-11 18:40
公开了一种数字信号处理算法中动态内存处理操作的方法及装置,为了解决现有技术中动态内存分配和释放操作不符合TI  XDAIS标准使得可靠性差的问题,本发明专利技术公开的方法包括:数字信号处理算法的外部主程序申请两块固定位置和尺寸的内存空间作为堆空间和栈空间;执行数字信号处理算法的核心实现代码时,在所述堆空间和栈空间内进行内存处理操作,正是由于执行数字信号处理算法的核心实现代码时,在主程序申请的固定位置和尺寸的堆空间和栈空间内进行内存处理操作,使得具有很好的可靠性。

【技术实现步骤摘要】

本专利技术属于数字信号处理领域,特别涉及信号处理算法中的动态内存处理操作的方法及装置
技术介绍
数字信号处理算法的核心实现代码中经常包含动态内存的分配和释放操作,这些操作在参考代码中一般用C的标准库函数实现,常用的库函数有malloc(),calloc(),free()和alloca()。高效,安全,灵活的在嵌入式平台上实现动态内存的分配和释放,是这些算法成功的移植到这些平台的前提。直接使用C标准库函数,由相应的C编译器负责它们的具体操作是最简单,最直接的实现方式,但是多数嵌入式处理器的C编译器都不支持alloca(),且手工实现与C标准库函数完全兼容的alloca()有相当的复杂度。此外出于成本和系统复杂度的考虑,嵌入式系统中可能没有具备内存管理能力的操作系统,而是根据自身系统的特点以一种特定方式实现了简单的malloc()和free()函数。虽然可以基于malloc()实现其它内存分配函数,但在数字信号处理算法的核心代码中包含内存分配和释放操作是不符合算法代码移植到嵌入式系统的一般实现原则(即:TI XDAIS标准)的。这种实现机制主要的缺点如下:可靠性差:系统没有实现对内存操作的严格控制,无法知道算法的核心实现代码在实际运行中究竟使用了多少堆栈空间,是否有足够多的资源满足动态内存的需求。如果算法核心代码中存在内存泄漏,或者需要的堆栈空间超过可用系统资源,出现内存操作失败或错误,会导致运算结果错误,系统崩溃等严重后果。-->
技术实现思路
为了解决现有技术中动态内存分配和释放操作不符合TI XDAIS标准使得可靠性差的问题,本专利技术实施例提供了信号处理算法中的动态内存处理操作的方法,应用于嵌入式平台上,包括:数字信号处理算法的外部主程序申请两块固定位置和尺寸的内存空间作为堆空间和栈空间;执行数字信号处理算法的核心实现代码时,在所述堆空间和栈空间内进行内存处理操作。同时本专利技术实施例还提供一种信号处理算法中的动态内存处理操作的方法及装置,应用于嵌入式平台上,包括:申请模块:用于数字信号处理算法的外部主程序申请两块固定位置和尺寸的内存空间作为堆空间和栈空间;处理模块:用于执行数字信号处理算法的核心实现代码时,在所述堆空间和栈空间内进行内存处理操作。由上述本专利技术提供的具体实施方案可以看出,正是由于执行数字信号处理算法的核心实现代码时,在主程序申请的固定位置和尺寸的堆空间和栈空间内进行内存处理操作,使得本方案具有很好的可靠性。附图说明图1为本专利技术提供的第一实施例方法流程图;图2为本专利技术提供的第二实施例系统结构图。具体实施方式本专利技术公开的信号处理算法中的动态内存处理操作的方法应用于嵌入式平台上,其基本思想是数字信号处理算法的核心实现代码中不包含任何真实的-->内存分配和释放操作,由调用算法核心实现代码的外部主程序提供大小固定的两块分别作为堆空间和栈空间的可用内存空间。执行核心实现代码时,在主程序申请的堆空间和栈空间内进行内存处理操作。核心实现代码中用到的动态内存均取自这两块内存空间,不直接进行系统内存分配和释放操作。算法核心代码将这两块空间的首地址指针和尺寸存于特定的非静态堆、栈信息数据结构体中。核心代码中采用前、后向移动数据地址指针和增、减内存使用量计数器的方式来模拟内存的分配和释放。这种实现方法符合TI XDAIS标准,明确了算法的资源需求。因此算法的实现代码具有很好的可靠性。进一步检测内存空间的使用量。一旦出现内存需求量超出实际拥有量的情况,停止内存分配,退出算法核心代码的执行或开始新的执行周期。本专利技术根据内存空间的生命周期来区分堆空间和栈空间。堆空间中存放的各种数据占用固定尺寸,固定位置的内存空间,算法核心代码的执行过程中不对堆空间中的数据进行释放和搬移操作;栈空间的释放采取恢复栈信息结构体数据来完成,且根据函数本身的执行过程和调用情况采用不同的实现方式,极大的减少了实现复杂度。本专利技术的这种实现机制符合TI XDAIS标准,具有可靠性高,移植性好,可重入性好,复杂度低的特点。本专利技术提供的第一实施例是信号处理算法中的动态内存处理操作的方法,图1是本专利技术提出的实施方案流程框图,其中虚线框中的操作由算法代码完成,这里认为算法C代码以API的形式被外部主程序调用。(注:本专利技术的核心是一种实现机制,图中给出的框图只是起一个解释性的作用。本专利技术以Ogg Vorbis解码器在ARM平台上的移植为例)首先统计出算法核心代码在执行过程中需要的堆,栈空间尺寸,主程序据此申请两块固定尺寸的内存空间,分别作为堆空间和栈空间,算法代码中的堆,栈空间均在这两块内存空间中分配得到。而后初始化堆,栈数据结构,记录这两块内存空间的首地址和尺寸。执行算法核心代码时,根据需求进行堆/栈空间-->的分配和栈空间的释放。分配其实是在堆空间或栈空间中划定一块空闲区域,指定某个数据项使用该块区域,也即指定数据项的存放空间的起始地址和终止地址。各数据项的终止地址即是下一个数据项的起始地址。释放即是通知程序其它数据项可以存放在这块内存空间中。通过内存空间使用量计数器监测内存空间供需关系,如出现堆空间不够用的情况,停止算法代码的执行,回到主程序并释放申请的两块内存空间,结束主程序的运行。如出现栈空间不够用的情况,释放所有分配的栈空间,终止算法代码的本次执行周期,启动新的执行周期。算法代码执行完毕后,由主程序释放申请的两块内存空间后,结束主程序的运行。方法流程如图1所示,包括:步骤101:统计堆/栈空间需求。本专利技术提出的方案符合TI XDAIS标准,即由主程序分配两块固定尺寸的内存空间,分别作为堆,栈空间,数字信号处理算法的核心实现代码中的内存空间都在这两块空间中分配得到,不直接从系统获取动态内存。因此需要统计核心实现代码的堆,栈空间需求量。首先考察参考代码,区分数据内存分配应在两块内存空间中的哪块中进行。认为使用alloca()分配得到的内存应在栈空间中获得。对于使用malloc()和calloc()分配得到的内存,如果是算法的工作空间,在多个函数和处理模块中使用,且尺寸相对固定,则认为在堆空间获得。如果它们只是在某个函数的处理过程中申请的的临时空间,在这个函数退出时即行释放,认为此类临时内存空间应在栈空间中获得。这样划分堆,栈空间的目的是在核心实现代码的执行过程中,只进行栈空间的释放操作,不进行堆空间的释放操作,从而大幅降低内存操作函数的复杂度。完成数据项分配空间的划分后,需要统计两块空间总的需求量。动态内存的分配具有尺寸随需而定的特点,核心实现代码的每次执行过程中需要的动态内存尺寸会不同。例如Ogg Vorbis解码器在解不同版本的编码器编出的码流时,需要的堆,栈空间尺寸相别很大。一种方法是考察算法的执行过程,确定某数-->据项可能的最大内存需求。以解码器中经常存在的内存分配操作为例:/*memory allocation*/int n=readbits(10);int*p1=(int*)malloc(sizeof(int)*n);上述伪码中,readbits(n)表示从码流中读取n bits的操作。对于ARM系统,一个int型数据字长为4Bytes,则数据项p1的最大堆空间需求为4kBytes。(注:如无特别说明,动态内存需求量均本文档来自技高网...

【技术保护点】
一种数字信号处理算法中动态内存处理操作的方法,应用于嵌入式平台上,其特征在于,包括:    数字信号处理算法的外部主程序申请两块固定位置和尺寸的内存空间作为堆空间和栈空间;    执行数字信号处理算法的核心实现代码时,在所述堆空间和栈空间内进行内存处理操作。

【技术特征摘要】
1、一种数字信号处理算法中动态内存处理操作的方法,应用于嵌入式平台上,其特征在于,包括:数字信号处理算法的外部主程序申请两块固定位置和尺寸的内存空间作为堆空间和栈空间;执行数字信号处理算法的核心实现代码时,在所述堆空间和栈空间内进行内存处理操作。2、如权利要求1所述的方法,其特征在于,所述进行内存处理操作具体为:在所述堆空间进行堆空间分配,在所述栈空间进行栈空间的分配和释放。3、如权利要求2所述的方法,其特征在于,在所述堆空间进行堆空间分配具体为:堆空间中存放的各种数据项占用固定尺寸,固定位置的内存空间;且算法核心代码的执行过程中不对堆空间中的数据项进行释放和搬移操作。4、如权利要求2所述的方法,其特征在于,核心实现代码通过控制数据项地址指针的移动和增减内存使用量计数器值模拟栈空间分配和释放,并通过内存使用量计数器进行内存使用量的监测。5、如权利要求4所述的方法,其特征在于,核心实现代码中申请栈空间的函数结束运行时,由所述申请栈空间的函数负责释放栈空间。6、如权利要求4所述的方法,其特征在于,由申请和使用栈空间的函数的调用函数负责释放栈空间。7、如权利要求1所述的方法,其特征在于,在数字信号处理算法的外部主程序分配固定位置和尺寸的堆空间和栈空间步骤前还包括:确定核心实现代码在执行过程中需要堆空间和栈空间大小;外部主程序根据所确定的堆空间和栈空间大小进行内存空间分配。8、如权利要求7所述的方法,其特征...

【专利技术属性】
技术研发人员:邓昊冯宇红
申请(专利权)人:北京中星微电子有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利