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 堆溢出问题

Other Parts Discussed in Thread: TMS320C6727B

今天进行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能稳定的工作。

    程序是在片内还是在片外运行的?

  • 谢谢回复,一共做了5块板子,只有一块板子有这种故障,软件都是在片内RAM运行的,请问您说的这几个信号主要检测什么内容,异常情况的特点是什么,我是做软件的不太懂,谢谢了

  • 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。

    最后检查一下板子有没有虚焊的地方。

  • 谢谢解答,回头测测这几个信号,我想问问如果这些信号不满足手册要求,会导致软件运行时空间释放异常,导致堆溢出吗,谢谢了

  • 因为你是五块板子有1块出现问题,更倾向于硬件的不稳定引起代码问题。

  • 谢谢,但是也没法理解在出问题的板子上,为什么软件稍加修改重新编译后又不出故障了

x 出现错误。请重试或与管理员联系。