Memory Controller

From wikiPodLinux

The Memory Controller is a part of the PortalPlayer systems for mapping the memory (SDRAM) to arbitrary locations in the 32 bit address range.

It also manages the 2nd level cache for the ARM CPU(s)

See the PP5020 page for information on its register addresses

It has four pairs of 4 byte values to configure logical-to-physical mappings. The first value specifies the logical address range that the code addresses, while the second value specifies the physical address that's mapped in for it.

For example, on a PP5020, SDRAM's physical address starts at 0x10000000, while the Flash ROM starts at address 0. The linux kernel maps the memory to address 0 (overshadowing the Flash ROM in that process) by setting the following values in the memory controller:

  • 0xf000f010: 0x00003a00
  • 0xf000f014: 0x10003f84

The upper 16 bit of each value specify the upper 16 bit of the logical or physical address. The lower 16 bit of the first value appears to be a mask, while the lower bits in the second values seem to be some flags, but they've not been decyphered yet.

Personal tools