SPRUIE9D May 2017 – May 2024 DRA74P , DRA75P , DRA76P , DRA77P
In this example, assume there is 1 GiB of external memory evenly spread onto two address spaces. The address range for address space 0 must start at offset 0x2000_0000 (see Table 17-19).
Address Range | Memory Controller | Memory Controller Address Space(1) | Memory Controller Address Range |
---|---|---|---|
0x8000_0000 to 0x9FFF_FFFF | EMIF1 | 0x0 | 0x0000_0000 to 0x1FFF_FFFF |
0xA000_0000 to 0xBFFF_FFFF | EMIF1 | 0x0 | 0x2000_0000 to 0x3FFF_FFFF |
This configuration requires two nonoverlapping sections to be set. They can be defined in any order because there is no concern with priority in this case (see Table 17-20):
Bit Field | Section 0 (DMM_LISA_MAP_0) | Section 1 (DMM_LISA_MAP_1) |
---|---|---|
[31:24] SYS_ADDR | 0x80 | 0xA0 |
[22:20] SYS_SIZE | 0x5 | 0x5 |
[19:18] SDRC_INTL | 0x0 (not applicable) | 0x0 (not applicable) |
[17:16] SDRC_ADDRSPC | 0x0 | 0x0 |
[9:8] SDRC_MAP | 0x1 (only EMIF1) | 0x1 (only EMIF1) |
[7:0] SDRC_ADDR | 0x00 | 0x20 |
To check whether an address hits a section, use the 8 upper address bits of the address and mask them with the hit mask: 28–2SYS_SIZE. If the result is equal to SYS_ADDR, the section is hit.
To define the physical address to be issued to the memory controller, use the 8 upper address bits of the system address, mask them with the address mask: 2SYS_SIZE–1, and OR them with SDRC_ADDR. This gives the resulting 8 upper physical address bits. All lower address bits are forwarded unchanged.
Request to address 0x99AE_37F0:
This request is forwarded to address 0x19AE_37F0, address space 1 of the memory controller.
Request to address 0xB7FF_0340:
This request is forwarded to address 0x37FF_0340, address space 0 of the memory controller.