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.

TMS320C5515 - FFT Hardware accelerator not working

Other Parts Discussed in Thread: TMS320C5515

I'm currently using the TMS320C5515 development board also called the FDK and I'm busy implementing Biometric scanner code that utilizes the FFT accelerator. The code works perfectly when running the firmware on the board using XDS100 emulator, but when I upload the firmware to the SPI Flash and then try to execute it without the emulator, the FFT Hardware accelerator mysteriously stops working. Does anyone perhaps have a clue why this happens as the everything seems to be working except for the FFT accelerator?

My building steps are as follows:

1.) First I generate a .out file with CCS4

2.)  Then I use the Hex55 utility to generate a bin file using the following syntax in command prompt: 

           hex55.exe -i scanner.out -o scanner.bin -boot -v5505 -b -serial8

3.) Then I upload the bin file to the DSP's SPI Flash using CCS4.

 

Any help will be greatly appreciated.

Thanks,

Andre

  • Hi Andre,

    Your hex55 command looks okay.

    Is all of your program working except for the FFT Hardware Accelerator? You must remember to configure PLL, Clock Gates, and Idle configurations in your program when it is booted from external memory. This is done by the GEL file in CCS, but is not in the bootloader.

    Have a look at the FFT hardware accelerator idle status bit - Bit 9 (HWAIS) of the Idle Configuration Register (ICR) [0001h] and IDLE Status Register (ISTR) [0002h] (http://focus.ti.com/lit/ug/sprufx5/sprufx5.pdf#page=36)

    A paragraph for this bit might need to be added to the FFT Hardware Accelerator App Note (http://focus.ti.com/lit/an/sprabb6a/sprabb6a.pdf)

    Can you share anything about the Biometric scanner code that utilizes the FFT? This sounds interesting.

    Hope this helps,
    Mark

  • Andre,

    If you are using DMAs remember to unidle MPORTs in the Idle Configuration Register (ICR) [0001h] in your code before starting data transfers. MPORTs are idled by the bootloader but is unidled by the emulation logic when an emulator is connected to the JTAG port. However, when you bootup from flash or EEPROM without emulation the MPORTs remain idled and the DMAs cannot start a transfer.

    Regards,

    Sunil Kamath

  • Thanks so much for your speedy replies! I'll give it a shot and let you know if it helps. I'll also share more about the biometrics code.

    Regards,

    Andre

  • Hello Andre,

    I have just created a google group to discuss questions about this FDK, please join us.

    http://groups.google.com/group/c5515-fdk



    Regards,

    Yang

  • Andre,

    I am intesting if your issue has been closed? if yes, what approach you are using to close?

    thanks.

  • Thanks guys, I have come right with this issue. Thanks for pointing me in the right direction!

    Just so that you guys know I have used the following piece of code at the start of my application to start up the FFT accelerator (remove idle state):

      *((volatile ioport unsigned *)(0x0001)) = 0x000E;   // Enable periph clocks in idle control register

      asm("\tnop_16");                   // flush the pipeline

      asm("\tnop_16");      

      asm("\tnop_16");      

      asm("\tnop_16");      

      asm("\tnop_16");      

      asm("\tnop_16");      

      asm("\tidle");                     // execute IDLE instr to apply changes

     

    Thanks,

    Andre