关于DSP中的动态内存

来源:互联网 发布:国产网络科幻动漫电影 编辑:程序博客网 时间:2024/06/04 06:52

最近一直在DSP上实现OI算法(正交迭代),由于OI算法中涉及到很多矩阵运算,并且在C语言中,又没有像Matlab中那么多矩阵操作的函数,所以实现起来比较麻烦。在DSP实现这个算法时,可以有几个方法去实现。

 

第一种:将Matlab和DSP连接起来;

第二种:将Opencv加载到DSP中(即emcv);

第三种:自己写矩阵运算的函数。

但由于本人用的板子的问题,前两种都运行不了,所以采用自己写矩阵操作函数。首先定义了一个矩阵结构体,然后声明为指针,在后面很多的矩阵操作函数中都是传递矩阵地址来完成。

在本算法中特别是在矩阵操作这块涉及到很多malloc函数,虽然很多人不建议在DSP中使用malloc函数,但是由于用到很多矩阵,要每个都去静态分配地址的话会很乱,所以还是使用了malloc函数。刚开始时,我是在VC6.0中实现的,没感觉到malloc会出现什么问题,当我把程序拷到DSP中时,就出现问题了,就是动态内存不够用,所以一直在寻找如何增加动态内存。去网上找相关的信息却很少,可能这个问题很简单,但我问过周围的同学,却都没遇到过,所以还是自己去寻找解决办法。最后不经意间看到了一个解决办法:

 

我用的是CCS2.0,在菜单Project->Build Options->Linker->Heap size。改这个大小就可以了。

 

但是在运行时发现malloc函数确实存在问题,就是释放后的资源怎么能在整合成比较大的块,这是一个需要优化的地方。在寻找解决办法……

 

而对于DSP/BIOS中关于动态内存问题的解决办法,可以参考

http://processors.wiki.ti.com/index.php/Creating_Dynamic_Objects_and_Threads_in_BIOS#Specify_placement_of_DSP.2FBIOS_objects

 

原创粉丝点击