Functions that relate to the Memory Protection Unit.  
More...
 | 
| #define  | ARM_MPU_ATTR_DEVICE   ( 0U ) | 
|   | Attribute for device memory (outer only)  More...
  | 
|   | 
| #define  | ARM_MPU_ATTR_NON_CACHEABLE   ( 4U ) | 
|   | Attribute for non-cacheable, normal memory.  More...
  | 
|   | 
| #define  | ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) | 
|   | Attribute for normal memory (outer and inner)  More...
  | 
|   | 
| #define  | ARM_MPU_ATTR_DEVICE_nGnRnE | 
|   | Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement.  More...
  | 
|   | 
| #define  | ARM_MPU_ATTR_DEVICE_nGnRE | 
|   | Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement.  More...
  | 
|   | 
| #define  | ARM_MPU_ATTR_DEVICE_nGRE | 
|   | Device memory type non Gathering, Re-ordering, Early Write Acknowledgement.  More...
  | 
|   | 
| #define  | ARM_MPU_ATTR_DEVICE_GRE | 
|   | Device memory type Gathering, Re-ordering, Early Write Acknowledgement.  More...
  | 
|   | 
| #define  | ARM_MPU_ATTR(O, I) | 
|   | Memory Attribute.  More...
  | 
|   | 
| #define  | ARM_MPU_SH_NON | 
|   | Normal memory non-shareable.  More...
  | 
|   | 
| #define  | ARM_MPU_SH_OUTER | 
|   | Normal memory outer shareable.  More...
  | 
|   | 
| #define  | ARM_MPU_SH_INNER | 
|   | Normal memory inner shareable.  More...
  | 
|   | 
| #define  | ARM_MPU_AP_(RO, NP) | 
|   | Memory access permissions.  More...
  | 
|   | 
| #define  | ARM_MPU_RBAR(BASE, SH, RO, NP, XN) | 
|   | Region Base Address Register value.  More...
  | 
|   | 
| #define  | ARM_MPU_RLAR(LIMIT, IDX) | 
|   | Region Limit Address Register value.  More...
  | 
|   | 
 | 
| __STATIC_INLINE void  | ARM_MPU_Enable (uint32_t MPU_Control) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_Disable (void) | 
|   | 
| __STATIC_INLINE  | ARM_MPU_Enable_NS (uint32_t MPU_Control) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_Disable_NS (void) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_SetMemAttrEx (MPU_Type *mpu, uint8_t idx, uint8_t attr) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_SetMemAttr (uint8_t idx, uint8_t attr) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_SetMemAttr_NS (uint8_t idx, uint8_t attr) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_ClrRegionEx (MPU_Type *mpu, uint32_t rnr) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_ClrRegion (uint32_t rnr) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_ClrRegion_NS (uint32_t rnr) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_SetRegionEx (MPU_Type *mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_SetRegion (uint32_t rnr, uint32_t rbar, uint32_t rlar) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_SetRegion_NS (uint32_t rnr, uint32_t rbar, uint32_t rlar) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_OrderedMemcpy (volatile uint32_t *dst, const uint32_t *__RESTRICT src, uint32_t len) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_LoadEx (MPU_Type *mpu, uint32_t rnr, ARM_MPU_Region_t const *table, uint32_t cnt) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_Load (uint32_t rnr, ARM_MPU_Region_t const *table, uint32_t cnt) | 
|   | 
| __STATIC_INLINE void  | ARM_MPU_Load_NS (uint32_t rnr, ARM_MPU_Region_t const *table, uint32_t cnt) | 
|   | 
The following functions support the optional Memory Protection Unit (MPU) that is available on the Cortex-M23, M33, M35P processor.
The MPU is used to prevent from illegal memory accesses that are typically caused by errors in an application software.
Example: 
 
      
        
          | #define ARM_MPU_AP_ | 
          ( | 
            | 
          RO,  | 
        
        
           | 
           | 
            | 
          NP  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
- Parameters
 - 
  
    | RO | Read-Only: Set to 1 for read-only memory.  | 
    | NP | Non-Privileged: Set to 1 for non-privileged memory.  | 
  
   
 
 
      
        
          | #define ARM_MPU_ATTR | 
          ( | 
            | 
          O,  | 
        
        
           | 
           | 
            | 
          I  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
- Parameters
 - 
  
    | O | Outer memory attributes  | 
    | I | O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes  | 
  
   
 
 
      
        
          | #define ARM_MPU_ATTR_DEVICE   ( 0U ) | 
        
      
 
 
      
        
          | #define ARM_MPU_ATTR_DEVICE_GRE | 
        
      
 
 
      
        
          | #define ARM_MPU_ATTR_DEVICE_nGnRE | 
        
      
 
 
      
        
          | #define ARM_MPU_ATTR_DEVICE_nGnRnE | 
        
      
 
 
      
        
          | #define ARM_MPU_ATTR_DEVICE_nGRE | 
        
      
 
 
      
        
          | #define ARM_MPU_ATTR_MEMORY_ | 
          ( | 
            | 
          NT,  | 
        
        
           | 
           | 
            | 
          WB,  | 
        
        
           | 
           | 
            | 
          RA,  | 
        
        
           | 
           | 
            | 
          WA  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
- Parameters
 - 
  
    | NT | Non-Transient: Set to 1 for non-transient data.  | 
    | WB | Write-Back: Set to 1 to use write-back update policy.  | 
    | RA | Read Allocation: Set to 1 to use cache allocation on read miss.  | 
    | WA | Write Allocation: Set to 1 to use cache allocation on write miss.  | 
  
   
 
 
      
        
          | #define ARM_MPU_ATTR_NON_CACHEABLE   ( 4U ) | 
        
      
 
 
      
        
          | #define ARM_MPU_RBAR | 
          ( | 
            | 
          BASE,  | 
        
        
           | 
           | 
            | 
          SH,  | 
        
        
           | 
           | 
            | 
          RO,  | 
        
        
           | 
           | 
            | 
          NP,  | 
        
        
           | 
           | 
            | 
          XN  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
- Parameters
 - 
  
    | BASE | The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned.  | 
    | SH | Defines the Shareability domain for this memory region.  | 
    | RO | Read-Only: Set to 1 for a read-only memory region.  | 
    | NP | Non-Privileged: Set to 1 for a non-privileged memory region.  | 
    | XN | eXecute Never: Set to 1 for a non-executable memory region.  | 
  
   
 
 
      
        
          | #define ARM_MPU_RLAR | 
          ( | 
            | 
          LIMIT,  | 
        
        
           | 
           | 
            | 
          IDX  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
- Parameters
 - 
  
    | LIMIT | The limit address bits [31:5] for this memory region. The value is one extended.  | 
    | IDX | The attribute index to be associated with this memory region.  | 
  
   
 
 
Clear and disable the given MPU region. 
- Parameters
 - 
  
    | rnr | Region number to be cleared.  | 
  
   
 
 
Clear and disable the given Non-secure MPU region. 
- Parameters
 - 
  
    | rnr | Region number to be cleared.  | 
  
   
 
 
Clear and disable the given MPU region of the given MPU. 
- Parameters
 - 
  
    | mpu | Pointer to MPU to be used.  | 
    | rnr | Region number to be cleared.  | 
  
   
 
 
Disable the Non-secure MPU. 
 
 
Enable the MPU. 
- Parameters
 - 
  
    | MPU_Control | Default access permissions for unconfigured regions.  | 
  
   
 
 
Enable the Non-secure MPU. 
- Parameters
 - 
  
    | MPU_Control | Default access permissions for unconfigured regions.  | 
  
   
 
 
Load the given number of MPU regions from a table. 
- Parameters
 - 
  
    | rnr | First region number to be configured.  | 
    | table | Pointer to the MPU configuration table.  | 
    | cnt | Amount of regions to be configured. | 
  
   
Example: 
  {
    
  }
};
 
void UpdateMpu(uint32_t idx)
{
}
  
 
 
Load the given number of MPU regions from a table to the Non-secure MPU. 
- Parameters
 - 
  
    | rnr | First region number to be configured.  | 
    | table | Pointer to the MPU configuration table.  | 
    | cnt | Amount of regions to be configured.  | 
  
   
 
 
Load the given number of MPU regions from a table to the given MPU. 
- Parameters
 - 
  
    | mpu | Pointer to the MPU registers to be used.  | 
    | rnr | First region number to be configured.  | 
    | table | Pointer to the MPU configuration table.  | 
    | cnt | Amount of regions to be configured.  | 
  
   
 
 
Memcopy with strictly ordered memory access, e.g. for register targets. 
- Parameters
 - 
  
    | dst | Destination data is copied to.  | 
    | src | Source data is copied from.  | 
    | len | Amount of data words to be copied.  | 
  
   
 
 
Set the memory attribute encoding. 
- Parameters
 - 
  
    | idx | The attribute index to be set [0-7]  | 
    | attr | The attribute value to be set.  | 
  
   
 
 
Set the memory attribute encoding to the Non-secure MPU. 
- Parameters
 - 
  
    | idx | The attribute index to be set [0-7]  | 
    | attr | The attribute value to be set.  | 
  
   
 
 
Set the memory attribute encoding to the given MPU. 
- Parameters
 - 
  
    | mpu | Pointer to the MPU to be configured.  | 
    | idx | The attribute index to be set [0-7]  | 
    | attr | The attribute value to be set.  | 
  
   
 
 
      
        
          | __STATIC_INLINE void ARM_MPU_SetRegion  | 
          ( | 
          uint32_t  | 
          rnr,  | 
        
        
           | 
           | 
          uint32_t  | 
          rbar,  | 
        
        
           | 
           | 
          uint32_t  | 
          rlar  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Configure the given MPU region. 
- Parameters
 - 
  
    | rnr | Region number to be configured.  | 
    | rbar | Value for RBAR register.  | 
    | rlar | Value for RLAR register.  | 
  
   
 
 
      
        
          | __STATIC_INLINE void ARM_MPU_SetRegion_NS  | 
          ( | 
          uint32_t  | 
          rnr,  | 
        
        
           | 
           | 
          uint32_t  | 
          rbar,  | 
        
        
           | 
           | 
          uint32_t  | 
          rlar  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Configure the given Non-secure MPU region. 
- Parameters
 - 
  
    | rnr | Region number to be configured.  | 
    | rbar | Value for RBAR register.  | 
    | rlar | Value for RLAR register.  | 
  
   
 
 
Configure the given MPU region of the given MPU. 
- Parameters
 - 
  
    | mpu | Pointer to MPU to be used.  | 
    | rnr | Region number to be configured.  | 
    | rbar | Value for RBAR register.  | 
    | rlar | Value for RLAR register.  |