IWR1843 mmwave_sdk代码问题:我看到在初始化时设置的执行模式为MMWave_ExecutionMode_ISOLATION,即在MSS里MmwDemo_mmWaveCtrlTask——>MMWave_execute——>MMWave_deviceExecuteFxn里的代码如下:
if (ptrMMWaveMCB->initCfg.executionMode == MMWave_ExecutionMode_ISOLATION)
{
/* Isolation Mode: There is no need to monitor the peer domain. We are done. */
retVal = 0;
goto exit;
}
而不会执行Cooperative Mode:代码段里的MmwDemo_eventCallbackFxn。在MSS里相当于没有调用监视函数MmwDemo_DPC_ObjectDetection_reportFxn。
而在DSS初始化函数里 dpmInitCfg.reportFxn = MmwDemo_DPC_ObjectDetection_reportFxn;
但是在MmwDemo_DPC_ObjectDetection_dpmTask里并没有调用。
我的问题就是这个报告监视函数MmwDemo_DPC_ObjectDetection_reportFxn是在哪里调用的,因为这个函数里包含通过uart发送数据到上位机。感觉有点迷糊,而且我去追函数调用树在执行上下文中MMWave_config等函数都没有调用到配置是在初始化里就完成的么,还是有默认值,
Chris Meng:
你好,
请提供一下你使用的软件版本。
请阅读一下置顶帖:e2echina.ti.com/…/196915
user6442823:
回复 Chris Meng:
芯片型号:iwr1843
芯片silicon 版本:96ZCT29502AD
自制板/EVM板:EVM板
mmwave SDK版本:mmwave_sdk_03_02_00_04
CCS版本:V10.1.0
操作系统:windows10
Chris Meng:
回复 user6442823:
你好,
首先建议你使用最新的mmwave sdk LTS 3.5版本。
mmwave SDK里有详细的系统执行流程图,例如文档/mmwave_sdk_03_05_00_04/packages/ti/demo/xwr18xx/mmw/docs/doxygen/html/index.html。
user6442823:
回复 Chris Meng:
不是系统执行流程图,我是直接在代码里看的。
Chris Meng:
回复 user6442823:
你好,
请参考系统执行流程图和代码来理解代码是如何执行的,3.x版本的sdk使用了DPM/DPU的新架构。
user6442823:
回复 Chris Meng:
MmwDemo_DPC_ObjectDetection_reportFxn这个函数是在DSS代码里哪个地方执行的。我就是参考的系统执行流程图和实际代码,结果找不到这个函数执行的位位置,才来问的。
Chris Meng:
回复 user6442823:
你好,
请看看下面的相关代码和实现。
\packages\ti\demo\xwr18xx\mmw\dss\dss_main.c
/* Setup the configuration: */ dpmInitCfg.socHandle = gMmwDssMCB.socHandle; dpmInitCfg.ptrProcChainCfg = &gDPC_ObjectDetectionCfg; dpmInitCfg.instanceId = 0xFEEDFEED; dpmInitCfg.domain = DPM_Domain_REMOTE; dpmInitCfg.reportFxn = MmwDemo_DPC_ObjectDetection_reportFxn; dpmInitCfg.arg = &objDetInitParams; dpmInitCfg.argSize = sizeof(DPC_ObjectDetection_InitParams); /* Initialize the DPM Module: */ gMmwDssMCB.dataPathObj.objDetDpmHandle = DPM_init (&dpmInitCfg, &errCode);
\packages\ti\control\dpm\dpm.h
/** * @b Description * @n * Applications can register a report function which is invoked by the module * to report the status of the processing chain to the application. The mechanism * can be used to inform the applications about the status of the processing chain. * * @param[in] reportType * Report Type * @param[in] instanceId * DPM Instance Identifier which generated the response. * @param[in] errCode * Error code associated with the status event. This will be set to 0 to indicate * that the report was successful. * @param[in] arg0 * Optional argument. * @param[in] arg1 * Optional argument. * * *NOTE*: Please refer to the @ref DPM_Report for more information * about the optional arguments and how to interpret them. * * @retval * Not applicable */typedef void (*DPM_ReportFxn) (DPM_Report reportType, uint32_t instanceId, int32_t errCode, uint32_t arg0, uint32_t arg1);
\packages\ti\control\dpm\src\dpm_msg.c
const DPM_MsgHandler gDPMMessageFxnTable[DPM_MessageId_MAX] ={ NULL, /* Invalid : DPM_MessageId_INVALID */ DPM_msgStartHandler, /* Start : DPM_MessageId_START */ DPM_msgStopHandler, /* Stop : DPM_MessageId_STOP */ DPM_msgDPCCfgHandler, /* DPC Cfg : DPM_MessageId_DPC_CFG */ DPM_msgBSSFaultHandler, /* BSS Fault : DPM_MessageId_BSS_FAULT */ DPM_msgAssertHandler, /* Assert : DPM_MessageId_DPC_ASSERT */ DPM_msgResultHandler, /* Result : DPM_MessageId_RESULT */ DPM_msgDPCInfoHandler, /* DPC Info : DPM_MessageId_DPC_INFO */ DPM_msgResponseHandler /* Response : DPM_MessageId_RESPONSE */};