The Cortex-M23 is an ARM processor core designed for microcontroller applications. It is part of ARM’s Cortex-M series of cores, which target low-power embedded systems. The Cortex-M23 is one of the smallest and most energy-efficient cores in the Cortex-M family.
When looking at the memory specifications of the Cortex-M23, there are a few key factors to consider:
SRAM
The Cortex-M23 contains embedded SRAM directly on the processor core. The total SRAM capacity ranges from 16KB to 64KB depending on the specific chip implementation. For example, the STMicroelectronics STM32L443 chip contains 64KB of embedded SRAM consisting of 48KB of main SRAM memory and 16KB of system SRAM memory.
Flash Memory
In addition to the on-core SRAM, Cortex-M23 based microcontrollers also contain embedded flash memory for storing code and data. The amount of flash can vary widely between different chips, ranging from 32KB up to 1MB in commercial products currently on the market.
For instance, the NXP MKE02Z64VLC2 MCU contains 64KB of flash memory, while the STM32L452CC chip contains 320KB of flash. The flash memory is primarily used to store the program code, constants, and any initialized variables.
External Memory
The Cortex-M23 core supports the connection of external memories through various buses. This allows the memory capacity to be expanded beyond what is embedded directly within the microcontroller chip.
Some common external memory interfaces supported by Cortex-M23 MCUs include:
- Parallel interface – allows SRAM or flash memory chips to be connected
- SPI interface – used to connect serial flash or SRAM devices
- I2C interface – used for connecting I2C based serial EEPROMs or small serial memories
By adding external memory chips, the total memory capacity of a Cortex-M23 based system can range from a few KB up to several MB. The external memories supplement the embedded flash and SRAM on the microcontroller itself.
Memory Map
The various memories (on-chip and external) are mapped into a unified memory address space. The flash and SRAM embedded within the Cortex-M23 sit at the lower part of the memory map. The external memories are then mapped into higher addresses.
There are also reserved regions within the Cortex-M23 memory map for peripherals, I/O registers, and system configuration. The exact memory map is defined by the chip designer and will vary between different microcontroller products.
Memory Protection Unit
The Cortex-M23 includes an optional Memory Protection Unit (MPU) for defining privileged access levels and enforcing memory access permissions. This can be used to partition memory between different processes and protect sensitive regions like the OS kernel.
The MPU allows 1 to 16 protected memory regions to be defined. Each region can have individual access permissions. This adds security and reliability for complex embedded applications using multiple processes and task isolation.
Memory Options in Summary
In summary, the key memory options available with the Cortex-M23 core include:
- 16KB – 64KB of embedded SRAM
- 32KB – 1MB of embedded flash memory
- External parallel or serial memory interfaces
- Memory Protection Unit with up to 16 protected regions
By mixing on-chip memory with external memory devices, developers can create Cortex-M23 designs with memory capacities ranging from a minimal footprint up to very large and complex embedded systems. The memory architecture is flexible enough to support a wide variety of embedded IoT applications.