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.

AWR1642BOOST: DSS Frame Processing Deadline Miss Exception

Part Number: AWR1642BOOST

Hello,

I was trying to record raw data into a file on PC through UART with AWR1642BOOST and MMWAVE DEVPACK. I modified dss_main.c of mmw demo in the sdk like this:

...

/**
* @b Description
* @n
* Function to process Data Path events at runtime.
*
* @param[in] event
* Data Path Event
*
* @retval
* Not Applicable.
*/
static int32_t MmwDemo_dssDataPathProcessEvents(UInt event)
{
MmwDemo_DSS_DataPathObj *dataPathObj;
volatile uint32_t startTime;

dataPathObj = &gMmwDssMCB.dataPathObj[gMmwDssMCB.subFrameIndx];

/* Handle dataPath events */
switch(event)
{
case MMWDEMO_CHIRP_EVT:

UART_writePolling(gMmwDssMCB.loggingUartHandle, (uint8_t*) SOC_XWR16XX_DSS_ADCBUF_BASE_ADDRESS, 1024);
/* Increment event stats */
gMmwDssMCB.stats.chirpEvt++;
// {
// uint16_t chirpIndex;
// for (chirpIndex = 0; chirpIndex < dataPathObj->numChirpsPerChirpEvent; chirpIndex++)
// {
// MmwDemo_processChirp(dataPathObj, (uint16_t) chirpIndex);
// }
// }
// gMmwDssMCB.dataPathContext.chirpProcToken--;
// dataPathObj->timingInfo.chirpProcessingEndTime = Cycleprofiler_getTimeStamp();
//
// if (dataPathObj->chirpCount == 0)
// {
// MmwDemo_waitEndOfChirps(dataPathObj);
// Load_update();
// dataPathObj->timingInfo.activeFrameCPULoad = Load_getCPULoad();
//
// dataPathObj->cycleLog.interChirpProcessingTime = gCycleLog.interChirpProcessingTime;
// dataPathObj->cycleLog.interChirpWaitTime = gCycleLog.interChirpWaitTime;
// gCycleLog.interChirpProcessingTime = 0;
// gCycleLog.interChirpWaitTime = 0;
//
// startTime = Cycleprofiler_getTimeStamp();
// MmwDemo_interFrameProcessing(dataPathObj);
// dataPathObj->timingInfo.interFrameProcCycles = (Cycleprofiler_getTimeStamp() - startTime);
//
// dataPathObj->cycleLog.interFrameProcessingTime = gCycleLog.interFrameProcessingTime;
// dataPathObj->cycleLog.interFrameWaitTime = gCycleLog.interFrameWaitTime;
// gCycleLog.interFrameProcessingTime = 0;
// gCycleLog.interFrameWaitTime = 0;
//
// /* Sending range bias and Rx channel phase offset measurements to MSS and from there to CLI */
// if(dataPathObj->cliCommonCfg->measureRxChanCfg.enabled)
// {
// //MmwDemo_measurementResultOutput (dataPathObj);
// }
//
// /* Sending detected objects to logging buffer */
// //MmwDemo_dssDataPathOutputLogging (dataPathObj);
// dataPathObj->timingInfo.interFrameProcessingEndTime = Cycleprofiler_getTimeStamp();
// }
break;

case MMWDEMO_FRAMESTART_EVT:
/* Increment event stats */
gMmwDssMCB.stats.frameStartEvt++;
// Load_update();
// dataPathObj->timingInfo.interFrameCPULoad = Load_getCPULoad();
// MmwDemo_dssAssert(dataPathObj->chirpCount == 0);
break;

case MMWDEMO_BSS_FRAME_TRIGGER_READY_EVT:
/* Increment event stats */
gMmwDssMCB.stats.frameTrigEvt++;
break;

default:
break;
}
return 0;
}

...

And I used python to read data from 4th com of DEVPACK. I do get 1 piece of data in the file, but then I get the following error from the first COM of AWR1642BOOST:

 DSS Frame Processing Deadline Miss Exception.

I have set the frame period to 1000ms and I think that it would be enough time to send 1024 bytes of data through UART. Besides, I have commented all other processings in the handler.

I sent the following configurations to the board:

dfeDataOutputMode 1

channelCfg 15 3 0

adcCfg 2 1

adcbufCfg -1 0 0 1 0

profileCfg 0 77 429 7 57.14 0 0 70 1 64 5209 0 0 30

chirpCfg 0 0 0 0 0 0 0 1

chirpCfg 1 1 0 0 0 0 0 2

frameCfg 0 1 4 0 1000 1 0

guiMonitor -1 0 0 0 0 0 0

cfarCfg -1 0 0 8 4 4 0 5120

cfarCfg -1 1 0 4 2 3 0 5120

peakGrouping -1 1 1 1 1 255

multiObjBeamForming -1 1 0.5

clutterRemoval -1 0

calibDcRangeSig -1 0 -5 8 256

extendedMaxVelocity -1 0

compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

measureRangeBiasAndRxChanPhase 0 1.5 0.2

Could you please help me to find out why this error occurs?

Thank you very much!

Peijun

  • Hi,

    This error will occur because the total time needed for interframe processing and UART transmission exceeds the idle time for your frame configuration.

    In order to better understand the processing it will be helpful to benchmark how long the processing performed in the inter frame processing function takes.

    After that you can estimate how long the UART transmission for the 1024 bytes takes.

    Once you have these number please share them with the community.

    It is possible to disable certain flags in the demo in order to increase the available processing times

    thank you
    Cesar