Fact-checked by Grok 2 weeks ago

Memory protection unit

A Memory Protection Unit (MPU) is a hardware mechanism integrated into microprocessors, particularly in embedded and real-time systems, that enforces access permissions on defined memory regions to prevent unauthorized reads, writes, or instruction executions, thereby isolating software tasks and enhancing overall system reliability without requiring virtual address translation. Unlike the more comprehensive , which combines memory protection with virtual-to-physical address mapping for general-purpose computing, an MPU operates on physical addresses and uses a simpler, region-based configuration to define protection boundaries, offering deterministic performance and lower overhead ideal for resource-constrained environments like microcontrollers. In architectures such as and Cortex-R series, the MPU is an optional feature within the Protected Memory System Architecture (PMSA), programmable via dedicated registers to specify attributes like read-only, no-execute, or privilege-level restrictions for up to 16 or more regions, triggering exceptions on violations to allow software intervention. Similarly, in processors, the MPU monitors all memory accesses in user or supervisor modes, generating faults post-access to protect against errant code while supporting multitasking operating systems without . This protection model is crucial for preventing faults in safety-critical applications, such as automotive or industrial systems, where it mitigates risks from software bugs or malicious code by enforcing spatial and temporal between tasks. Key benefits include reduced latency from avoiding translation lookups, simplified implementation for real-time operating systems (RTOS), and hardware-enforced compliance with standards, though it requires careful by to avoid overly restrictive or ineffective setups.

Fundamentals

Definition and Purpose

A is a integrated into processors, particularly microcontrollers, that divides the physical memory address space into configurable regions, each assigned specific access permissions to control reads, writes, and executions. This allows the MPU to act as a gatekeeper, intercepting memory access requests from the processor and enforcing rules based on the current execution , such as privilege level. Unlike more complex systems, the MPU operates directly on physical addresses in environments without translation. The primary purposes of an MPU include enforcing between different segments of , such as , , and peripherals, to prevent one component from interfering with others. It mitigates software faults, like buffer overflows or pointer errors, that could corrupt critical areas, thereby improving system reliability in resource-constrained applications. Additionally, the MPU enhances security by blocking unauthorized access in single-address-space systems, reducing risks from malicious or without the overhead of full support. The emerged as a lightweight alternative to full Units (MMUs) with the rise of microcontroller-based systems in the early , notably through architectures like , to address reliability and security needs in applications without the complexity of general-purpose computing. For instance, in a typical setup, an can configure the stack region as read-write accessible only to the current task while marking as read-only, thereby preventing accidental overwrites during operations.

Key Components

The Memory Protection Unit (MPU) consists of several core hardware registers that collectively define and enforce memory access controls. A control register enables or disables the MPU functionality and configures default behaviors for unmapped memory regions, such as allowing privileged access when the MPU is inactive. For example, in ARM Cortex-M processors, this is denoted as MPU_CTRL. In addition, a type or capability register indicates the number of supported regions and other features; this number varies by implementation and processor architecture, typically 8 in many ARM-based microcontrollers and up to 64 (32 instruction + 32 data regions) in others like Intel Nios II. Base address registers specify the starting address of each protected memory area, aligning with the system's to isolate , , or peripherals. Complementing these, size registers define the length of each region, often expressed as powers of two, ranging from 32 bytes up to the full (e.g., 4 in 32-bit systems), to facilitate efficient boundary checks. In , these are integrated into the region attribute and size register (MPU_RASR). Access permission registers encode fine-grained controls through bit fields, including read/write permissions, execute-never flags to prohibit instruction fetches, no-access options, and distinctions between privileged and unprivileged modes to enforce between software components. These permissions ensure that only authorized accesses occur, preventing unintended modifications or executions in designated areas. In MPU designs, regions are typically configured to be non-overlapping to simplify setup, but overlaps are permitted in many implementations, with often based on schemes, such as higher-numbered regions taking precedence (e.g., region 15 over region 0 in with up to 16 regions). This mechanism allows flexible layering of protections, such as overlaying stricter rules on subsets of broader regions, without requiring exhaustive non-overlap enforcement.

Principles of Operation

Memory Region Definition

In a Memory Protection Unit (MPU), memory regions are configured by the or through writes to dedicated MPU registers, where each region is defined by its base address, , and enablement status. The base address specifies the starting location of the protected area in the , while the is typically encoded using bit fields representing powers of two (2^N), supporting granularities from 32 bytes up to 4 gigabytes depending on the . This setup process occurs during boot, task initialization, or reconfiguration to establish isolated memory segments for , , or peripherals. A key constraint in region definition is address alignment: the base address must be a multiple of the region's size to enable straightforward hardware comparisons during access checks. For example, a 1 (1024-byte) region requires its base address to align on a 1 boundary, such as 0x1000 or 0x2000, preventing misaligned configurations that could complicate logic. This requirement ensures efficient operation across various architectures. The number of configurable regions is hardware-limited, commonly to 8 in standard implementations like those in processors, though some variants support up to 16. This finite capacity demands strategic partitioning of the , prioritizing protection for essential areas while potentially relying on overlaps or defaults for less critical spaces. Once defined, regions require explicit enablement, but the MPU itself must first be activated globally via a to enforce protections system-wide; post-reset, the MPU is typically disabled to allow initial configuration without faults. Individual regions can then be toggled on or off independently, facilitating temporary adjustments, such as during or transitions, without disrupting other protected areas. To achieve finer within a single slot, subregions divide larger areas into up to 8 equal segments, each with independent enablement for permissions or disablement. For instance, a 256 can be subdivided into eight 32 subregions (each 2^(N-3) bytes for size exponent N=18), allowing selective protection of subsections like a vulnerable while keeping the overall allocation efficient. This feature is available for regions of 256 bytes or larger, optimizing resource use in constrained environments.

Access Permission Enforcement

The Memory Protection Unit (MPU) enforces access permissions by performing hardware checks on every memory access attempt, including load operations, store operations, and instruction fetches. Upon an access, the compares the target address against the defined , which are typically up to eight programmable plus a default background . If the address falls outside all defined , it defaults to the background attributes; otherwise, it matches the enabled with the highest number among those that include the address. Once matched, the MPU verifies the permission bits—such as read, write, and execute flags—against the type of operation and the current . For instance, a store operation in unprivileged requires the to explicitly allow writes from that ; mismatches result in immediate denial. If an access violates permissions, the MPU generates a precise synchronous fault, typically triggering a MemManage exception in processors. This exception halts the offending operation and vectors to a dedicated handler, where software can respond by terminating the task, logging the violation, or recovering resources in an operating system context. In bare-metal environments without an OS, the handler might simply reset the system or ignore the fault, though the latter risks . The fault is precise, meaning the exact instruction causing it is identifiable via the stacked and fault status registers. Privilege levels play a central role in enforcement, with Cortex-M architectures supporting two modes: privileged (also called handler mode) and unprivileged (thread mode). In privileged mode, the processor has broader access, often defaulting to the background region's permissions for unmatched addresses, allowing full system control for operating system or . Unprivileged mode restricts access to only explicitly permitted regions, preventing applications from modifying critical data or peripherals. MPU configuration registers themselves require privileged access to modify, ensuring that unprivileged code cannot alter protections. This separation isolates applications from the OS, enhancing in multi-tasking setups. For overlapping regions, the MPU resolves conflicts by prioritizing higher-numbered regions (e.g., region 7 over region 0), applying the strictest permission rules from the matching region to prevent unintended access escalations. No-access regions can be configured for sensitive I/O peripherals by setting all permission bits to deny reads, writes, and executes, any attempts to prevent software corruption of registers. This ordered checking ensures deterministic enforcement even with partially overlapping configurations. The enforcement process introduces minimal runtime overhead, as the MPU checks are integrated into the processor pipeline without stalling accesses in compliant cases; faults, when generated, add exception entry latency but are comparable to other bus errors. This contrasts with more complex mechanisms like the MMU, where translation lookups impose greater per-access costs.

Differences from Memory Management Unit

A fundamentally differs from a in its approach to handling, as the MPU operates exclusively on physical addresses without performing any address translation. In contrast, an MMU employs virtual-to-physical address mapping through page tables, enabling advanced features such as demand paging and swapping to support dynamic allocation and efficient resource sharing in multitasking environments. This lack of translation in the MPU simplifies its design, focusing solely on over predefined physical regions rather than providing a full abstraction. The architectural overhead of an MPU is significantly lower than that of an MMU, as it does not require complex components like a (TLB) for caching translations, resulting in reduced power consumption and hardware complexity. This makes the MPU particularly suitable for resource-constrained microcontrollers, where simplicity and predictability are prioritized over the extensive capabilities of an MMU, which is better suited for high-performance desktops and servers running sophisticated multitasking operating systems. The absence of TLB-related overhead in the MPU also contributes to lower latency in memory access checks, enhancing determinism in time-critical applications. In terms of , an defines protection using a limited number of contiguous regions—typically up to —allowing straightforward partitioning of physical into blocks with uniform attributes. Conversely, an MMU utilizes smaller, fixed-size pages, commonly 4 KB, which support dynamic allocation and finer-grained management through hierarchical page tables. These regions in an are programmed statically and lack the paging mechanism of an MMU, limiting flexibility but ensuring efficient enforcement without the need for table walks. A key limitation of the MPU is its inability to provide per-process address space isolation, as all tasks share the same physical address space without virtualization, potentially exposing one process's memory to others if not carefully managed. In comparison, an MMU enables complete virtualization and isolation through distinct virtual address spaces for each process, along with support for privilege rings to enforce security boundaries. The MPU was introduced as an optional feature in the ARMv7-M architecture for Cortex-M processors, bridging the gap between systems with no hardware protection and those requiring a full MMU. These distinctions lead to divergent use cases: MPUs excel in systems demanding low overhead and predictable behavior, while MMUs are essential for general-purpose computing environments that leverage rings and for robust multitasking and resource efficiency.

Advantages over No Hardware Protection

The provides hardware-enforced isolation of memory regions, preventing unauthorized access by or software bugs, which significantly reduces risks such as and exploits in unprotected systems. By defining access permissions at the hardware level, the MPU ensures that unprivileged tasks cannot modify critical data or execute code from non-executable regions, offering a robust defense absent in software-only protection mechanisms. In terms of reliability, the MPU detects memory access violations early through exceptions, such as MemManage faults triggered by attempts to access invalid addresses, enabling prompt fault isolation in embedded firmware. This capability catches common errors like stack overflows or null pointer dereferences before they propagate, facilitating easier and reducing the likelihood of system crashes compared to no hardware protection, where such faults often go undetected until runtime failures occur. The MPU enhances efficiency by performing access checks in hardware without requiring operating system intervention for every memory operation, contrasting with software polling methods that introduce higher latency and overhead. This low-overhead design supports safe multitasking in real-time operating systems (RTOS) on resource-constrained devices, allowing multiple tasks to share memory while maintaining isolation, a feature impractical without hardware support. In automotive electronic control units (ECUs), the MPU prevents faults in one software module from propagating to others by confining to specific , thereby avoiding cascading failures and improving overall system robustness. This fault containment aligns with safety standards like , enabling targeted recovery such as resetting only the affected . Additionally, the MPU's integration into cores adds minimal silicon area, providing substantial protection benefits at low hardware cost for low-end embedded systems.

Implementations in Hardware

ARM Cortex-M MPU

The Memory Protection Unit (MPU) in processors is an optional hardware feature designed to enhance security and reliability in embedded systems by defining protected memory regions with specific access permissions and attributes. It is implemented in the Cortex-M3, Cortex-M4, and Cortex-M7 cores, which are based on the ARMv7-M architecture, where it supports up to 16 configurable memory regions to allow fine-grained control over memory access. In contrast, the MPU is absent in the Cortex-M0 core to minimize area and cost for ultra-low-power applications. The 's configuration is managed through a set of system control registers in the System Control Space (). The _TYPE register provides implementation details, including the DREGION field (bits [15:8]) that specifies the number of supported regions, which can range from 0 (indicating no MPU) to 16 in ARMv7-M implementations. The _CTRL register controls overall operation: its ENABLE bit (bit 0) activates the MPU, the PRIVDEFENA bit (bit 2) determines whether a default background region applies to privileged accesses when no explicit region matches, and the HFNMIENA bit (bit 1) extends MPU enforcement to HardFault, NMI, and FAULTMASK-blocked handlers. For individual regions, the _RNR register selects the active region number (0-15), the _RBAR register sets the base address (ADDR field, bits [31:5], aligned to region size) and optionally specifies the region number on write (REGION field, bits [3:0]), while the _RASR register defines region attributes including size, permissions, and subregions. Access permissions and attributes are encoded in the MPU_RASR register. The TEX field (bits [21:19]) combines with the S bit (bit 18), C bit (bit 17), and B bit (bit 16) to specify memory types such as , Strongly-ordered, or (cacheable), enabling control over caching and sharing behaviors. The field (bits [26:24]) enforces access levels: for example, 011 allows full read/write/execute for both privileged and unprivileged modes, 001 restricts to privileged read/write only, and 000 denies all , triggering a fault on violation. The XN bit (bit 28) implements execute-never protection, preventing instruction fetches from the region (value 1) to mitigate risks, which generates a MemManage fault if attempted. Additionally, the SRD field (bits [15:8]) allows disabling up to eight 32-byte subregions within larger regions (≥256 bytes) for more granular control. When the MPU is enabled but no defined region matches an access address, a background region provides default permissions if PRIVDEFENA is set: privileged-mode accesses default to read/write with XN=0 (executable), while unprivileged accesses fault; peripheral address spaces may default to XN=1. Violations, such as unauthorized access or execution, trigger a MemManage exception, with fault details reported in the Configurable Fault Status Register (CFSR), specifically the MemManage Fault Status Register (MMFSR) bits like IACCVIOL (instruction access violation) or DACCVIOL (data access violation), and the fault address captured in the Memory Management Fault Address Register (MMFAR) for debugging. The MPU was introduced with the ARMv7-M architecture in the Cortex-M3 core, first released in , adding support for subregions, more precise permissions, and up to 16 regions to better suit applications. To enable the MPU and configure a read-only code , software must follow a precise sequence to avoid faults during setup. First, disable interrupts and ensure privileged mode. Write to MPU_CTRL to set ENABLE=0 (if not already). Select the region via MPU_RNR (e.g., write 0 for region 0). Set MPU_RBAR with the base address (e.g., 0x08000000 for ) and region number. Configure MPU_RASR: enable the region (ENABLE=1, bit 0), set size (e.g., SIZE=19 for 1MB, bits [5:1]), AP=0b101 for privileged read-only (bits [26:24]), XN=0 (bit 28) if executable code, TEX/C/B for non-cacheable Normal memory (e.g., TEX=0b000, C=0, B=0), and SRD=0x00 for full region enable. Repeat for other regions if needed. Finally, set MPU_CTRL.ENABLE=1 and PRIVDEFENA=1. A simplified C-like example using CMSIS-style access (assuming __DSB() for barrier):
MPU->CTRL  = 0;  // Disable MPU
__DSB();
__ISB();

MPU->RNR   = 0;  // Select region 0
MPU->RBAR  = (0x08000000UL | 0);  // Base address, region 0
MPU->RASR  = (1UL << 0) |        // Enable
             (19UL << 1) |       // Size: 1MB (2^20 bytes)
             (0b101 << 24) |     // Priv RO
             (0UL << 28);       // XN=0

MPU->CTRL  = (1UL << 2) | (1UL << 0);  // PRIVDEFENA=1, ENABLE=1
__DSB();
__ISB();
This setup protects the code region from writes while allowing privileged reads and execution.

Other Microcontroller Architectures

In microcontrollers, the Physical Memory Protection (PMP) mechanism operates in Machine mode (M-mode) to enforce region-based access controls on physical memory, supporting up to 16 protection entries that utilize Naturally Aligned Power-of-Two (NAPOT) encoding for region sizes ranging from 4 bytes to 4 . These entries are configured via and Registers (CSRs), with permissions such as read, write, and execute managed through the MSECCFG register, enabling of sensitive regions while allowing M-mode software to oversee lower modes like (U-mode) and (S-mode). This design prioritizes simplicity for embedded systems without a full (MMU), focusing on contiguous physical regions to prevent unauthorized access by less privileged code. Microchip's AVR XMEGA family incorporates a limited form of memory protection through its I/O Memory Protection feature, which defines up to 8 configurable regions with a 1 KB granularity to safeguard critical peripherals and memory areas against unintended access. Each region supports basic permission bits for read, write, and execute operations, enforced during CPU access to prevent faults in safety-critical applications, though it lacks the flexibility of more advanced MPUs by focusing primarily on I/O and peripheral isolation rather than broad address space partitioning. This implementation suits low-power 8/16-bit environments where full virtualization is unnecessary, emphasizing runtime error detection over complex region overlapping. The PowerPC e200 core family, used in NXP and microcontrollers, features a dedicated Memory Protection Unit (MPU) or MMU with 8 to 24 protection zones or TLB entries depending on the variant (e.g., 8 in e200z1, 24 in e200z4/z7), each defined by Zone Protection Registers (ZPRs) or region descriptors that specify base addresses, sizes, and permissions to isolate peripherals and memory segments. These zones enable granular over and modes, including read/write/execute restrictions and peripheral-specific protections, which help mitigate faults in automotive and industrial embedded systems by containing errors within designated areas. The MPU integrates with the core's to trigger interrupts on violations, providing a hardware-enforced boundary without relying on software polling. Renesas RX series microcontrollers implement an supporting up to 8 regions, where the MPU Address () registers facilitate precise address matching and permission assignment for and segments. This integration allows overlapping regions with configurable read/write/execute and user/supervisor modes, enhancing in applications by protecting against buffer overflows and unauthorized modifications. In parallel, ' MSP430 family, particularly FRAM-based variants introduced in the , employs a basic Memory Protection Module (MPM) that divides and into up to three segments, each configurable for read-only, write-protected, or executable states to prevent accidental overwrites in low-power devices. Variations exist in other architectures, such as Microchip's PIC32 series, which relies on simpler segment-based protection mechanisms embedded in its M4K core configuration, defining fixed memory segments with access controls via exception traps rather than dynamic regions, suitable for cost-sensitive designs prioritizing boot-time integrity over runtime reconfiguration.

Applications and Use Cases

In Embedded Systems

In embedded systems, the Memory Protection Unit (MPU) is frequently deployed to safeguard (RTOS) tasks by allocating specific memory regions to individual threads, thereby preventing one task from corrupting another's data or code. For instance, the MPU port enables user-defined regions to be assigned to tasks upon creation, with the option for runtime reconfiguration to accommodate dynamic needs. This approach extends to isolating peripheral resources, such as UART buffers, where the MPU restricts access to designated software components, reducing the risk of erroneous or malicious interference with device drivers. Configuration of the in these resource-constrained environments typically involves static strategies at time, where regions are predefined to match a fixed , ensuring predictable protection without ongoing overhead. Alternatively, dynamic configuration permits adjustments, such as resizing regions for tasks with variable memory demands, though this requires careful management to avoid performance impacts. A primary challenge in MPU deployment stems from the hardware's limited region count—often 8 to 16 per —which necessitates coarse partitioning of memory and peripherals, potentially leaving some areas unprotected or requiring shared regions that dilute . In power-sensitive applications like wireless sensors, this limitation can complicate designs, as finer-grained protection might exceed available regions, prompting developers to prioritize critical areas. In (IoT) devices, such as the with its Xtensa architecture supporting MPU features, the unit enforces protections like read-only access to , thereby preventing tampering with during operation. For safety-critical embedded systems, the is essential for meeting standards like , where it facilitates SIL 3 certification by enabling independence between safety-related and non-safety software modules through enforced access controls. To streamline implementation, integrated development environments (IDEs) such as Keil MDK and IAR Embedded Workbench offer built-in support for MPU setup, including default segmentation schemes and configuration tools that generate region definitions based on project linker scripts. These features allow developers to visualize and validate maps early in the , promoting reliable deployment in bare-metal or lightweight RTOS contexts.

Integration with Operating Systems

Operating systems integrate the Memory Protection Unit () to enhance security in multitasking environments, particularly in resource-constrained systems. The typically initializes the MPU during system , configuring initial regions and access permissions to protect critical kernel data and code from unauthorized access. This setup ensures that the system starts with a secure memory layout before tasks are launched. The manages MPU regions dynamically through system calls, allowing it to assign, reconfigure, or deallocate regions for specific threads or processes during . For example, when switching contexts, the OS updates MPU registers like RBAR and RASR based on the task's process table to enforce . Access violations trigger a MemManage fault, which the handles by terminating the offending task, releasing its resources, and potentially the incident to prevent compromise. This fault-handling mechanism aligns with the OS's overall error recovery strategy, ensuring stability without requiring full resets. MPU integration with privilege levels complements the OS scheduler by restricting user-mode execution to designated regions, while kernel-mode operations retain privileged access. Unprivileged tasks, running in user mode, can only invoke kernel services via supervisor calls (SVC), which temporarily elevate privileges without altering MPU configurations, thus preventing direct manipulation of protected memory. This synergy allows the scheduler to manage task priorities and preemptions while the MPU enforces spatial isolation, reducing the risk of faults propagating across tasks. Several real-time operating systems (RTOS) provide built-in support for MPU-mediated protection. RTOS leverages the MPU to isolate user-mode threads, treating them as untrusted entities that are confined to their own domains, thereby safeguarding the and other threads from erroneous or malicious code. , starting from version 10, includes an MPU such as vTaskAllocateMPURegions() for allocation of up to three user-definable regions per task, enabling fine-grained control over access in both privileged and unprivileged modes. In RTOS's protected build mode, the MPU separates and user spaces into distinct blobs, reserving regions like 128 KB of and 4 KB of exclusively for the to block user applications from accessing privileged resources. Despite these benefits, s have limitations in supporting full multi-user operating systems, as their fixed number of regions—often 8 to 16—cannot accommodate the granular paging required for management in complex environments like or OSes. In such cases, designs in some system-on-chips combine MPU for coarse-grained protection with an MMU for finer , balancing overhead and scalability in mixed workloads.

References

  1. [1]
    The Memory Protection Unit - Arm Developer
    In the Cortex-A series processors, a Memory Management Unit (MMU) controls access to the memory subsystem. This provides greater flexibility in controlling the ...<|control11|><|separator|>
  2. [2]
    3.3. Memory Protection Unit - Intel
    The MPU is a hardware facility that system software uses to define memory regions and their associated access permissions. The MPU triggers an exception if ...
  3. [3]
    Memory Protection Unit - Arm Developer
    The MPU is an optional component in Cortex-M processor systems. In systems that require high reliability, the MPU can protect memory regions by defining access ...
  4. [4]
    [PDF] Predictable Virtualization on Memory Protection Unit-based ...
    A Memory Protection Unit (MPU) is a simple hardware memory isolation capability found in many microcontrollers. As opposed to Memory Management Units (MMUs), ...Missing: history | Show results with:history
  5. [5]
    Understanding Memory Protection Units - Semiconductor Engineering
    Nov 6, 2023 · An MPU is a programmable hardware unit that acts as a gatekeeper of memory. It enables the user to divide the memory into different regions and set memory ...Missing: history 1980s
  6. [6]
    [PDF] Why ARM MPU Has Become an Outcast in Embedded Systems - arXiv
    Aug 9, 2019 · The MPU is a low-cost security extension to ARM MCUs that safeguards certain sensitive memory regions in case a piece of code is compromised.
  7. [7]
    [PDF] Understanding MPU Usage in Microcontroller-based Systems in the ...
    Mar 3, 2023 · To prevent them from being com- promised, the memory protection unit (MPU), which is readily available on many of these devices, has the ...Missing: history | Show results with:history
  8. [8]
    [PDF] Protecting Bare-Metal Embedded Systems with Privilege Overlays
    However, many modern micro-controllers have a peripheral called the Memory Protection Unit (MPU) that can enforce read, write, and execute permissions on ...
  9. [9]
    Memory Protection Unit - by Rushali Jadhav - Medium
    Aug 25, 2020 · Memory Protection Unit What is MPU? In 2004, Arm introduced a new family of CPU cores called Cortex-M (M stands for Microcontroller) based ...
  10. [10]
    [PDF] Using the MPU with an RTOS to enhance System Safety and Security
    Dec 10, 2016 · The MPU is used to prevent access to unauthorised regions within the memory map. Microprocessors that have an MPU typically allow a number of “ ...
  11. [11]
    [PDF] How to Configure the Memory Protection Unit (MPU)
    The MPU option provided by the Cortex-M7 devices can be used to protect from eight to sixteen memory regions in the system space. The Cortex-M7 based MCU's ...
  12. [12]
    About the MPU - Arm Developer
    The MPU provides full support for: Protection regions. Overlapping protection regions, with ascending region priority: 7 = highest priority. 0 = lowest priority ...
  13. [13]
    ARMv7-M Architecture Reference Manual - Arm Developer
    This manual documents the Microcontroller profile of version 7 of the ARM Architecture, the ARMv7-M architecture profile.
  14. [14]
    [PDF] Introduction to memory protection unit management on STM32 MCUs
    Mar 24, 2016 · The region 15 has the highest priority and the region 0 has the lowest one and this governs how overlapping the regions behave. The priorities ...Missing: rule | Show results with:rule
  15. [15]
    Memory Protection Unit - Cortex-M3 Devices Generic User Guide
    The MPU divides the memory map into a number of regions, and defines the location, size, access permissions, and memory attributes of each region.
  16. [16]
    [PDF] How Developers Can Effectively Leverage MPUs with an RTOS
    Adding an MPU will also impose overhead on your application: you have additional registers to load during a context switch, and user code should run in non-.
  17. [17]
    Program execution speed with MPU enabled? - Arm Developer
    The MPU enables you to partition memory and sets individual protection attributes for each region. When an access is performed by the core, it first checks the ...Missing: overhead | Show results with:overhead
  18. [18]
    Choice of page sizes - Arm Developer
    If a task requires 7KB of data space, there is less unused space if it is allocated two 4KB pages as opposed to a 64KB page or a 1MB section. Smaller page sizes ...
  19. [19]
    Virtual and physical addressing - Arm Developer
    The MPU does not support virtual addressing. At the Application level, the difference between the ARMv7-A and ARMv7-R memory systems is transparent.<|control11|><|separator|>
  20. [20]
  21. [21]
    MPU regions - Arm Developer
    This provides flexibility and reduces the number of regions that are required to fully describe a memory map compared to older versions of the Arm architecture.
  22. [22]
    Benefits of Using the Memory Protection Unit - FreeRTOS™
    Feb 16, 2021 · Using the MPU in your embedded project can save you a lot of frustration, time and, by extension, money. The biggest single benefit of the MPU ...
  23. [23]
    [PDF] Comparing Isolation and Redundancy in Automotive Software
    Jun 18, 2025 · Another benefit of an MPU-based solution is fault containment. Memory interference re- mains confined to the originating partition, reducing ...
  24. [24]
    MPU Type Register, MPU_TYPE - Arm Developer
    The MPU Type Register indicates how many regions the MPU support. Software ... ARMv7-M only supports a unified MPU. [15:8], DREGION. Number of regions ...Missing: count | Show results with:count
  25. [25]
    ARMv7-M Architecture Reference Manual
    ### Summary of MPU_CTRL Register Details
  26. [26]
    MPU Region Base Address Register, MPU_RBAR - Arm Developer
    Software can find the minimum size of region supported by an MPU region by writing all ones to MPURBAR[31:5] for that region, and then reading the register.<|control11|><|separator|>
  27. [27]
    ARMv7-M Architecture Reference Manual
    ### Summary of MPU_RASR Register Details
  28. [28]
    ARMv7-M Architecture Reference Manual
    ### Summary of PMSAv7-compliant MPU Operation
  29. [29]
    ARMv6-M vs ARMv7-M - Unpacking the Microcontrollers
    Oct 14, 2013 · ARMv7-M and the First ARM Microcontrollers. The Cortex-M3 processor, the first of the ARMv7 cores, was released in 2004. It supported the new ...Missing: MPU | Show results with:MPU
  30. [30]
    Physical Memory Protection (PMP) - Ibex Documentation
    The Physical Memory Protection (PMP) unit implements region-based memory access checking in-accordance with the RISC-V Privileged Specification.
  31. [31]
    2.1. RISC-V Background - Keystone Enclave's documentation!
    PMP is controlled by a set of control and status registers (CSR) to restrict physical memory access to the U-mode and S-mode, and can only be configured by M- ...
  32. [32]
    [PDF] Developing security monitors on RISC-V - UNSAT
    PMP is a memory protection mechanism that allows M-mode to create and assign permissions to contiguous physical memory regions. PMP is configured by. M-mode ...
  33. [33]
    [PDF] Atmel AVR XMEGA C Manual - Microchip Technology
    This document contains in-depth documentation of all peripherals and modules available for the Atmel AVR XMEGA C microcontroller family.
  34. [34]
    [PDF] Atmel AVR XMEGA A Manual - Microchip Technology
    The devices are manufactured using Atmel high-density, nonvolatile memory technology. The program flash memory can be reprogrammed in-system through the PDI or ...
  35. [35]
    [PDF] Power Architecture e200z4 and e200z7 Core Memory Protection ...
    This application note describes the function, configuration and use of the Core Memory Protection. Unit (MPU) contained in the e200z4 and e200z7 device.Missing: e200 | Show results with:e200
  36. [36]
    [PDF] E200Z1RM, e200z1 Power Architecture Ž Core - Reference Manual
    The e200 processor family is a set of CPU cores that implement low-cost ... register (CR) and condition register operations defined by the PowerPC™ architecture.
  37. [37]
    [PDF] MSP430 FRAM Technology – How To and Best Practices (Rev. B)
    Jun 23, 2014 · The MPU can be configured to protect three different memory segments in software. Each segment can be individually configured to read, write ...
  38. [38]
    [PDF] Section 3. Memory Organization - Microchip Technology
    The PIC32 only uses KSEG0 and KSEG1 segments. The Boot Flash Memory. (BFM), Program Flash Memory (PFM), Data RAM Memory (DRM) and peripheral SFRs are.
  39. [39]
    Memory Protection Unit (MPU) Support - FreeRTOS™
    The FreeRTOS ARMv7-M (ARM Cortex-M3/4/7) and ARMv8-M (ARM Cortex-M23/33/55) ports with memory protection unit (MPU) support can no longer create privileged ...Missing: enforcement | Show results with:enforcement
  40. [40]
    Implementing a Protected Memory System with Regions
    Example Static MPU Region configuration with background region. The Base address of a region must always be aligned to the region size. This means, for ...Missing: setup | Show results with:setup
  41. [41]
    MPU Security Part 4: Dynamic Regions, Debug, and Conclusions
    May 10, 2019 · Dynamic data regions can be used to store a mixture of static arrays and structures, and they can be shared between tasks.Missing: configuration | Show results with:configuration
  42. [42]
    How the IAR create default MPU Segmentation for the memory ...
    May 27, 2021 · I just want to know about the default MPU segmentation in IAR compiler to protect the FRAM memory. Does it take the input from linker file? I ...
  43. [43]
    Overview - Zephyr Project Documentation
    User mode threads are considered to be untrusted by Zephyr and are therefore isolated from other user mode threads and from the kernel.
  44. [44]
    NuttX Protected Build — NuttX latest documentation
    The NuttX protected build, on the other hand, is a “two-pass” build and generates two “blobs”: (1) a separately compiled and linked kernel blob called, again, ...Missing: RTOS 1MB
  45. [45]
    [PDF] From MMU to MPU: adaptation of the Pip kernel to constrained devices
    Jan 11, 2023 · The paper adapts the Pip kernel from MMU to MPU for constrained devices, using MPU's memory access permissions for multiple levels of isolation.