This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
今天进行C6727调试时发现是堆溢出了,是在每秒周期进行矩阵求逆的时候,感觉上次malloc申请的堆的空间没有释放成功,重新申请新的堆空间,堆的空间占用越来越大,直到溢出了
问题是相同的程序在同一批电装的另外一块板子上运行的时候,没有问题,释放成功,堆空间占用一直较小,出现故障的板子上软件稍作修改,加几句无关的代码重新编译故障也消失了,求逆函数是封装的库函数,使用源代码运行,故障也消失了。请教这是什么原因。
heap 大小0x1000 封库时使用了-o3编译选项,函数代码如下
int brinv(double a[], int n)
{ int *is,*js,i,j,k,l,u,v;
double d,p;
is=malloc(n*sizeof(int)); // n的大小为6
js=malloc(n*sizeof(int)); // n的大小为6
/***********
求逆运算代码
*************/
free(is); free(js);
return(1);
}
请问是做了几块板子有这个问题?请量一下oscin, reset和power supply是否都正确以确保DSP能稳定的工作。
程序是在片内还是在片外运行的?
Reset信号和OSCIN/CLKIN的时序要满足datasheet上的要求,RESET信号的低电平有效时间从供电电源和CLKIN都稳定后开始算。
Table 4-41. CLKIN Timing Requirements
Table 4-1. Reset Timing Requirements
http://www.ti.com/lit/ds/symlink/tms320c6727b.pdf
检查一下PLL Filter电路Figure 4-44. PLL Power Supply Filter
CVDD, DVDD的纹波是否在手册范围内4.3 Recommended Operating Conditions。
最后检查一下板子有没有虚焊的地方。