There are two major types of memory system architectures when it comes to executing code in embedded systems:
- Execute in Place (XIP): The program code is executed directly from a flash memory.
- Store and Download (SnD) : The program code is stored in a non-volatile memory but is copied to RAM during the boot up process and executed from there.
Execute in place (XIP) is a method of executing programs directly from a non-volatile memory rather than copying it into RAM and then executing it from there. It helps reduce the total amount of memory used in the embedded system, as it allows additional RAM to be freed up for dynamic data.
XIP memory model requires a NOR type flash memory as it supports quick random access. Usually the flash memory used for XIP has a serial bus interface (e.g QSPI). The advantages of serial interface memory are lower cost and power consumption when compared to parallel interface flash memory.
In order to setup a XIP memory model in an embedded system, the following criteria should be met:
- NOR Flash memory
- Mechanism for mapping the flash in the system memory space (the microcontroller should support it)
- Sufficient bandwidth for the application
- A way for programming the external NOR flash (e.g bootloader program)