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.

MPAX for DDR3 on 6678

Hi,

I need some help with the MPAX capability to map a virtual address to multiple physical locations in DDR3.

By default the section 1 of MPAX is already programmed to map 0x8000,0000 -0xFFFF,FFFF to the EMIF ddr3 0x8:0000:0000 to 0x8:7FFF:FFFF. my DDR3 is actually only 512M in length i.e. 0x2000,0000

My memory map is such that I have some stuff placed in DDR3 at 0x8000,0000 in the virtual corepac space and am reserving 32M for that to be used by all cores. I also want to have private data placed at 0x8200,0000 in virtual space and I want that to map to my EMIF (DDR3) physical location at 0x8:0400:0000 in 36 bit physical space for core 0. For other cores, I can then place it at 0x8:0600:0000 and so on. In other words, I am trying to have 32M say of private data available per core.

When I do the following instructions, and then proceed to the spot where the appropriate memory is initialized, I am finding that those variables are not being set. The variables are in the memory map at 0x8200,0000. What am I doing wrong? 

     /* Phy address base: 0x8400 0000
      * Size: 32MB (0x18 according to encoding)
      * Virtual address: 0x8200 0000
      * Permission: 0xFF
      * MAR used: (0x8200 0000 >> 24) = 129
      */

     /* map using MPAX segment 2 registers */
     xmpaxPtr  = (uint32_t *)(XMPAXH2);
     *xmpaxPtr = ((MAPPED_VIRTUAL_ADDRESS >> 12) << 12) | (0x18);

     xmpaxPtr  = (uint32_t *)(XMPAXL2);
     *xmpaxPtr = ((0x84000000 >> 12) << 8) | (0xFF);

I have also tried the above but replacing 0x84000000 with 0x80400000

Thanks,

Aamir