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 帧处理最后期限错过异常

Guru**** 2604225 points
Other Parts Discussed in Thread: AWR1642BOOST

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/665236/awr1642boost-dss-frame-processing-deadline-miss-exception

器件型号:AWR1642BOOST

您好!

我尝试通过 UART 使用 AWR1642BOOST 和毫米波 DEVPACK 将原始数据记录到 PC 上的文件中。 我在 SDK 中修改了 MMW 演示的 dss_main.c、如下所示:

(笑声)

/**
*@b 说明
*@n
用于在运行时处理数据路径事件的*函数。
*
*@param[in]事件
*数据路径事件
*
*@retval
*不适用。
*
静态 Int32_t MmwDemo_dsDataPathProcessEvents (UINT 事件)

MmwDemo_DSS_DataPathObj * dataPathObj;
volatile uint32_t StartTime;

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

/*处理 dataPath 事件*/
switch (事件)

案例 MMWDEMO_CHIRP_EVT:

UART_writePolling (gMmwDssMCB.loggingUartHandle、(uint8_t*) SOC_XWR16XX_DSS_ADCBUF_BASE_ADDRESS、1024);
/*递增事件统计数据*/
gMmwDssMCB.stats.chirpEvt++;
//{
// uint16_t chirpIndex;
//针对(线性调频脉冲指数= 0;线性调频脉冲指数< dataPathObj->numChirpsPerChirpEvent;线性调频脉冲指数++)
//{
// MmwDemo_processChirp (dataPathObj、(uint16_t)线性调频脉冲索引);
//}
//}
// 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 =(Cyclprofiler_getTimeStamp ()- StartTime);
//
// dataPathObj->cycleLog.interFrameProcessingTime = gCycleLog.interFrameProcessingTime;
// dataPathObj->cycleLog.interFrameWaitTime = gCycleLog.interFrameWaitTime;
// gCycleLog.interFrameProcessingTime = 0;
// gCycleLog.interFrameWaitTime = 0;
//
////////*将距离偏置和 Rx 通道相位偏移测量发送到 MSS,然后从那里发送到 CLI */
// if (dataPathObj->clientCommonCfg->measureRxChanCfg.enabled)
//{
///////mwDemo_measureResultOutput (dataPathObj);
//}
//
///*将检测到的对象发送到日志缓冲区*/
//////mwDemo_dsDataPathOutputLogging (dataPathObj);
// dataPathObj->timingInfo.interFrameProcessingEndTime = Cycleprofiler_getTimeStamp();
//}
中断;

案例 MMWDEMO_FRAMESTART_EVT:
/*递增事件统计数据*/
gMmwDssMCB.stats.frameStartEvt++;
// Load_update ();
// dataPathObj->timingInfo.interFrameCPULoad = Load_getCPULoad();
// MmwDemo_dsAssert (dataPathObj->chirpCount =0);
中断;

案例 MMWDEMO_BSS_FRAME_TRIGGER_READY_EVT:
/*递增事件统计数据*/
gMmwDssMCB.stats.frameTrigEvt++;
中断;

默认值:
中断;

返回0;

(笑声)

我使用 python 从 DEVPACK 的第4个 com 中读取数据。 我在文件中确实获得了1段数据、但随后从 AWR1642BOOST 的第一个 COM 中获得了以下错误:

 DSS 帧处理最后期限未命中异常。

我已将帧周期设置为1000ms、我认为通过 UART 发送1024字节数据将足够。 此外、我已经对处理程序中的所有其他处理进行了注释。

我向电路板发送了以下配置:

DfeDataOutputMode 1

通道配置15 3 0

ADCfg 2 1.

adcbufCfg -1 0 1 0 0

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

线性调频脉冲配置0 0 0 0 0 0 0 0 1

线性调频脉冲配置1 1 0 0 0 0 2

帧配置0 1 4 0 1000 1 0

guiMonitor -1 0 0 0 0 0 0 0

cfarCfg -1 0 8 4 0 5120

cfarCfg -1 0 4 2 3 0 5120

peakGrouping -1 1 1 1 1 255

multiObjBeamForming -1 1 0.5

离合器拆卸-1 0

calibDcRangeSig -1 0 -5 8 256

扩展 MaxVelocity -1 0

CompRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0

measureRangeBiasAndRxChanPhase 0 1.5 0.2

请帮我找出出现此错误的原因吗?

非常感谢!

佩伊洪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    发生此错误的原因是帧间处理和 UART 传输所需的总时间超过了帧配置的空闲时间。

    为了更好地了解处理、对帧间处理函数中执行的处理需要多长时间进行基准测试将很有帮助。

    之后、您可以估算1024字节的 UART 传输所需的时间。

    获得这些号码后、请与社区分享。

    为了增加可用的处理时间、有可能禁用演示中的某些标志

    谢谢你
    Cesar