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.

IWR6843AOP: mss与dss的DPM_ioctl调用问题

Part Number: IWR6843AOP

您好,我在阅读基于人员跟踪的呼吸心跳源码时,遇到了一个问题:

dss中的DPC_ObjectDetection_ioctl函数有cmd == DPC_OBJDET_IOCTL__DYNAMIC_EXECUTE_RESULT_EXPORTED时的处理,此处会进行objDetObj->interSubFrameProcToken--,以标志当前帧处理完成;

mss中的DPC_ObjectDetection_ioctl函数则没有这段处理。

我在找调用位置时,发现仅在mss_main.c中存在如下调用:

DPM_ioctl (gMmwMssMCB.objDetDpmHandle,
DPC_OBJDET_IOCTL__DYNAMIC_EXECUTE_RESULT_EXPORTED,
&exportInfo,
sizeof (DPC_ObjectDetection_ExecuteResultExportedInfo));

但是mss_main这里的句柄gMmwMssMCB.objDetDpmHandle中注册的函数是mss中的,即应该调用文件objdetrangehwa.c中mssDPC_ObjectDetection_ioctl函数;但是实际效果看起来调用的是dss中的。

请问mss中标志帧处理完成的这个DPM_ioctl函数是如何传递到dss中,调用dss中的DPC_ObjectDetection_ioctl函数进行处理的?

  • 1. DPM 在 MSS 和 DSS 之间通信:DPM 是负责处理数据路径的模块,有机制将信息从一个处理器传递到另一个处理器。检查DPM的配置和初始化代码,看看是否有配置项或回调函数,可以让你在MSS中调用DSS的ioctl函数。

    2. 双处理器间的共享变量:有一些共享的全局变量或者内存区域,允许MSS和DSS之间共享信息。在MSS中调用DSS的ioctl函数之前,检查一下是否有共享的结构体或者变量被更新,然后DSS在其DPC_ObjectDetection_ioctl函数中读取这些值。

    3. 回调函数或事件通知:DPM 或者其他模块可能提供了回调函数或者事件通知机制,可以在帧处理完成时触发一个事件,然后DSS注册相应的处理函数。

  • Hi

    DPM本身即为IPC和mailbox的顶层封装,

    当调用MSS DPM_ioctl发送用户自定义的cmd时,会进一步调用DPM_pipeSend,将消息插入到DPM的IPC队列,

    同时DSS端的DPM_excute 函数会通过DPM_msgRecv 接收IPC发送的信息,通知DPC进行相应处理.

    详见C:\ti\mmwave_sdk_03_06_00_00-LTS\packages\ti\control\dpm\src 下源码.

    Thanks

    Ken