Professional Documents
Culture Documents
ARM Cortex-Family (V7-A)
ARM Cortex-Family (V7-A)
• Memory Protection Unit (MPU). An optional MPU for memory protection, including:
— Eight memory regions.
— Sub Region Disable (SRD), enabling efficient use of memory regions.
— The ability to enable a background region that implements the default memory map attributes.
• Bus interfaces:
1.Code memory buses 2.System bus 3. Private peripheral bus
— Three Advanced High-performance Bus-Lite (AHB-Lite) interfaces: ICode, DCode, and System bus interfaces.
— Private Peripheral Bus (PPB) based on Advanced Peripheral Bus (APB) interface.
— Bit-band support that includes atomic bit-band write and read operations.
— Memory access alignment.
— Write buffer for buffering of write data.
— Exclusive access transfers for multiprocessor systems.
For simultaneous accesses to this bus, the arbitration order in decreasing priority is:
• data accesses
• instruction and vector fetches
• debug.
The system bus interface contains control logic to handle unaligned accesses, FPB remapped
accesses, bit-band accesses, and pipelined instruction fetches.
• Main Stack Pointer (MSP), or SP_main in ARM documentation: This is the default
stack pointer; it is used by the OS kernel, exception handlers, and all application codes
that require privileged access.
• AHB private peripheral bus, for Cortex-M3 internal AHB peripherals only: This includes
NVIC, FPB, DWT, and ITM.
• APB private peripheral bus, for Cortex-M3 internal APB devices as well as external
peripherals (external to the Cortex-M3 processor): The Cortex-M3 allows chip
vendors to add additional on-chip APB peripherals on this APB private peripheral bus
via an APB interface.
shown in the memory map is merely a template;
individual semiconductor vendors will provide detailed memory maps
including the actual location and size of ROM,RAM, and peripheral
memory locations.
Memory Access Attributes
The memory attributes you can find in the Cortex-M3 processor include
these:
• Peripheral region (0x40000000–0x5FFFFFFF): This region is intended for peripherals. The accesses
are non cacheable. You cannot execute instruction code in this region (Execute Never, or XN in ARM
documentation).
• External RAM region (0x60000000–0x7FFFFFFF): This region is intended for either on-chip or off-
chip memory. The accesses are cacheable (WB-WA), and you can execute code in this region.
External RAM region (0x80000000–0x9FFFFFFF): This region is intended for either on-chip or off-chip
memory. The accesses are cacheable (WT), and you can execute code in this region.
• External devices (0xA0000000–0xBFFFFFFF): This region is intended for external devices and/or
shared memory that needs ordering/nonbuffered accesses. It is also a non-executable region.
• External devices (0xC0000000–0xDFFFFFFF): This region is intended for external devices and/or
shared memory that needs ordering/nonbuffered accesses. It is also a nonexecutable region.
• System region (0xE0000000–0xFFFFFFFF): This region is for private peripherals and vendor-specific
devices. It is non-executable.
For the private peripheral bus memory range, the accesses are strongly ordered (noncacheable,
nonbufferable).
For the vendor-specific memory region, the accesses are bufferable and noncacheable.
Default Memory Access Permissions
The Cortex-M3 memory map has a default configuration for memory access
permissions. This prevents user programs from accessing system control memory
spaces such as the NVIC.