Hi,
We have two 6678 devices connected via Hyperlink. Device B maps some of the DDR of Device A such that it sees some window of Device A's memory at the Hyperlink peripheral address space starting at 0x40000000. Now, I wish to address that memory as if it were located in local DDR, so I use the CorePac's XMC mapping functionality, which works well for CorePac access but, as expected, not for EDMA as it is external to the CorePac.
To achieve the same effect for EDMA access I am trying to use the MPAX SES to map a virtual block within the 0x80000000 area to 0x40000000, but it simply has no effect on EDMA transfers. (As a test I also tried to map to some other physical DDR address, and that did work, so I'm pretty sure I am using the registers properly.)
Here is the code I am using:
int privid=0;
int mpax_entry = 1; // don't touch default entry 0
uint32_t curr_block = 0x80000000, curr_dest = 0x40000000;
hMsmc->SES_MPAX_PER_PRIVID[privid].SES[mpax_entry].MPAXL = (curr_dest >> 4) | 0x3f;
hMsmc->SES_MPAX_PER_PRIVID[privid].SES[mpax_entry].MPAXH = curr_block | segment_size_code;
The values written here are actually identical to the values written to the CorePac XMC registers, and according to sprugw7a 2.2.4 should have the same effect, but it's not working for me. Am I missing something?
Thanks,
-itay