hi:
在System_ipc_msgq.c文件中,System_ipcMsgQSendMsg函数为IPC核间通信使用,大致
思路是,先调用一个msg put ,ARM发消息给DSP,然后,再msg get ,等待DSP回复反馈。
如下所示:
先调用
MessageQ_put(gSystem_ipcObj.remoteProcMsgQ[procId],
(MessageQ_Msg) pMsgCommon);
后调用
MessageQ_get(gSystem_ipcObj.selfAckMsgQ, (MessageQ_Msg *) & pAckMsg,
BIOS_WAIT_FOREVER);
我的问题是:
既然System_ipcMsgQSendMsg是核间通信,要么是VPSS m3到video m3 或者 VPSS M3到
dsp,或者是A8和M3以及DSP之间数据交互。但是,为什么只有在A8上面的System_ipc_msg
.c文件中有MessageQ_get 和 put,我的理解是,VIDEO M3 VPSS M3以及DSP上面,都应该
开辟线程专门进行消息交互,同样调用MessageQ_put 或者get ,但是,似乎,并没有在DSP,
M3上面看到类似调用?why?
Armstrong:
no one?
PKF:
回复 Armstrong:
up!
PKF:
up
Robin Edson:
在VPSS VIDEO DSP中跑得是SYS/BIOS,对应的核间通信是IPC,其实也封装了相应接口,只不过是java的类库,可以在ccs环境下看到。
http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbios/6_35_03_47/exports/bios_6_35_03_47/docs/cdoc/index.html
pan lian:
DSP上也有,dsp上有msgQ线程,一直在监测是否有msgQ消息,有的话用本地通信方式将msgQ的内容发送给本地Link。
参见\ipnc_rdk\ipnc_mcfw\mcfw\src_bios6\links_common\system\system_ipc_msgq.c.