一种数字信号处理通讯应用系统内存保护方法

文档序号:6403905阅读:128来源:国知局
专利名称:一种数字信号处理通讯应用系统内存保护方法
技术领域
本发明涉及在通信领域DSP(Digital Signal Processing,数字信号处理)嵌入式应用系统中的内存保护方法。
背景技术
随着GSM、2.5G、3G和无线局域网技术的快速发展,实时DSP应用系统已经广泛地应用在信号处理的各个方面。而新一代的DSP处理器,如TI公司的TMS320C6000系列,具有优化的CPU结构、丰富的外设接口、多级流水机制,其处理能力可以达到4800MIPS(百万指令每秒)或更高,被广泛地应用在多通道无线和有线通讯领域。
在通讯系统功能实现过程中,由于数据处理的需要,必然会涉及到内存单元的申请和释放。由于其实时性、快速处理的要求以及DSP处理器的资源限制,不太可能采用诸如通用商业操作系统所采用的内存管理单元和保护机制。DSP系统一般使用实际存储器管理策略。采用简单、快速的内存分配方案。对内存的访问是直接的,它对地址的访问往往不需要经过内存管理单元,而是直接送到地址线上输出,所有程序中访问的地址都是实际的物理地址,而且大多数DSP应用系统对内存空间没有保护机制,各个进程实际上共享一个运行空间。在进程执行过程中,需要使用系统为其分配地址空间,在进程终止后或其所使用的内存单元不再需要时,进程需要释放所申请的存储单元。系统对进程所使用的存储单元没有保护措施,如进程程序在运行中使用了非法地址空间或对某些存储单元执行了非法地址操作,则可能会引起不可预知的后果。

发明内容
本发明的目的就是为了解决上述问题,提出一种简便高效的数字信号处理通讯应用系统内存保护方法,以提高系统稳定性。
本发明的技术解决方案一种数字信号处理通讯应用系统内存保护方法,其特征在于它采用如下步骤实现a.定义相应的数据处理所需要的内存段;b.建立内存操作锁,用于在对指定内存段的内存单元进行操作时实现互斥机制;c.定义相应的数据结构作为头指针用于内存单元的分配和释放;d.定义指针越界检验单元的长度和填充值;e.申请内存单元,添加头指针到所申请的内存单元的头部,添加越界检验单元到所分配的内存单元的尾部;f.释放内存单元,利用所定义的内存单元的头指针数据结构检查待释放内存单元指针参数的合法性,利用尾部的越界检验单元检查待释放的内存单元是否越界。
本发明方法在DSP应用系统的内存缓冲池的设计时,根据系统设计的要求,使用DSP存储器管理器,定义和实际物理内存空间相对应的存储器段,分配不同目的的数据缓存池到相应的存储器段。存储器管理器管理各存储器段,在存储器段中分配和释放内存单元,限制相应数据存储单元的操作范围,减少缓存池越界的可能性。同时建立内存操作锁,实现对片内和片外的存储单元操作时的互斥机制,防止对内存单元的同时操作。定义一个相应的数据结构用于内存单元的申请,将此数据结构的实例作为头再加到所分配的地址指针的前面。在所分配的地址指针之后加入预留字段,添入越界检验值。在内存单元释放时,利用此地址指针的头指针数据结构,判断被释放地址空间的指针的合法性;利用地址指针尾部的保护字段判断地址指针结束符是否遭到破坏,监测在系统内存分配和释放过程中可能出现的错误。由此引入内存保护机制,减少内存单元出错概率,并能快速发现可能发生的内存使用错误。本发明方法使得DSP应用系统的内存缓存池设计简单、高效,提高系统的可靠性。


图1是本发明的初始内存缓存池定义示图。
图2是本发明中申请内存单元添加的头指针数据结构和尾部检验单元的处理流程图。
图3是本发明中释放内存单元时的检验流程图。
具体实施例方式
DSP实时应用系统的稳定性、高效性和可靠性与系统的内存管理、内存单元的有效分配和释放有着必然的关系。因此设计DSP应用系统,需要考虑内存缓存池的设计和采用相应的内存保护机制;使存储资源能满足系统正常的内存分配的需要;并能观察内存的使用情况,监测内存使用中可能出现的异常情况;防止内存越界,占用其它程序的运行地址空间,导致其它程序的运行异常,破坏系统的正常工作或引起系统崩溃。
本发明方法在整个存储单元操作中,使用存储器管理器实现所定义的存储器段的管理,使用锁实现存储单元的独占操作。并定义数据结构用于内存操作的信息统计,监测内存的使用率和可能出现的内存故障。其具体实现步骤为1.DSP应用系统一般包括片内和片外存储器;片内存储器存取速度较快,但容量较小;片外存储器存取速度较慢,但容量较大。根据系统设计时对存取速度和内存单元大小的需要,定义相应的数据处理所需要的片内和片外内存段。
2.建立内存操作锁,用于在对指定内存段的内存单元进行操作时实现互斥机制。
3.根据实时系统设计的需求,要使所采用的内存保护机制对系统实时性的影响尽可能小的原则,定义相应的数据结构作为头指针用于内存单元的分配和释放。
4.定义指针越界检验单元的长度和填充值。
5.1.在内存单元申请时,添加头指针到所申请的内存单元的头部。
5.2.添加越界检验单元到所分配的内存单元的尾部。
6.1.在释放内存单元时,利用所定义的内存单元头指针数据结构检查待释放内存单元指针参数的合法性。
6.2.利用尾部的越界检验字单元检查待释放的内存单元是否越界。
下面结合附图对本发明技术方案的实施作进一步的详细描述首先说明在系统运行前,图1完成内存管理和保护机制所需要的初始设置。根据系统要求的内存缓冲池的大小和运行性能的要求,在DSP的片内或片外存储空间定义相应的内存段,设定内存段的起始地址、长度和相关属性。在所创建的内存段中分配相应的数据处理的内存缓存池。在系统中创建获取内存操作锁,用于在内存单元的操作互斥保护。
图2说明在申请内存时,头指针数据结构和尾部越界检验单元的处理方法。定义头指针数据结构TUBHead为typedef struct tagTUBHead{分配地址大小(dwAlloc_Mem_Size;)起始地址指针(dwStart_Addr;)}TUbHead;dwAlloc_Mem_Si_ze是数据处理需要分配的内存的大小,dwStart_Addr是除去地址指针头部后实际返回给上层调用的存储单元位置。定义的尾部越界检验单元长度是RESERVE_LEN,其填充的值为BYTE_FILL_VALUE,该值要和可能出现的存储单元正常取值相区别。
在预申请一个长度dwSize的内存单元时,实际分配的内存单元的长度是dwSize+TubHead的长度+越界检验单元长度。具体操作流程如下1)获取内存操作锁取得对内存单元操作权限。
2)实际分配dwSize+TubHead的长度+越界检验单元长度大小的内存单元。
3)使dwStart_Addr指向分配的指针单元偏移TubHead长度的位置。
4)在分配的指针单元的尾部RESERVE_LEN长的存储单元添入BYTE_FILL_VALUE的值。
5)返回dwStart_Addr给上层调用。
6)释放内存操作锁。
图3显示了在内存单元释放时的操作流程。
1)获取内存操作锁取得对内存单元操作权限。
2)首先进行输入待释放的起始地址指针的合法性检查,判断起始地址指针是否大于TubHead的长度,如不大于则结束。
3)如大于则起始地址指针偏移头指针数据结构TubHead的长度,即,偏移后指针=起始地址指针-TubHead的长度。
4)通过偏移后指针数据结构的dwStart_Addr的值判断输入的地址指针是否是有效,如dwStart_Addr的值等于输入的地址指针的值则有效,继续下一步,如无效则结束。
5)根据尾部越界检验单元的填充值判断待释放的内存单元尾部是否越界,如越界则记录错误统计信息。
6)如不越界则置头指针数据结构dwAlloc_Mem_Size和起始地址指针dwStart_Addr为零,释放内存单元,。
7)释放内存操作锁。
本发明提出了在DSP实时应用系统中,集合DSP提供的功能,实现一种简单而有效的内存保护方法。此方法通过增加地址指针的头数据结构和越界检验单元,监测在地址分配和释放时可能发生的错误。而且该方法操作简单快速,对系统性能影响极小。在仅仅增加很少的内存单元开销,保证系统实时性的基础上,提高了DSP应用系统的稳定性和可靠性。
权利要求
1.一种数字信号处理通讯应用系统内存保护方法,其特征在于它采用如下步骤实现a.定义相应的数据处理所需要的内存段;b.建立内存操作锁,用于在对指定内存段的内存单元进行操作时实现互斥机制;c.定义相应的数据结构作为头指针用于内存单元的分配和释放;d.定义指针越界检验单元的长度和填充值;e.申请内存单元,添加头指针到所申请的内存单元的头部,添加越界检验单元到所分配的内存单元的尾部;f.释放内存单元,利用所定义的内存单元的头指针数据结构检查待释放内存单元指针参数的合法性,利用尾部的越界检验单元检查待释放的内存单元是否越界。
2.按权利要求1所述的一种数字信号处理通讯应用系统内存保护方法,其特征在于在所述定义相应的数据处理所需要的内存段是根据系统要求的内存缓冲池的大小和运行性能的要求,在数字信号处理的片内或片外存储器的存储空间定义相应的内存段,设定内存段的起始地址、长度和相关属性,在所创建的内存段中分配相应的数据处理的内存缓存池。
3.按权利要求1所述的一种数字信号处理通讯应用系统内存保护方法,其特征在于在所述申请内存单元包括e1)获取内存操作锁取得对内存单元操作权限;e2)实际分配预申请内存单元长度+头指针数据结构长度+越界检验单元长度的内存单元;e3)使起始地址指针指向分配的内存单元偏移头指针数据结构长度的位置;e4)在分配的内存单元的尾部添入越界检验单元的填充值;e5)返回起始地址指针给调用函数;e6)释放内存操作锁。
4.按权利要求3所述的一种数字信号处理通讯应用系统内存保护方法,其特征在于所述填充值要和可能出现的内存单元正常取值相区别。
5.按权利要求3所述的一种数字信号处理通讯应用系统内存保护方法,其特征在于在所述内存单元释放时按下述流程进行f1)获取内存操作锁取得对内存单元操作权限;f2)首先对待释放的起始地址指针的合法性检查,判断起始地址指针是否大于头指针数据结构的长度,如不大于则结束;f3)如大于则起始地址指针偏移头指针数据结构的长度,即偏移后指针=起始地址指针-头指针数据结构的长度;f4)通过偏移后头指针数据结构的值判断起始地址指针是否有效,如无效则结束,如有效则继续;f5)根据尾部越界检验单元的填充值判断待释放的内存单元尾部是否越界,如越界则结束;f6)如正常则设置头指针数据结构的内容为零,释放内存单元;f7)释放内存操作锁。
全文摘要
本发明涉及一种在通信领域DSP嵌入式应用系统中的内存保护方法,它在整个存储单元操作中,使用存储器管理器实现所定义的存储器段的管理,使用锁实现存储单元的独占操作。并定义数据结构用于内存操作的信息统计,通过增加地址指针的头数据结构和越界检验单元,监测内存的使用率和在地址分配及释放时可能发生的错误。本发明提出了在DSP实时应用系统中,集合DSP提供的功能,实现一种简单而有效的内存保护方法,该方法操作简单快速,对系统性能影响极小,在仅仅增加很少的内存单元开销,保证系统实时性的基础上,提高了DSP应用系统的稳定性和可靠性。
文档编号G06F9/50GK1584845SQ20041004487
公开日2005年2月23日 申请日期2004年5月28日 优先权日2004年5月28日
发明者袁乃华, 于学鸿, 李来水 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1