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.

IPNC RDK: IPC link and passing address confusion

Hi everyone,

I'm using IPNC RDK ver3.5 and IPNC DM8127.

My custom usecase is:

ARM->ipcFrameOutHost(VIDFrame)->ipcFrameInDsp->algLink(FVID2_frame)->ipcBitsOutDsp(Bitstream)->ipcBitsInHost->ARM.

The dataflow is smooth now,but the entire dataflow includes these three dataformats:

1.VIDFrame_Buf

2.Bitstream_Buf

3.FVID2_frame

and virtual,phy address are passed between these dataformats.

In VIDFrame_Buf, I use Vsys_allocBuf() to alloc a buf for my file and copy its phy Addr to VIDFrame_Buf.phyAddr[0][0].Finally my Alglink can access this frame through this VIDFrame_Buf.phyAddr[0][0].

In Bitstream_Buf, I put the result of my Alg to Bitstream_Buf.addr(and this addr seems to be virtual addrs since there is another param:Bitstream_Buf.phyAddr).Finally my ARM can access the result through this Bitstream_Buf.addr.

I've read the related source code about IpcLink_tsk.c,and see some information copy between different dataformats,but I sitll can't figure out how this Address pass will work?

So here are my questions:

1.I've also read the 《IPNC_RDK_MemoryMapAnalysis.pdf》 ,but I'm really confused about the relationship between CMEM and SR1, Why I use Vsys_allocBuf(),which finally use CMEM function to alloc a mem for SR1?

3.Since I use:

IpcBitsInLink_getFullVideoBitStreamBufs(),

IpcBitsInLink_putEmptyVideoBitStreamBufs(),

IpcFramesOutLink_getEmptyVideoFrames(),

IpcFramesOutLink_putFullVideoFrames()

to process data,does this mean all these data will be in SR1 area?

2.In algLink,why I copy the address of Alg result to Bitstream_Buf.addr,and then the ARM can access the result through this address,since I thought this address should be some phy address on DSP,not a virtual address.

Thank you for your patience.

regards,

Zhao