[发明专利]信号处理算法中的动态内存处理操作的方法及装置无效
申请号: | 200810104872.7 | 申请日: | 2008-04-24 |
公开(公告)号: | CN101266540A | 公开(公告)日: | 2008-09-17 |
发明(设计)人: | 邓昊;冯宇红 | 申请(专利权)人: | 北京中星微电子有限公司 |
主分类号: | G06F9/34 | 分类号: | G06F9/34 |
代理公司: | 北京同达信恒知识产权代理有限公司 | 代理人: | 郭润湘 |
地址: | 100083北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 信号 处理 算法 中的 动态 内存 操作 方法 装置 | ||
技术领域
本发明属于数字信号处理领域,特别涉及信号处理算法中的动态内存处理操作的方法及装置。
背景技术
数字信号处理算法的核心实现代码中经常包含动态内存的分配和释放操作,这些操作在参考代码中一般用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平台上的移植为例)
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中星微电子有限公司,未经北京中星微电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810104872.7/2.html,转载请声明来源钻瓜专利网。