Memory Protection Unit
(MPU)
Talluri naresh
● The Memory Protection Unit (MPU) is a programmable
unit that allows privileged software to define memory
access permission
● It monitors transactions
● which can trigger a fault exception when an access
violation is detected.
● The MPU programmers’ model allows the privileged
software to define memory regions and assign memory
access permission and memory attributes to each of
them.
● It supports upto 16 regions
● The memory attributes define ordering and merging
behaviour of the region
● In MPU mem manage fault address register(MMFAR) is
there which provide information about the cause of the
fault and address being accessed in the case of data faults
● If MMFAR is disabled or cannot be triggered because
execution priority is high
● In MPU some regions are associate with secure and non-
security state
● MPU configuration do not define access permissions and
attributes for debug access
Key features of the MPU:-
● The smallest size that can be programmed for an MPU region is 32 bytes.
● The maximum size of any MPU region is 4GB, but must be a multiple of 32
bytes.
● All regions must begin on a 32 byte aligned address.
● Regions have independent read/write access permissions for privileged
and unprivileged code.
● The eXecure Never (XN) attribute enables separation of code and data
regions
Secure software can access a Non-secure MPU using an alias address (address
0xE002ED90)
● The regions are numbered 0 to 15
● In addition, there is a region called the default region with an id of -1.
All the 0-15 memory regions take priority over the default region.
4 Gbytes -> example of
overlapping regions
Region 0
Region 1
Region 4
Region 2
Region 3
Region 5
● the region 4 overlapping the regions
● 0 and 1. The region 5 is enclosed completely within the region 3
● Since the priority is in an ascending order
● overlap regions (in orange) have the priority.
● So if the region 0 is writeable and the region 4 is not, an address
falling in the overlap between 0 and 4 is not writeable.
Memory model:-
● the processor has a fixed default memory map that provides up to 4 Gbytes of
addressable memory
● The memory map and the programming of the MPU split the memory map
into regions
● Each region has a defined memory type and memory attributs
● The memory type and attributes determine the behavior of accesses to the
region.
Vendor -specific memory
(511Mbytes)
Private peripheral bus
(1.0Mbytes)
External device
(1.0Gbytes)
External RAM
(1.0Gbytes)
Peripheral
(0.5Gbytes)
SRAM
(0.5Gbytes)
Code
(0.5Gbytes)
Memory type:-
● Memory types are divided into Normal Memory and Device Memory.
1) Normal memory:-
● It is used to access general instruction
● It allows to perform some memory access optimization such as
access reordering and merging
● Normal memory can have several attributes that can be applied to it
a) cacheability:- memory can be cacheable or non-cacheable
b) Shareability:- normal memory can Shareable or non-shareable
c) eXecute never:- memory can be marked as executable or execute
never
● The cacheability further divided into cache policy,allocation and transient
hint
● Cache policy:- Write-Through or Write-Back
● Allocation:- Cache line allocation hintas, for read and write access.
● Transient hint:- A hint to the cache that the data might only be needed in
the cache temporarily
Shareability:-
The shareability attribute allows software to advertise to the
hardware which of these devices must be able to see any updates to a
particular area of memory.
Device Memory:-
● Device memory must be used for memory regions that cover
peripherals control registers
The Device memory type has several attributes:-
• G or nG – Gathering or non-Gathering. Multiple accesses to a
device can be merged into a single transaction except for
operations with memory ordering semantics, for example,
memory barrier instructions, load acquire/store release.
• R or nR – Reordering or Non-reordering.
• E or nE – Early Write Acknowledge (similar to bufferable).
MPU registers :-
● The MPU registers are banked between Secure and Non-secure states
● The programmers’ model for Secure MPU and Non-secure MPU are the same,
but the number of MPU regions for the two MPUs can be different.
● MPU registers are privileged access only (unprivileged accesses generate a
fault exception)
● By default the MPU is disabled after reset.
● The memory type is encoded as an 8-bit field that is stored in one of the
Memory Attribute Indirection Registers (MAIR).
● Each MAIR register has four 8-bit fields, allowing eight memory types to be
defined at any one time.
Register address NS address description
MPU_TYPE 0xE000ED90 0xE002ED90 MPU Type Register
MPU_CTRL 0xE000ED94 0xE002ED94 MPU control register
MPU_RNR 0XE000ED98 0xE002ED98 MPU region number
Register
MPU_RBAR 0xE000ED9C 0xE002ED9C MPU Region Base
Address register
MPU_RLAR 0xE000EDA0 0xE002EDA0 MPU Region Base
Limit register
MPU_RBAR_A1 0xE000EDA4 0xE002EDA4 MPU Region Base
Address register alias 1
register Address NS Address Alias Description
MPU_RBAR_A2 0xE000EDAC 0xE002EDAC MPU Region Base
Address register alias 2
MPU_RBAR_A3 0xE000EDB4 0xE002EDB4 MPU Region Base
Address Register Alias 3
MPU_RLAR_A1 0xE000EDA8 0xE002EDA8 MPU Region Limit
Address Register Alias 1
MPU_RLAR_A2 0xE000EDB0 0xE002EDB0 MPU Region Limit Address
Register Alias 2
MPU_RLAR_A3 0xE000EDA8 0xE002EDB8 MPU Region Limit Address
Register Alias 3
MPU_MAIR0 0xE000EDC0 0xE002EDC0 MPU Memory Attribute
Indirection Register 0
MPU_MAIR1 0xE000EDC4 0xE002EDC4 MPU Memory Attribute
Indirection Register 1
MPU_TYPE:-
The MPU Type register indicates how many regions the MPU supports for the
selected security state. This register is read only.
[31:16]-> reserved
[15:8] -> region
[7:1] ->reserved
[0] -> separate
MPU_CTRL:-
The MPU Control register provides various programmable bit fields for MPU enable and features.
[31:3] -> reserved
[2] ->Privileged background region enable
[1] ->MPU Enable for HardFault and NMI(non-maskable)
[0] ->MPU enable/disable
MPU_RNR:
The MPU Region Number Register selects the region that is accessed by the
MPU_RBAR and MPU_RLAR
[31:8] -> reserved
[7:0] -> Region number. Selects and indicates the region that is accessed by
the
MPU_RBAR and MPU_RLAR.
MPU_RBAR:
The MPU Region Base Address Register defines the starting address of an MPU
region and access permission
[31:5] ->Starting address of MPU region address
[4:3] ->Shareability for Normal memory
[2:1] ->Access permissions
[0] ->eXecute never attribute
MPU_RLAR:
The MPU Region Limit Address Register defines the ending address of an MPU region, region
enable, and an indirection index to memory attribute array
[31:5] -> ending address of MPU region address.
[4] -> reserved
[3:1] ->Attribute Index. Select memory attributes from attribute sets
in
MPU_MAIR0 and MPU_MAIR
[0] -> enable /disable the region
MPU_RBAR_A1/2/3 and MPU_RLAR_A1/2/3:-
An alias of MPU_RBAR register to allow faster programming of different MPU regions. The region
number that is selected when using MPU_RBARn and MPU_RLARn is equal to (MPU_RNR[7:2]<<2)
Condition When Accessing MPU Region accessed
MPU_RNR=0 MPU_RBAR / MPU_RLAR 0
MPU_PNR=1 MPU_RBAR_A1 / MPU_RLAR_A1 1
MPU_PNR=4 MPU_RBAR / MPU_RLAR 4
MPU_PNR=5 MPU_RBAR_A1 / MPU_RLAR_A1 5
MPU_PNR=6 MPU_RBAR_A2 / MPU_RLAR_A2 6
MPU_MAIR0, MPU_MAIR1:-
The MPU Attribute Indirection Register 0 and 1 provide eight sets of 8-bit memory
attributes, which can
be referenced by AttrIndx in MPU_RLAR to determine the memory attribute for an
MPU region.
Thank you

Memory Protection Unit (MPU) (1).pptx

  • 1.
  • 2.
    ● The MemoryProtection Unit (MPU) is a programmable unit that allows privileged software to define memory access permission ● It monitors transactions ● which can trigger a fault exception when an access violation is detected. ● The MPU programmers’ model allows the privileged software to define memory regions and assign memory access permission and memory attributes to each of them. ● It supports upto 16 regions
  • 3.
    ● The memoryattributes define ordering and merging behaviour of the region ● In MPU mem manage fault address register(MMFAR) is there which provide information about the cause of the fault and address being accessed in the case of data faults ● If MMFAR is disabled or cannot be triggered because execution priority is high ● In MPU some regions are associate with secure and non- security state ● MPU configuration do not define access permissions and attributes for debug access
  • 4.
    Key features ofthe MPU:- ● The smallest size that can be programmed for an MPU region is 32 bytes. ● The maximum size of any MPU region is 4GB, but must be a multiple of 32 bytes. ● All regions must begin on a 32 byte aligned address. ● Regions have independent read/write access permissions for privileged and unprivileged code. ● The eXecure Never (XN) attribute enables separation of code and data regions Secure software can access a Non-secure MPU using an alias address (address 0xE002ED90)
  • 5.
    ● The regionsare numbered 0 to 15 ● In addition, there is a region called the default region with an id of -1. All the 0-15 memory regions take priority over the default region. 4 Gbytes -> example of overlapping regions Region 0 Region 1 Region 4 Region 2 Region 3 Region 5
  • 6.
    ● the region4 overlapping the regions ● 0 and 1. The region 5 is enclosed completely within the region 3 ● Since the priority is in an ascending order ● overlap regions (in orange) have the priority. ● So if the region 0 is writeable and the region 4 is not, an address falling in the overlap between 0 and 4 is not writeable.
  • 7.
    Memory model:- ● theprocessor has a fixed default memory map that provides up to 4 Gbytes of addressable memory ● The memory map and the programming of the MPU split the memory map into regions ● Each region has a defined memory type and memory attributs ● The memory type and attributes determine the behavior of accesses to the region.
  • 8.
    Vendor -specific memory (511Mbytes) Privateperipheral bus (1.0Mbytes) External device (1.0Gbytes) External RAM (1.0Gbytes) Peripheral (0.5Gbytes) SRAM (0.5Gbytes) Code (0.5Gbytes)
  • 9.
    Memory type:- ● Memorytypes are divided into Normal Memory and Device Memory. 1) Normal memory:- ● It is used to access general instruction ● It allows to perform some memory access optimization such as access reordering and merging ● Normal memory can have several attributes that can be applied to it a) cacheability:- memory can be cacheable or non-cacheable b) Shareability:- normal memory can Shareable or non-shareable c) eXecute never:- memory can be marked as executable or execute never
  • 10.
    ● The cacheabilityfurther divided into cache policy,allocation and transient hint ● Cache policy:- Write-Through or Write-Back ● Allocation:- Cache line allocation hintas, for read and write access. ● Transient hint:- A hint to the cache that the data might only be needed in the cache temporarily Shareability:- The shareability attribute allows software to advertise to the hardware which of these devices must be able to see any updates to a particular area of memory.
  • 11.
    Device Memory:- ● Devicememory must be used for memory regions that cover peripherals control registers The Device memory type has several attributes:- • G or nG – Gathering or non-Gathering. Multiple accesses to a device can be merged into a single transaction except for operations with memory ordering semantics, for example, memory barrier instructions, load acquire/store release. • R or nR – Reordering or Non-reordering. • E or nE – Early Write Acknowledge (similar to bufferable).
  • 12.
    MPU registers :- ●The MPU registers are banked between Secure and Non-secure states ● The programmers’ model for Secure MPU and Non-secure MPU are the same, but the number of MPU regions for the two MPUs can be different. ● MPU registers are privileged access only (unprivileged accesses generate a fault exception) ● By default the MPU is disabled after reset. ● The memory type is encoded as an 8-bit field that is stored in one of the Memory Attribute Indirection Registers (MAIR). ● Each MAIR register has four 8-bit fields, allowing eight memory types to be defined at any one time.
  • 13.
    Register address NSaddress description MPU_TYPE 0xE000ED90 0xE002ED90 MPU Type Register MPU_CTRL 0xE000ED94 0xE002ED94 MPU control register MPU_RNR 0XE000ED98 0xE002ED98 MPU region number Register MPU_RBAR 0xE000ED9C 0xE002ED9C MPU Region Base Address register MPU_RLAR 0xE000EDA0 0xE002EDA0 MPU Region Base Limit register MPU_RBAR_A1 0xE000EDA4 0xE002EDA4 MPU Region Base Address register alias 1
  • 14.
    register Address NSAddress Alias Description MPU_RBAR_A2 0xE000EDAC 0xE002EDAC MPU Region Base Address register alias 2 MPU_RBAR_A3 0xE000EDB4 0xE002EDB4 MPU Region Base Address Register Alias 3 MPU_RLAR_A1 0xE000EDA8 0xE002EDA8 MPU Region Limit Address Register Alias 1 MPU_RLAR_A2 0xE000EDB0 0xE002EDB0 MPU Region Limit Address Register Alias 2 MPU_RLAR_A3 0xE000EDA8 0xE002EDB8 MPU Region Limit Address Register Alias 3 MPU_MAIR0 0xE000EDC0 0xE002EDC0 MPU Memory Attribute Indirection Register 0 MPU_MAIR1 0xE000EDC4 0xE002EDC4 MPU Memory Attribute Indirection Register 1
  • 15.
    MPU_TYPE:- The MPU Typeregister indicates how many regions the MPU supports for the selected security state. This register is read only. [31:16]-> reserved [15:8] -> region [7:1] ->reserved [0] -> separate
  • 16.
    MPU_CTRL:- The MPU Controlregister provides various programmable bit fields for MPU enable and features. [31:3] -> reserved [2] ->Privileged background region enable [1] ->MPU Enable for HardFault and NMI(non-maskable) [0] ->MPU enable/disable
  • 17.
    MPU_RNR: The MPU RegionNumber Register selects the region that is accessed by the MPU_RBAR and MPU_RLAR [31:8] -> reserved [7:0] -> Region number. Selects and indicates the region that is accessed by the MPU_RBAR and MPU_RLAR.
  • 18.
    MPU_RBAR: The MPU RegionBase Address Register defines the starting address of an MPU region and access permission [31:5] ->Starting address of MPU region address [4:3] ->Shareability for Normal memory [2:1] ->Access permissions [0] ->eXecute never attribute
  • 19.
    MPU_RLAR: The MPU RegionLimit Address Register defines the ending address of an MPU region, region enable, and an indirection index to memory attribute array [31:5] -> ending address of MPU region address. [4] -> reserved [3:1] ->Attribute Index. Select memory attributes from attribute sets in MPU_MAIR0 and MPU_MAIR [0] -> enable /disable the region
  • 20.
    MPU_RBAR_A1/2/3 and MPU_RLAR_A1/2/3:- Analias of MPU_RBAR register to allow faster programming of different MPU regions. The region number that is selected when using MPU_RBARn and MPU_RLARn is equal to (MPU_RNR[7:2]<<2) Condition When Accessing MPU Region accessed MPU_RNR=0 MPU_RBAR / MPU_RLAR 0 MPU_PNR=1 MPU_RBAR_A1 / MPU_RLAR_A1 1 MPU_PNR=4 MPU_RBAR / MPU_RLAR 4 MPU_PNR=5 MPU_RBAR_A1 / MPU_RLAR_A1 5 MPU_PNR=6 MPU_RBAR_A2 / MPU_RLAR_A2 6
  • 21.
    MPU_MAIR0, MPU_MAIR1:- The MPUAttribute Indirection Register 0 and 1 provide eight sets of 8-bit memory attributes, which can be referenced by AttrIndx in MPU_RLAR to determine the memory attribute for an MPU region.
  • 22.