TI中文支持网
TI专业的中文技术问题搜集分享网站

关于DM8168 link之间的通信

大家好:

        最近在做关于DM8168的项目,使用的demo是vdec_vdis,也就是A8核从.ini文件获取了比特流,然后传给M3 Video核进行解码,最后再传到M3 vpss进行HDMI显示。现在有以下问题想请教下:

        1.A8核的IPC_BITS_OUT link获取了比特流数据,数据流信息保存在*pListElem指针中,然后将其压入到listMP队列的尾部,相关代码为status = ListMP_putTail(pObj->listMPOutHndl, (ListMP_Elem *) pListElem);IPC_BITS_OUT link的next link是M3 Video核上的IPC_BITS_IN link,该link需要获取原来存放有比特流信息的指针,而它为什么是从listMP队列的首部获得的?listMP队列和link的输入队列,输出队列有什么区别呢?

相关代码为pListElem = ListMP_getHead(pObj->listMPOutHndl);IpcBitsInLink_getBitBuf(pObj, pListElem, &pBitBuf);

        2.解码后数据存放在*addr【0】【0】指向的区域,在原来的模式下实现的是将该指针传给A8核,并由A8核调用PCIe传输数据至C6678进行一些处理再将处理后的数据传回来。而现在我想做成ping-pong buffer的模式,也就是想新传一个指针(不是原来的*addr【0】【0】)至A8核用于接收C6678处理完成的数据,想请问下这该怎么实现?

希望能得到各位的指教,谢谢。

Chris Meng:

你好,

1.我认为是FIFO的逻辑。

https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/p/236576/830688#830688

The ipc module ListMP provides the functionality to put data in shared region and get data from shared region. This is the same module that is used in RDK to exchange frames from one core to another.

ListMP code can be found in ti_tools/<ipc>/packages/ti/sdo/ipc/ListMP.c

Function to put in sharedMemory is ListMP_putTail

2. 不太理解你说的ping-pong模式。你是想把该数据copy一份么?

赞(0)
未经允许不得转载:TI中文支持网 » 关于DM8168 link之间的通信
分享到: 更多 (0)