The processor references memory when it fetches an instruction and when it accesses data with a load or store instruction. Programs reference memory locations using a 32-bit effective address with 32-bit MicroBlaze, and up to a 64-bit effective address with 64-bit MicroBlaze, calculated by the processor.
When real mode is enabled, the physical address is identical to the effective address and the processor uses it to access physical memory. After a processor reset, the processor operates in real mode. Real mode can also be enabled by clearing the VM bit in the MSR.
Physical-memory data accesses (loads and stores) are performed in real mode
using the effective address. Real mode does not provide system software with virtual
address translation, but the full memory access-protection is available, implemented
when C_USE_MMU
> 1 (User Mode) and C_AREA_OPTIMIZED
=
0 (Performance) or 2 (Frequency). Implementation of a real-mode memory manager is more
straightforward than a virtual-mode memory manager.
Real mode is often an appropriate solution for memory management in simple
embedded environments, when access-protection is necessary, but virtual address
translation is not required. This can be achieved by configuring memory management to
act as a Memory Protection Unit (MPU) by setting C_USE_MMU
to 2
(Protection).