AnsweredAssumed Answered

Conflict between MCAPI and DMA descriptor chain? [CCES2.6 & SC584]

Question asked by Jhon on Oct 21, 2017
Latest reply on Oct 22, 2017 by Jhon

Hi,

 

I'm using the SC584 FFT accelerator under CCES2.6.0. My code is based on the 2 examples:

(1) ADSP-SC5xx_EZ-KIT_Lite-Rel2.0.0\ADSP-SC5xx_EZ-KIT\Examples\drivers\fft\SmallFFTDescriptorChain

(2) ADSP-SC5xx_EZ-KIT_Lite-Rel2.0.0\ADSP-SC5xx_EZ-KIT\Examples\services\mcapi\ThreeCore

 

But when I run the FFTA setup code in Core2, the MCAPI code fails, the "mcapi_endpoint_get" function in Core0 can't get response from Core2.

 

If I remove this code from Core2:

    if (adi_tru_Init(/*reset*/true) != ADI_TRU_SUCCESS)
    {
        printf("Failed to initialize TRU\n");
        return 1;
    }

Then the MCAPI communication works fine, but the DMA of Core2 fails, in the console window is shows:

    Failed to initiate One-shot 1D memory copy, Error Code: 0x00000007
    Failed to query the current status of Memory DMA copy

 

I think this is a TRU setup problem. Before calling "adi_tru_Init" in Core2, the TRU registers are (only non-zero regs listed):

    TRU0_MTR = 60
    TRU0_GCTL = 1
    TRU0_SSR87 = 60
    TRU0_SSR91 = 61
    TRU0_SSR95 = 62

after calling "adi_tru_Init"m TRU0_MTR, TRU0_SSR87, TRU0_SSR91, TRU0_SSR95 change to 0, and after these lines:

    adi_fft_Check(h, adi_fft_RegisterTxTriggerMaster(h, TRGM_SYS_SOFT0_MST));
    adi_fft_Check(h, adi_fft_RegisterRxTriggerMaster(h, TRGM_SYS_SOFT1_MST));

    adi_fft_Check(h, adi_fft_TriggerRx(h));

and the TRU regisrers are (only non-zero regs listed):

    TRU0_MTR = 5E

    TRU0_GCTL = 1
    TRU0_SSR44 = 5D
    TRU0_SSR45 = 5E

 

I think there maybe some conflict between the MCAPI and the FFTA dma setup, but I don't know what to do next. Can anybody help me?

 

Thanks,

Jhon

Outcomes