在使用FFTC工程移植到项目里面的时候,运行时出现了以下问题:
maxReqBufferLen是进行FFT运算之前申请的缓存,这个没错吧,就是在申请缓存的时候出问题了,maxReqBufferLen要么申请的不够(就是跟我单独运行FFTC工程的时候不一样,完全一样的代码,只是做了移植),要么申请出错,错误如下:
初步怀疑是堆栈内存不足导致,后面又配置了一下heapMemParams1.size= 8192 * 25;改成8192 * 100,甚至变成8192 * 500,还是不行,是不是因为描述符分配出错导致,因为在调试的时候进到函数里面,就是在申请描述符的时候出问题的,描述符指向的数据buff内存不足,因此导致申请失败,自然就无法计算FFT,这个问题怎么解决呢?单独运行FFTC工程的时候是没问题的。另外堆栈内存有时候只能设置成8192 * 100,往上加的时候就出错,有时候只能设置成8192 * 500,都是同样的工程。
还有一个问题是基于帖子http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/p/93058/239406.aspx#239406的,获取FFT结果的时候要用到信号量,一方面是怎么去掉?另一方面要用信号量就必须在任务里面调度FFTC处理,否则会出错,在移植后的工程里面,我就是在任务里面调度的,还是会报这个错误,说must be call from a task。请问是什么原因?
Allen35065:
FFTC的操作,建议你参考首页STK用CSL来做,比较容易控制各个环节的操作;
你的问题都是内存不足引起的,但是这个和你的工程设置相关,不好定位。