Memory Map

The following diagram shows an example of the memory map for a PIC32MX device (PIC32MX795F512L) with 512 KB of program memory for a typical application running in Kernel mode, after the start-up code has executed:

memory-map.png

The segments, KSEG0 and KSEG1, both translate to physical address 0x0 and include all of program Flash and data memory; however, KSEG0 is cacheable and KSEG1 is not.

The uncached region, KSEG1, also provides virtual address space translation to the Special Function Registers (SFRs) for PIC32MX family devices.

Note that XC32 will place all C-runtime startup code starting at virtual address 0xBFC00000 in KSEG1. Recall that this region (KSEG1) is the only one guaranteed to behave properly from system reset. 0xBFC00000 is translated (via a fixed mapping) to physical address 0x1FC00000 (Boot Flash Memory).

Physical addresses are used by the DMA controller, the Flash controller (when programming Flash memory), and when defining protected memory regions.

Virtual addresses are used by the CPU for fetching and reading or writing data or peripheral SFRs.

Keep this in mind when setting up these modules.

KSEG0/KSEG1 Code Space Mapping Detail

While difficult to see from the diagram above, remember that the mapped KSEG0/KSEG1 addresses don't occupy the same physical addresses!

The following diagram shows where cacheable/non-cacheable KSEG0/KSEG1 virtual memory segments are mapped into physical memory on PIC32MX795F512L:

code-space-mapping-mx795.png
© 2024 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.