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.
Hi,all:
I have two c6678.such as DSP0 and DSP1.
I want to transfer data from DDR of DSP0 to DDR of DSP1 via SRIO.
Although I have looked into some examples from C6678 PDK .There still are some
doubts around me.I don't want to use message mode and want to use direct IO mode.
But the examples in the C6678 pdk all belongs to message mode transfer.So it is no use.
If I want to use direct IO transfer. how to do?
1.
how to write data to DSP1'DDR on DSP0?
How to remap DSP1'DDR into the memory space of DSP0?
How does local DSP0 visit memory space of remote DSP1?
I want to let DSP0 read and write the memory space of remote DSP1 like that it is located in the
local memory of DSP0.
how to do that?
Before I use hyperlink,I can map DSP1'DDR to hyperlink data space (0x4000 0000) of
DSP0.Then DSP0 can freely read and write from/to DSP1'DDR.
But I see that memory map of C6678 doesn't have SRIO data space.So,I cannot do remap
action like for hyperlink.
How to achieve the goal?
2.
When DSP0 transfer data to DSP1.How does DSP0 notify DSP1 by interrupt?
The SRIO UG say that DSP0 can trigger an DoorBell event from DSP0 to DSP1 to
notify DSP1 that data is ready.
Is that true? If ture.How can DSP0 trigger a DoorBell interrupt to DSP1?
By the way,I know how to bind a DoorBell or SRIO interrupt on DSP1.So you only need
to tell me how does DSP0 trigger or initiate a transfer interrupt to notify DSP1 that data has
reached?
B.R!
David George said:But the examples in the C6678 pdk all belongs to message mode transfer.So it is no use.
If I want to use direct IO transfer. how to do?
There is a Direct IO example in the PDK at: C:\ti\pdk_C6678_1_1_2_6\packages\ti\drv\srio\example\SRIOLoopbackDioIsr
Having said that, it is a loopback example, so take a look at this post, which tells how to modify to make non-loopback, and it modified the above example to remove references to non-needed LLDs.
http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/259319/908521.aspx#908521
David George said:1.
how to write data to DSP1'DDR on DSP0?
How to remap DSP1'DDR into the memory space of DSP0?
How does local DSP0 visit memory space of remote DSP1?
I want to let DSP0 read and write the memory space of remote DSP1 like that it is located in the
local memory of DSP0.
how to do that?
Before I use hyperlink,I can map DSP1'DDR to hyperlink data space (0x4000 0000) of
DSP0.Then DSP0 can freely read and write from/to DSP1'DDR.
But I see that memory map of C6678 doesn't have SRIO data space.So,I cannot do remap
action like for hyperlink.
How to achieve the goal?
This is exactly what DirectIO transfers (NWrite/NRead) are used for. The only difference with SRIO from Hyperlink is that there are no memory mapping windows. Our SRIO implementation uses the exact memory address that is sent in the SRIO packet to write to and read from. You can access any memory mapped address in the connected DSP by simply using the address of interest (as long as memory protection is turned on).
David George said:2.
When DSP0 transfer data to DSP1.How does DSP0 notify DSP1 by interrupt?
The SRIO UG say that DSP0 can trigger an DoorBell event from DSP0 to DSP1 to
notify DSP1 that data is ready.
Is that true? If ture.How can DSP0 trigger a DoorBell interrupt to DSP1?
By the way,I know how to bind a DoorBell or SRIO interrupt on DSP1.So you only need
to tell me how does DSP0 trigger or initiate a transfer interrupt to notify DSP1 that data has
reached?
B.R!
DSP0 can trigger a doorbell interrupt in DSP1 in two ways. If you are sending just a doorbell, you have to program the LSU with the Ftype = 10, along with the Drbll_info field. SW is required to initiate this. If you are sending data packets, say NWrites(Ftype = 5, Ttype =4 ), and want to have the SRIO HW automatically generate a doorbell after the last NWrite packet is sent, then you simply program the Drbll_info field and set the Drbll_val bit in the LSU at the same time you program the NWrite LSU fields, and it will reuse the DestID that was used for the NWrite.
For more info on doorbell interrupt handling see section 2.3.9.1.1. in: http://www.ti.com/lit/ug/sprugw1b/sprugw1b.pdf
Regards,
Travis