Memory Protection Unit
ARM DDI 0363E Copyright © 2009 ARM Limited. All rights reserved. 7-2
ID013010 Non-Confidential, Unrestricted Access
7.1 About the MPU
The MPU works with the L1 memory system to control accesses to and from L1 and external
memory. For a full architectural description of the MPU, see the ARM Architecture Reference
Manual.
The MPU enables you to partition memory into regions and set individual protection attributes
for each region. The MPU supports zero, eight, or twelve memory regions.
Note
If the MPU has zero regions, you cannot enable or program the MPU. Attributes are only
determined from the default memory map when zero regions are implemented.
Each region is programmed with a base address and size, and the regions can be overlapped to
enable efficient programming of the memory map. To support overlapping, the regions are
assigned priorities, with region 0 having the lowest priority and region 11 having the highest.
The MPU returns access permissions and attributes for the highest priority region where the
address hits.
The MPU is programmed using CP15 registers c1 and c6, see MPU control and configuration
on page 4-5. Memory region control read and write access is permitted only from Privileged
modes.
Table 7-1 shows the default memory map.
Table 7-1 Default memory map
Address
range
Instruction memory type Data memory type
Execute Never
Instruction
cache enabled
Instruction
cache disabled
Data cache
enabled
Data cache
disabled
0xFFFFFFFF
Normal
Non-cacheable
only if HIVECS is
TRUE
Normal
Non-cacheable
only if HIVECS is
TRUE
Strongly Ordered Strongly
Ordered
Instruction
execution only
permitted if
HIVECS is TRUE
0xF0000000
0xEFFFFFFF
- - Strongly Ordered Strongly
Ordered
Execute Never
0xC0000000
0xBFFFFFFF
- - Shared Device Shared
Device
Execute Never
0xA0000000
0x9FFFFFFF
- - Non-shared
Device
Non-shared
Device
Execute Never
0x80000000
0x7FFFFFFF
Normal,
Cacheable,
Non-shared
Normal,
Non-cacheable,
Non-shared
Normal,
Non-cacheable,
Shared
Normal,
Non-cacheable,
Shared
Instruction
execution permitted
0x60000000
0x5FFFFFF
Normal,
Cacheable,
Non-shared
Normal,
Non-cacheable,
Non-shared
Normal,
WT Cacheable,
Non-shared
Normal,
Non-cacheable,
Shared
Instruction
execution permitted
0x40000000
0x3FFFFFFF
Normal,
Cacheable,
Non-shared
Normal,
Non-cacheable,
Non-shared
Normal,
WBWA Cacheable
, Non-shared
Normal,
Non-cacheable,
Shared
Instruction
execution permitted
0x00000000