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.

IWR1843: An error is reported when the program runs to boot EDMA

Part Number: IWR1843

Hi team,

Copy the EDMA initialization and configuration program for PA_18xx_DSS to the high-accuracy level measurement program to replace the original EDMA program.

But the program will report the error when running to EDMA_startDmaTransfer(obj->edmaHandle[EDMA_install_a],MRW_EDMA_CH_1D_in_ping); 

The error messages are as follows: 

[Cortex_R4_0] xdc.runtime.Main: "../APP/mss_main.c", line 795: assertion failure
xdc.runtime.Error.raise: terminating execution
[C674X_0] {module#38}: line 99: error {id:0x10000, args:[0x20034afd, 0x20034afc]}
xdc.runtime.Error.raise: terminating execution

The EDMA program is as follows: 

int32_t MmwDemo_dataPathInitEdma(MmwDemo_DSS_DataPathObj *obj)
{
    uint8_t numInstances;
    int32_t errorCode;
    EDMA_Handle handle;
    EDMA_errorConfig_t errorConfig;
    uint32_t instanceId;
    EDMA_instanceInfo_t instanceInfo;

    numInstances = EDMA_getNumInstances();

    /* Initialize the edma instance to be tested */
    for (instanceId = 0; instanceId < numInstances; instanceId++)
    {
        EDMA_init(instanceId);

        handle = EDMA_open(instanceId, &errorCode, &instanceInfo);
        if (handle == NULL)
        {
            // System_printf("Error: Unable to open the edma Instance, erorCode = %d\n", errorCode);
            return -1;
        }
        obj->edmaHandle[instanceId] = handle;

        errorConfig.isConfigAllEventQueues = true;
        errorConfig.isConfigAllTransferControllers = true;
        errorConfig.isEventQueueThresholdingEnabled = true;
        errorConfig.eventQueueThreshold = EDMA_EVENT_QUEUE_THRESHOLD_MAX;
        errorConfig.isEnableAllTransferControllerErrors = true;
        errorConfig.callbackFxn = MmwDemo_edmaErrorCallbackFxn;
        errorConfig.transferControllerCallbackFxn = MmwDemo_edmaTransferControllerErrorCallbackFxn;
        if ((errorCode = EDMA_configErrorMonitoring(handle, &errorConfig)) != EDMA_NO_ERROR)
        {
            // System_printf("Debug: EDMA_configErrorMonitoring() failed with errorCode = %d\n", errorCode);
            return -1;
        }
    }
    return 0;
}

int32_t MmwDemo_dataPathConfigEdma(MmwDemo_DSS_DataPathObj *obj)
{
    uint16_t shadowParam = EDMA_NUM_DMA_CHANNELS;
    int32_t retVal = 0;
    uint32_t numChirpTypes = 1;
    uint32_t ADCBufferoffset = (32 * 1024)/4;

    numChirpTypes = 1;

    /*****************************************************
    * EDMA configuration for getting ADC data from ADC buffer
    * to L2 (prior to 1D FFT)
    * For ADC Buffer to L2 use EDMA-A TPTC =1
    *****************************************************/

    /* Ping - copies chirp samples from even antenna numbers (e.g. RxAnt0 and RxAnt2) */

    retVal =
        EDMAutil_configType1(obj->edmaHandle[EDMA_INSTANCE_A],
            (uint8_t *)(&obj->ADCdataBuf[0]),
            (uint8_t *)(SOC_translateAddress((uint32_t)&obj->adcDataIn[0], SOC_TranslateAddr_Dir_TO_EDMA, NULL)),
            MRR_SF0_EDMA_CH_1D_IN_PING,
            false,
            shadowParam++,
            obj->numAdcSamples * BYTES_PER_SAMP_1D,
            MAX(obj->numRxAntennas / 2, 1),
            ADCBufferoffset * 2,
            0,
            0,
            NULL,
            (uintptr_t)obj);
    if (retVal < 0)
    {
        return -1;
    }

    /* Pong - copies chirp samples from odd antenna numbers (e.g. RxAnt1 and RxAnt3)
     * Note that ADCBufferoffset is in bytes, but ADCdataBuf is in cmplx16ReIm_t.
     * There are four bytes in one cmplx16ReIm_t*/
    retVal =
        EDMAutil_configType1(obj->edmaHandle[EDMA_INSTANCE_A],
            (uint8_t *)(&obj->ADCdataBuf[(ADCBufferoffset>>2)]),
            (uint8_t *)(SOC_translateAddress((uint32_t)(&obj->adcDataIn[obj->numRangeBins]), SOC_TranslateAddr_Dir_TO_EDMA, NULL)),
            MRR_SF0_EDMA_CH_1D_IN_PONG,
            false,
            shadowParam++,
            obj->numAdcSamples * BYTES_PER_SAMP_1D,
            MAX(obj->numRxAntennas / 2, 1),
            ADCBufferoffset * 2,
            0,
            0,
            NULL,
            (uintptr_t)obj);
    if (retVal < 0)
    {
        return -1;
    }

    /*
    * EDMA configuration for storing 1d fft output in transposed manner to L3.
    * It copies all Rx antennas of the chirp per trigger event.
    */


    /* Ping - Copies from ping FFT output (even chirp indices)  to L3 */

    retVal =
        EDMAutil_configType2a(obj->edmaHandle[EDMA_INSTANCE_A],
            (uint8_t *)(SOC_translateAddress((uint32_t)(&obj->fftOut1D[0]), SOC_TranslateAddr_Dir_TO_EDMA, NULL)),
            (uint8_t *)(&obj->radarCube[0]),
            MRR_SF0_EDMA_CH_1D_OUT_PING,
            false,
            shadowParam++,
            BYTES_PER_SAMP_1D,
            obj->numRangeBins,
            obj->numTxAntennas * numChirpTypes,
            obj->numRxAntennas,
            obj->numDopplerBins,
            1,
            NULL,
            (uintptr_t)obj);
    if (retVal < 0)
    {
        return -1;
    }

    /* Ping - Copies from pong FFT output (odd chirp indices)  to L3 */

    retVal =
        EDMAutil_configType2a(obj->edmaHandle[EDMA_INSTANCE_A],
            (uint8_t *)(SOC_translateAddress((uint32_t)(&obj->fftOut1D[obj->numRxAntennas * obj->numRangeBins]),
                SOC_TranslateAddr_Dir_TO_EDMA, NULL)),
            (uint8_t *)(&obj->radarCube[0]),
            MRR_SF0_EDMA_CH_1D_OUT_PONG,
            false,
            shadowParam++,
            BYTES_PER_SAMP_1D,
            obj->numRangeBins,
            obj->numTxAntennas * numChirpTypes,
            obj->numRxAntennas,
            obj->numDopplerBins,
            1,
            NULL,
            (uintptr_t)obj);
    if (retVal < 0)
    {
        return -1;
    }


    /*****************************************
    * Interframe processing related EDMA configuration
    *****************************************/

    /* For the max-vel enh implementation, we pull out twice as much range-gates per range bin.
     * Hence  EDMA BCNT is multiplied by 2. */

    /* Ping: This DMA channel is programmed to fetch the 1D FFT data from radarCube
    * matrix in L3 mem of even antenna rows into the Ping Buffer in L2 mem*/

    retVal =
        EDMAutil_configType1(obj->edmaHandle[EDMA_INSTANCE_A],
            (uint8_t *)(&obj->radarCube[0]),
            (uint8_t *)(SOC_translateAddress((uint32_t)(&obj->dstPingPong[0]), SOC_TranslateAddr_Dir_TO_EDMA, NULL)),
            MRR_SF0_EDMA_CH_2D_IN_PING,
            false,
            shadowParam++,
            obj->numDopplerBins * BYTES_PER_SAMP_1D,
            (obj->numRangeBins * obj->numRxAntennas * obj->numTxAntennas * numChirpTypes) / 2,
            obj->numDopplerBins * BYTES_PER_SAMP_1D * 2,
            0,
            0,
            NULL,
            (uintptr_t)obj);
    if (retVal < 0)
    {
        return -1;
    }

    /* Pong: This DMA channel is programmed to fetch the 1D FFT data from radarCube
    * matrix in L3 mem of odd antenna rows into thePong Buffer in L2 mem*/

    retVal =
        EDMAutil_configType1(obj->edmaHandle[EDMA_INSTANCE_A],
            (uint8_t *)(&obj->radarCube[obj->numDopplerBins]),
            (uint8_t *)(SOC_translateAddress((uint32_t)(&obj->dstPingPong[obj->numDopplerBins]),
                SOC_TranslateAddr_Dir_TO_EDMA, NULL)),
            MRR_SF0_EDMA_CH_2D_IN_PONG,
            false,
            shadowParam++,
            obj->numDopplerBins * BYTES_PER_SAMP_1D,
            (obj->numRangeBins * obj->numRxAntennas * obj->numTxAntennas * numChirpTypes) / 2,
            obj->numDopplerBins * BYTES_PER_SAMP_1D * 2,
            0,
            0,
            NULL,
            (uintptr_t)obj);
    if (retVal < 0)
    {
        return -1;
    }


    /* This EDMA Channel brings selected range bins  from detection matrix in
    * L3 mem (reading in transposed manner) into L2 mem for CFAR detection (in
    * range direction). */

    retVal =
        EDMAutil_configType3(obj->edmaHandle[EDMA_INSTANCE_A],
            (uint8_t *)0,
            (uint8_t *)0,
            MRR_SF0_EDMA_CH_DET_MATRIX2,
            false,
            shadowParam++,
            BYTES_PER_SAMP_DET, \
            obj->numRangeBins,
            (obj->numDopplerBins * BYTES_PER_SAMP_DET),
            BYTES_PER_SAMP_DET,
            0,
            NULL,
            (uintptr_t)obj);
    if (retVal < 0)
    {
        return -1;
    }

    /*********************************************************
    * These EDMA Channels are for Azimuth calculation. They bring
    * 1D FFT data for 2D DFT and Azimuth FFT calculation.
    ********************************************************/
    /* Ping: This DMA channel is programmed to fetch the 1D FFT data from radarCube
    * matrix in L3 mem of even antenna rows into the Ping Buffer in L2 mem.
    */

    retVal =
        EDMAutil_configType1(obj->edmaHandle[EDMA_INSTANCE_A],
            (uint8_t *)NULL,
            (uint8_t *)(SOC_translateAddress((uint32_t)(&obj->dstPingPong[0]), SOC_TranslateAddr_Dir_TO_EDMA, NULL)),
            MRR_SF0_EDMA_CH_3D_IN_PING,
            false,
            shadowParam++,
            obj->numDopplerBins * BYTES_PER_SAMP_1D,
            MAX((obj->numRxAntennas * obj->numTxAntennas) / 2, 1),
            (obj->numDopplerBins * BYTES_PER_SAMP_1D * 2),
            0,
            0,
            NULL,
            (uintptr_t)obj);
    if (retVal < 0)
    {
        return -1;
    }

    /* Pong: This DMA channel is programmed to fetch the 1D FFT data from radarCube
    * matrix in L3 mem of odd antenna rows into the Pong Buffer in L2 mem*/

    retVal =
        EDMAutil_configType1(obj->edmaHandle[EDMA_INSTANCE_A],
            (uint8_t *)NULL,
            (uint8_t *)(SOC_translateAddress((uint32_t)(&obj->dstPingPong[obj->numDopplerBins]), SOC_TranslateAddr_Dir_TO_EDMA, NULL)),
            MRR_SF0_EDMA_CH_3D_IN_PONG,
            false,
            shadowParam++,
            obj->numDopplerBins * BYTES_PER_SAMP_1D,
            MAX((obj->numRxAntennas * obj->numTxAntennas) / 2, 1),
            obj->numDopplerBins * BYTES_PER_SAMP_1D * 2,
            0,
            0,
            NULL,
            (uintptr_t)obj);
    if (retVal < 0)
    {
        return -1;
    }

    return(0);
}

Could you help check this case? Thanks.

Best Regards,

Cherry

  • Hello Cherry,

    https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/676888/ccs-awr1642-run-time-error-occurs-on-the-edma_startdmatransfer-function

    Can you try setting frameCfg,numberOfFrames = 1 for the usage of breakpoints for a more scoped error of the problem?

    Best Regards,

    Pedrhom Nafisi

  • Hello Pedrhom Nafisi,

    Thanks for your support.

    The customer masked the mailbox receiver under the high-precision program DSS. Will it affect radar start-up? 

                    case MMWDEMO_MSS2DSS_HIGHACCURANGE_CFG:
                    {
                        /* Save cfarRange configuration */
    //                    memcpy((void *)&gMmwDssMCB.dataPathObj.radarProcConfig.highAccuConfig,
    //                           (void *)&message.body.highAccuRangeCfg, sizeof(RADARDEMO_highAccuRangeProc_config));
                        break;
                    }
                    case MMWDEMO_MSS2DSS_ADCBUFCFG:
                    {
                        /* Save ADCBUF configuration */
    //                    memcpy((void *)&gMmwDssMCB.dataPathObj.adcBufCfg,
    //                           (void *)&message.body.adcBufCfg, sizeof(MmwDemo_ADCBufCfg));
                        break;

    Thanks and regards,

    Cherry

  • Hello,

    Simply masking those should be fine, but you can confirm by running it and see what error you get. This error code can be looked up in the doxygen to see if the change creates a one-to-one or somewhat related  Also what is exactly the objective here with the removal of these two config parameters?

    Best Regards,

    Pedrhom

  • Hi Pedrhom,

    Also what is exactly the objective here with the removal of these two config parameters?

    The two configuration parameters were removed to mask off the creation of some variables in the high-precision liquid-level algorithm because the subsequent algorithm wanted to add the algorithm for PA_18xx_DSS to the algorithm framework for high_accuracy_18xx_DSS.

    The specific masked and added algorithms are as follows:

    void MmwDemo_dataPathConfigBuffers(uint32_t adcBufAddress, MmwDemo_Cfg  *demoCfg, MmwDemo_DSS_DataPathObj *dataPathObj)
    {
        radarOsal_heapConfig heapconfig[SOC_XWR18XX_DSS_MAXNUMHEAPS];
        RADARDEMO_highAccuRangeProc_errorCode rangeProcErrorCode;
        ProcessErrorCodes procErrorCode;
    	int32_t tempNumSamples;
    	uint32_t maxNum2, maxNum3;
    	uint32_t numChirpTypes = 1;
        dataPathObj->ADCdataBuf = (cmplx16ImRe_t *)adcBufAddress;
    
        // heap init
    	memset(heapconfig, 0, sizeof(heapconfig));
    	heapconfig[RADARMEMOSAL_HEAPTYPE_DDR_CACHED].heapType 	= 	RADARMEMOSAL_HEAPTYPE_DDR_CACHED;
    	heapconfig[RADARMEMOSAL_HEAPTYPE_DDR_CACHED].heapAddr   = 	(int8_t *) &gMmwL3[0];
    	heapconfig[RADARMEMOSAL_HEAPTYPE_DDR_CACHED].heapSize   = 	SOC_XWR18XX_DSS_L3RAM_BUFF_SIZE;
    	heapconfig[RADARMEMOSAL_HEAPTYPE_DDR_CACHED].scratchAddr= 	NULL; 	/* not DDR scratch for TM demo  */
    	heapconfig[RADARMEMOSAL_HEAPTYPE_DDR_CACHED].scratchSize= 	0; 	/* not DDR scratch for TM demo  */
    
    	heapconfig[RADARMEMOSAL_HEAPTYPE_LL2].heapType 			= 	RADARMEMOSAL_HEAPTYPE_LL2;
    	heapconfig[RADARMEMOSAL_HEAPTYPE_LL2].heapAddr   		= 	(int8_t *) &gMmwL2[0];
    	heapconfig[RADARMEMOSAL_HEAPTYPE_LL2].heapSize   		= 	SOC_XWR18XX_DSS_L2_BUFF_SIZE;
    	heapconfig[RADARMEMOSAL_HEAPTYPE_LL2].scratchAddr   	= 	(int8_t *)&gMmwL2Scratch[0];;
    	heapconfig[RADARMEMOSAL_HEAPTYPE_LL2].scratchSize   	= 	SOC_XWR18XX_DSS_L2_SCRATCH_SIZE;
    
    	heapconfig[RADARMEMOSAL_HEAPTYPE_LL1].heapType 			= 	RADARMEMOSAL_HEAPTYPE_LL1;
    	heapconfig[RADARMEMOSAL_HEAPTYPE_LL1].heapAddr   		= 	NULL; /* not used as L1 heap in TM demo  */
    	heapconfig[RADARMEMOSAL_HEAPTYPE_LL1].heapSize   		= 	0;    /* not used as L1 heap in TM demo  */
     	heapconfig[RADARMEMOSAL_HEAPTYPE_LL1].scratchAddr   	= 	(int8_t *) &gMmwL1[0];
    	heapconfig[RADARMEMOSAL_HEAPTYPE_LL1].scratchSize   	= 	MMW_L1_SCRATCH_SIZE;
    
    	heapconfig[RADARMEMOSAL_HEAPTYPE_HSRAM].heapType 		= 	RADARMEMOSAL_HEAPTYPE_HSRAM;
    	heapconfig[RADARMEMOSAL_HEAPTYPE_HSRAM].heapAddr   		= 	(int8_t *) &gMmwHSRAM[0];
    	heapconfig[RADARMEMOSAL_HEAPTYPE_HSRAM].heapSize   		= 	SOC_XWR18XX_DSS_HSRAM_BUFF_SIZE;
     	heapconfig[RADARMEMOSAL_HEAPTYPE_HSRAM].scratchAddr   	= 	NULL; 	/* not HSRAM scratch for TM demo  */
    	heapconfig[RADARMEMOSAL_HEAPTYPE_HSRAM].scratchSize   	= 	0;    /* not HSRAM scratch for TM demo  */
    
    	if(radarOsal_memInit(&heapconfig[0], SOC_XWR18XX_DSS_MAXNUMHEAPS) == RADARMEMOSAL_FAIL)
    	{
    		System_printf("Error: radarOsal_memInit fail\n");
    	}
    
    //	/*initializing configuration structure for signal processing chain */
    //	MmwDemo_initConfigStruct(demoCfg, &dataPathObj->radarProcConfig);
    //
    //	dataPathObj->haRangehandle = (void *) RADARDEMO_highAccuRangeProc_create(&dataPathObj->radarProcConfig.highAccuConfig, &rangeProcErrorCode);
    //    if (rangeProcErrorCode > RADARDEMO_HIGHACCURANGEPROC_NO_ERROR)
    //    {
    //    	System_printf("High Accuracy Range Estimation Module creat error = %d! Exit!\n", (uint8_t)rangeProcErrorCode);
    //    	DebugP_assert(0);
    //    }
    //	dataPathObj->rangeProcInput 	=	(RADARDEMO_highAccuRangeProc_input *) radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, sizeof(RADARDEMO_highAccuRangeProc_input), 8);
    //	dataPathObj->rangeProcOutput 	=	(RADARDEMO_highAccuRangeProc_output *) radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, sizeof(RADARDEMO_highAccuRangeProc_output), 8);
    //
    //    dataPathObj->outputDataToArm = (outputToARM_t *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_DDR_CACHED, 0, sizeof(outputToARM_t), 128);
    //	dataPathObj->scratchBuf 			= 	(int32_t *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL1, 1, MMW_TM_DEMO_EDMASCATCHBUF_SIZE, 8); //fixed to 16k byte
    //
    //		/* PING PONG IN OUT */
    //	dataPathObj->adcDataL2 			= 	(cmplx16ImRe_t *)&dataPathObj->scratchBuf[0];
    //
    //	dataPathObj->numPhyRxAntennas  		= 	(uint32_t)dataPathObj->radarProcConfig.numPhyRxAntenna;
    //	dataPathObj->numTxAntennas  		= 	(uint32_t)dataPathObj->radarProcConfig.numTxAntenna;
    //	tempNumSamples 						= 	(((uint32_t)dataPathObj->radarProcConfig.numAdcSamplePerChirp + 16/2) >> 4) << 4; // round up to multiple of 16!!!
    //	dataPathObj->numAdcSamples  		= 	tempNumSamples;
    //	dataPathObj->numChirpsPerFrame  	= 	(uint32_t)dataPathObj->radarProcConfig.numChirpPerFrame;
    //	dataPathObj->chirpThreshold  		= 	1;
    //	dataPathObj->sizeOutputInfo 	= 	sizeof(outputToARM_t) - sizeof(MmwDemo_detOutputHdr);
    
    	////初始化多普勒、CFAR、DOA、聚类对象
    //    obj = &dataPathObj[0];
    	numChirpTypes = 1;
    //    maxNum1 = dataPathObj->numRangeBins;
        maxNum2 = dataPathObj->numRxAntennas * dataPathObj->numRangeBins;
        maxNum3 = dataPathObj->numRangeBins * dataPathObj->numDopplerBins * dataPathObj->numRxAntennas * dataPathObj->numTxAntennas * numChirpTypes;
        dataPathObj->twiddle16x16_1D = (cmplx16ImRe_t *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, dataPathObj->numRangeBins*sizeof(cmplx16ImRe_t), 8);
        dataPathObj->window1D = (int16_t *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, (dataPathObj->numAdcSamples >> 1) * sizeof(int16_t), 8);
    
        dataPathObj->radarCube = (cmplx16ImRe_t *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_DDR_CACHED, 0, maxNum3*sizeof(cmplx16ImRe_t), 8);
        dataPathObj->radarProcConfig.pFFT1DBuffer = (cplx16_t *)dataPathObj->radarCube;
        dataPathObj->fftOut1D = (cmplx16ImRe_t *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, 2 * maxNum2*sizeof(cmplx16ImRe_t), 8);
        dataPathObj->dopplerProcOut[PING] = (float *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, sizeof(float)*dataPathObj->numDopplerBins, 8);
        dataPathObj->dopplerProcOut[PONG] = (float *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, sizeof(float)*dataPathObj->numDopplerBins, 8);
    
        dataPathObj->outBuffCntxt = (RadarDsp_outputBuffCntxt *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, sizeof(RadarDsp_outputBuffCntxt), 8);
        dataPathObj->outBuffCntxt->numBuff = RadarDsp_outputDataType_MAX;
        dataPathObj->outBuffCntxt->elem[RadarDsp_outputDataType_OBJ_DATA].type = RadarDsp_outputDataType_OBJ_DATA;
        dataPathObj->outBuffCntxt->elem[RadarDsp_outputDataType_OBJ_DATA].buff = (radarProcessOutputToTracker *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, sizeof(radarProcessOutputToTracker), 8);
    
        dataPathObj->scratchBuf = (int32_t *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL1, 1, MMW_TM_DEMO_EDMASCATCHBUF_SIZE, 8); //fixed to 16k byte
        dataPathObj->adcDataIn =  (cmplx16ImRe_t *)&dataPathObj->scratchBuf[0];
    
        dataPathObj->dstPingPong  = (cmplx16ImRe_t *)&dataPathObj->scratchBuf[2 * dataPathObj->radarProcConfig.fftSize1D];
    
        //dopppler、CFAR、DOA、cluster算法创建
        dataPathObj->radarProcessHandle = (void *) radarProcessCreate(&dataPathObj->radarProcConfig, &procErrorCode);
        if (procErrorCode > PROCESS_OK)
        {
            System_printf("radar process create error! Exit!");
        }
    
    	MmwDemo_printHeapStats();
        radarOsal_memDeInit();
    }

    Thanks and regards,

    Cherry

  • Hi,

    According to the MMWAVE SDK User Guide, EDMA is fine when configuring 1 chirp in 1 frame.

    The above problem occurs when inserting a breakpoint when configuring 2 chirps under an infinite frame:

    xdc.runtime.Error.raise: Terminating execution [C674x_0] {module#38}: Line 99: Error {id:0x10000, args:[0x20034af, 0x20034afc]} xdc.runtime.Error.raise: Terminating execution

    The following error occurs when configuring 2 chirps in 1 frame: Asynchronous Event SB ID 15 not handled.

    Is it due to breakpoint debug only supports 1 FRAM1 chirp? Is there a way to configure 1 frame multiple chirp for breakpoint step debugging? 

    Thanks and regards,

    Cherry

  • Hi Cherry,

    Pedrhom is out of office for 2 days. Please give him some time to respond. Thank you for your patience.

    Best,

    Nate

  • Hello,

    Ignoring the 1 frame error for now, is there a specific error code given when you receive xdc.runtime.Error.raise: Terminating execution [C674x_0] {module#38}: Line 99: Error {id:0x10000, args:[0x20034af, 0x20034afc]}? There should be one and it is hard for us to debug without one

    Best Regards,

    Pedrhom