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.

FFTC problems

Hello

I work with my own board C6670 based. And I want to use FFTC

Earlier I prepared project using CCS5.5 Simulator. And made the project work properly

But now on the board it does not work.

I know there are some moments when using real board.

First of all I had turn on FFTC domain. I did it. According to Power Sleep Controller Datasheet. And now I can write and read FFTC registers.

But to send the job to FFTC I use QMSS and PKTDMA. And it seems that it do not work on the board (but works via CCS5.5 Simulator).

I read that all data and Packet Descriptors should not be cached. I tried to do it in different ways.

First I tried to set zero memory for caching in L1D, L2.

L2CFG = 0x0300000

L1DCFG = 0.

And I tried allow caching in L1D

L1DCFG = 7

but did L1D cache invalidating

CACHE_invL1d (blockPtr, size, CACHE_FENCE_WAIT);

and Invalidating the prefetch buffer also

CSL_XMC_invalidatePrefetchBuffer();

before descriptors read/write .

But QMSS/PKTDMA don't work.

Why? 

Thanks. Alexander

 

  • Hi ,
    We would suggest to use the MCSDK 2.x FFTC example available under PDK directory. Please compare both custom project and mcsdk example to solve the issue. Please post us back the detailed information if you are unable to solve. Thank you.
  • While running FFTC_Multicore_exampleProject I can't exit
    Ipc_start()
    in
    void fftc_app (void)
  • Hi,
    Please refer the Readme.txt available in below directory for the usage of example,
    PATH: ..\ti\pdk_C6670_1_1_2_6\packages\ti\drv\fftc\example\multicore
    Thank you.
  • Yes. I started the project (FFTC_Multicore_exampleProject).

    But I did not receive a results.

    Only this:

    ===================================================

    [C66xx_0] **************************************************

    [C66xx_1] **************************************************

    [C66xx_2] **************************************************

    [C66xx_3] **************************************************

    [C66xx_0] ******** FFTC Multi Core Example Start **********

    [C66xx_1] ******** FFTC Multi Core Example Start **********

    [C66xx_2] ******** FFTC Multi Core Example Start **********

    [C66xx_3] ******** FFTC Multi Core Example Start **********

    [C66xx_0] **************************************************

    [C66xx_1] **************************************************

    [C66xx_2] **************************************************

    [C66xx_3] **************************************************

    [C66xx_0] Core 0 : L1D cache size 7. L2 cache size 0.

    [C66xx_1] Core 1 : L1D cache size 7. L2 cache size 0.

    [C66xx_3] Core 3 : L1D cache size 7. L2 cache size 0.

    [C66xx_2] Core 2 : L1D cache size 7. L2 cache size 0.

    [C66xx_1] [Core 1]: Waiting for Sys Init to be completed ...

    [C66xx_0] [Core 0]: FFTC instance 0 successfully initialized

    [C66xx_3] [Core 3]: Waiting for Sys Init to be completed ...

    [C66xx_2] [Core 2]: Waiting for Sys Init to be completed ...

    [C66xx_0] [Core 0]: FFTC successfully opened

    [C66xx_1] [Core 1]: FFTC successfully opened

    [C66xx_3] [Core 3]: FFTC successfully opened

    [C66xx_2] [Core 2]: FFTC successfully opened

    [C66xx_0] --------------------------------------------

    [C66xx_1] --------------------------------------------

    [C66xx_3] --------------------------------------------

    [C66xx_2] --------------------------------------------

    [C66xx_0] FFTC-CPPI Example START on Core 0

    [C66xx_1] FFTC-CPPI Example START on Core 1

    [C66xx_3] FFTC-CPPI Example START on Core 3

    [C66xx_2] FFTC-CPPI Example START on Core 2

    [C66xx_0] Sample Size:             16

    [C66xx_1] Sample Size:             16

    [C66xx_3] Sample Size:             16

    [C66xx_2] Sample Size:             16

    [C66xx_0] Number of Blocks:        5

    [C66xx_1] Number of Blocks:        5

    [C66xx_3] Number of Blocks:        5

    [C66xx_2] Number of Blocks:        5

    [C66xx_0] Tx Queue:                0

    [C66xx_1] Tx Queue:                0

    [C66xx_3] Tx Queue:                0

    [C66xx_2] Tx Queue:                0

    [C66xx_0] Descriptor Type:         Host

    [C66xx_1] Descriptor Type:         Host

    [C66xx_3] Descriptor Type:         Host

    [C66xx_2] Descriptor Type:         Host

    [C66xx_0] --------------------------------------------

    [C66xx_1] --------------------------------------------

    [C66xx_3] --------------------------------------------

    [C66xx_2] --------------------------------------------

    [C66xx_0] [Core 0]: Rx flow 0 opened successfully using Rx queue 708

    [C66xx_1] [Core 1]: Rx flow 1 opened successfully using Rx queue 709

    [C66xx_2] [Core 2]: Rx flow 2 opened successfully using Rx queue 710

    [C66xx_3] [Core 3]: Rx flow 3 opened successfully using Rx queue 711

    [C66xx_1]

    [C66xx_2]

    [C66xx_0]

    [C66xx_3]

    [C66xx_1] [Core 1]: Submitting FFT Request ...

    [C66xx_2] [Core 2]: Submitting FFT Request ...

    [C66xx_0] [Core 0]: Submitting FFT Request ...

    [C66xx_3] [Core 3]: Submitting FFT Request ...

    [C66xx_1] [Core 1]: Submitted request 0

    [C66xx_2] [Core 2]: Submitted request 0

    [C66xx_0] [Core 0]: Submitted request 0

    [C66xx_3] [Core 3]: Submitted request 0

    [C66xx_1]

    [C66xx_2]

    [C66xx_0]

    [C66xx_3]

    [C66xx_1] [Core 1]: Waiting for Result ...

    [C66xx_2] [Core 2]: Waiting for Result ...

    [C66xx_0] [Core 0]: Waiting for Result ...

    [C66xx_3] [Core 3]: Waiting for Result ...

    =======

    Work had  fixated on next function in multicore.c modul:

    /* Get the raw result from the engine. */ 
    if ((retVal = Fftc_rxGetResult (hRxObj, 
                                                  &hResultInfo,
                                                  &pResultBuffer, 
                                                  &resultLen, 
                                                  &pResultPSInfo, 
                                                  &rxPSInfoLen,
                                                  &rxFlowId,
                                                  &rxSrcId,
                                                  &rxDestnTagInfo
                                                  )                                 ) != FFTC_RETVAL_SUCCESS)

    {
    System_printf ("[Core %d]: Invalid FFT result : %d \n", coreNum, retVal);
    goto error;
    }

     

    For information: I work this project on TMDSEVM6670L