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.

EDMA3_DRV_requestChannel crash ?

i use ipnc rdk3.5.0, 8147

my question:

i use edma3

EDMA3_DRV_create ok.

EDMA3_DRV_open ok.

EDMA3_DRV_requestChannel crashed!!!!!!!

mycode :

g_hEdma = NULL;
    MiscParam.isSlave = 0;
    //Result = EDMA3_DRV_create(0, &gdmaGblCfgParams, &MiscParam);
    Result = EDMA3_DRV_create(1, &gUtils_dmaGblCfgParams, &MiscParam);
    if(Result != EDMA3_DRV_SOK)
    {
        Vps_printf("DMA: EDMA3_DRV_create failed\n");
        return -1;
    }

    memset(&g_initCfg, 0, sizeof(EDMA3_DRV_InitConfig));
    Semaphore_Params_init(&semParams);
    g_initCfg.drvSemHandle = (EDMA3_OS_Sem_Handle)Semaphore_create(1, &semParams, NULL);

    g_initCfg.isMaster = TRUE;
    /* Choose shadow region according to the DSP# */
    g_initCfg.regionId = 0;//(EDMA3_RM_RegionId)gUtils_dmaObj.region_id;

    /* Driver instance specific config NULL */
    //g_initCfg.drvInstInitConfig = (EDMA3_DRV_InstanceInitConfig*)&gdmaInstInitConfig;//&gUtils_dmaInstInitConfig;
    g_initCfg.drvInstInitConfig = (EDMA3_DRV_InstanceInitConfig*)&gUtils_dmaInstInitConfig;

    g_initCfg.gblerrCb = NULL;
    g_initCfg.gblerrData = NULL;
    
    Result=1;
    g_hEdma = EDMA3_DRV_open(1, (void *)&g_initCfg, &Result);
    if(Result != EDMA3_DRV_SOK)
    {
        Vps_printf("DMA: EDMA3_DRV_open failed\n");
        EDMA3_DRV_delete ( 0, NULL );
        return -1;
    }
    Vps_printf("------------DMA: EDMA3_DRV_open ok\n");

    memset(g_stparam_arr, 0, sizeof(dam_mem_param)*(MAX_DMA_NUM+2));
    
        iTcc = EDMA3_DRV_TCC_ANY;
        iChannel =EDMA3_DRV_DMA_CHANNEL_ANY; // 48+i
        Vps_printf( " ----begin 111:%08x, ichannel:%d, tcc:%d", (unsigned int)g_hEdma, iChannel, iTcc );

        Result = EDMA3_DRV_requestChannel( g_hEdma, &iChannel, &iTcc, 0, NULL, NULL );
        if ( Result != EDMA3_DRV_SOK )
        {
            return -1;
        }

the code is work well on 8127.

but i don't know why it not work on 8148.

It crashed at "Result = EDMA3_DRV_requestChannel( g_hEdma, &iChannel, &iTcc, 0, NULL, NULL );"

Look forward your reply. Thanks

  • anyone is here ?

    look forward you reply. thanks again;

  • See if the below links will be in help:

    http://processors.wiki.ti.com/index.php/Programming_EDMA_without_EDMA3LLD_package

    http://processors.wiki.ti.com/index.php/System_Analyzer_Tutorial_8A#How_It_Works

    http://processors.wiki.ti.com/images/5/5e/EDMA3_LLD.pdf

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/249296.aspx

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/99/t/124522.aspx

    Regards,
    Pavel

  • thanks for you reply, first.

    It crashed at "Result = EDMA3_DRV_requestChannel( g_hEdma, &iChannel, &iTcc, 0, NULL, NULL );"

     

    EDMA3_DRV_create successful.

    EDMA3_DRV_open successful.

    but EDMA3_DRV_requestChannel crashed !!!!!!! not returned;


    I don't know why It crashed ?