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.

program crashes performing FFT / IFFT

Other Parts Discussed in Thread: TMS320C6747, OMAP-L137

Hello,

I have a project, running a network and an audio task. The Audio task echos back the original sound on the left-ear-chanel, and on the right channel it performs a FFT and afterwards an IFFT and echos back the result of it, to compare the result to it's original.

I am using the FFT and IFFT Algorithms that are downloadable from TI  (  DSPF_sp_fftSPxSP_cn  and  DSPF_sp_ifftSPxSP_cn )

to do so i devided the input ( /32768) of the FFT and multiplied the result of the IFFT ( *32768)

The Program works fine in general. Music that is played by my PC is echoed back correct.  But a certain noise (performed of a Software on my PC, to notify me of a change) causes the whole program to crash, if the sound intensity of my PC is set high enough.

without performing the FFT / IFFT the crash does not appear and the progrm continues executing.

With FFT and IFFT, the program stops working, but CCS 3.3 thinks of the program still beeing executed. Only loading the Program to the board again allows me to perform the algorithm again.

Because the effect only occures at a certain sound and at a "needed" minimum noise-level, i could think of something like an overflow, or an to high/low variable-value to cause the trouble.

Is something like that effect known? Or could something else cause this effect ?

 

(I am using an OMAP-L137/TMS320C6747 FP StarterKit, CCS3.3 DspLib for my board and PSPdriver 1_20_00)

best Regards Rico

  • Rico,

    It should not be possible to "crash" the DSPLIB FFT/IFFT functions by passing them buffers of very large numbers.  Generally speaking, it's very hard to "overflow" a floating point algorithm (compared to fixed point algorithms).  Can you provide example data sets that cause this problem to occur in your application?  Ideally, I would like to see:

    1. Normal audio data that works fine in your application
    2. Problem audio data that causes your application to crash

    If you post this data, then I can try to reproduce the issue on my side.

    On a side note, I noticed that you are using the "natural C" version of the DSPLIB functions (i.e. *_cn).  The ASM-language versions of these functions will be much better optimized, so I would recommend switching over to DSPF_sp_fftSPxSP and DSPF_sp_ifftSPxSP as included in the pre-built .LIB file.

    One more thing: if you're using the DSP/BIOS audio drivers for C6747, be sure that you're aligning your data buffers on 128-byte boundaries.  If you don't, the driver can crash unexpectedly.

    Hope this helps.

  • Thanks for your Reply Joe

    i just found the reason, it really occured more easily, if the FFT was performed, but was a mistake of me and not an error using the FFT itself !

    (the reason i asked if the values could get out of some boundaries was, that i read some Postings in this community that advised people to get their input-data into a range of -1 to 1)

    best Regards Rico