Tool/software: Linux
Hi,
We have developed a custom board that deviates from the standard EMIF configuration used by the AM5728 IDK. We have 2GB on each EMIF which would mount to a total of 4GB or addressable memory. Here is what we have understood from information we gathered from the TRM and the e2e forum.
The MA_LSM and DMM LISA MAP can be used to section only the lower 2GB. We have configured the lower 2GB interleaved over a 256-byte boundary.
0x3FFF_FFFF---------------------> | EMIF1 | EMIF2 |
| emif(a) | emif(b) |
| | |
0x0000_0000-----------------------> | | |
1. From our understanding, this means that 0x8000_0000 to 0xFFFF_FFFF will be mapped to physical addresses 0x0000_0000 to 0x3FFF_FFFF in an interleaved manner (that is, with the 8th bit of the address field deciding which memory controller will be hit). Are we right in assuming this? Each controller contributes 1GB.
2. The TRM does say that the upper 2GB has fixed interleaving at a 256-byte boundary. Does enabling the MA_PRIORITY[8] HIMEM_INTERLEAVE_UN ensure that the upper 2GB can be accessed or is there something else that needs to be done?
The interleaving should work the same as understood above. Please correct me if I'm wrong.
So we end up with something like this
Assuming that the above is true and the hardware has been configured right for accessing the 4GB address space.
1. What are changes needed in the Linux kernel source/dts to make sure that the kernel can leverage the entire 4GB space.
2. Once that is done is there a tool that can allow accesses to addresses wider than 32-bits? (assuming that is what will be needed; please correct me if I'm wrong)
Thanks very much.
Regards,
Shaunak