Embedded Memory Selection – Which Technology to Use?

Embedded memory forms the backbone of modern electronic devices and microcontrollers. It is essential for enabling devices to store and access data efficiently, whether that data is firmware, system configurations, or digital media. When it comes to selecting a memory device, however, there are a number of options suitable for various applications. Today’s electronic designers need to consider factors such as storage capacity, speed, cost, and reliability.

At MJS Designs, we specialize in designing complex mixed-signal systems that utilize a variety of embedded memory types. Some embedded memory technologies that we commonly utilize are EEPROMs, Flash memory, microcontroller flash, and SD Cards.

What is Embedded Memory?

Embedded memory is comprised of electronic circuits that store binary data called bits, in the form of 0’s and 1’s. Every piece of digital media is made up of bits, including text, images, music, and even videos.

The embedded devices that store these bits can be categorized as Volatile and Non-Volatile, also known as RAM (Random Access Memory) and ROM (Read Only Memory), respectively. The primary distinction between the two is that volatile memory requires a constant power supply to maintain its data, while non-volatile memory can retain its data even without power. Modern embedded controllers often incorporate both volatile and non-volatile memory, and are considered hybrid devices. Embedded systems will seldom require additional RAM; however, they will often require significantly more ROM for storing system configurations and other data. There are various types of embedded ROM devices, each with its own strengths and weaknesses. It is the embedded engineer’s job to select the best memory device based on the project requirements.


EEPROM, which stands for Electrically Erasable Programmable Read Only Memory, is a device that can store small amounts of data, ranging from 128 bits to 4 megabits. They can be written and erased multiple times, typically between 10,000 to 1 million cycles. These devices feature low power consumption and can retain their data for up to 200 years.

EEPROMs are ideal for storing configuration and calibration data that need to be updated occasionally, such as device IDs, serial numbers, passwords, and user settings. They have a simple serial interface to easily communicate with microcontrollers, and offer moderate access speeds. Despite their small size, EEPROMs remain popular in embedded applications for their reliability and ease of use. This is especially true for applications that require storing many small segments of data, as EEPROMs allow each byte of data to be stored at a specific address.

Flash Memory

Flash memory uses similar circuitry to EEPROM devices, but with memory cells arranged in such a way that they can store significantly larger amounts of data, anywhere from 128 megabits to 8 terabits. It has an endurance between 10,000 and 100,000 cycles, and data retention of up to 10 years.

There are two main types of flash memory available: NOR flash and NAND flash. Both flash memory technologies erase and write data in sectors or blocks, instead of individual bytes. NOR flash is the smaller of the two, with sizes ranging from 128 megabits to 2 gigabits. Despite this, NOR is popular for its fast read speeds, as well as the ability to read individual bytes. This also allows NOR flash to be used for the execution of program code and embedded firmware.

NAND flash, on the other hand, both reads and writes data in sectors or blocks. This is in exchange for a vastly greater data storage capacity than NOR flash. NAND flash is the go-to for storage devices like SSDs, USB drives, and SD Cards. NAND flash is also able to erase and write data faster than NOR flash, making it more suitable for applications that need to update data frequently.

The storage capacity of flash memory makes it an ideal choice for saving large chunks of data, such as sound files, images, and other media formats. Due to the limited read and write capabilities, however, flash memory is rarely used for storing small pieces of data, such as user preferences and system configuration parameters.

Microcontroller Flash

Microcontroller flash is the flash memory that is integrated into the microcontroller chip itself. It is utilized to store the program code needed for the operation of the microcontroller. Most programs, however, will not utilize all of the flash memory available to the microcontroller. In such cases, it is possible to use the microcontroller’s internal flash as a non-volatile storage device. This not only reduces component count, but also allows for faster read access than with an external device.

Most microcontrollers have less than a megabyte of flash memory. Larger program sizes require more flash memory and result in less available space for storing data. The program flash is best utilized for storing small amounts of data that is rarely updated, similar to an EEPROM. Additionally, the microcontroller may be unable to execute code while writing to program flash, pausing all functionality. Thus, time sensitive applications should utilize other memory options.

SD Cards

SD cards are removable storage devices that use NAND flash memory as their storage medium, and are able to store a large amount of data. They function the same as embedded NAND flash, with the added advantage that they can be removed and attached to different devices, instead of being soldered onto a circuit board.

SD cards are ideal for storing data that needs to be transferred between devices, such as media files, documents, logs, or backups. They are ubiquitous in mobile devices such as phones, cameras, and tablets. Data is accessed through a simple serial interface, simplifying integration with onboard microcontrollers. SD cards are also able to interface with most computers, either through a built-in SD card reader or with a USB adapter.

Choosing the Best Embedded Memory Technology for Your Application

Choosing the best embedded memory technology for your application depends on several factors, such as:

  • – The amount of data that you need to store.
  • – The frequency and size of data updates.
  • – The speed and reliability of data access.
  • – The power consumption of the memory device.
  • – The interface and compatibility of the memory device with your microcontroller.
  • – The cost and availability of the memory device.

Applications that need to store a large amount of data will likely necessitate the usage of NAND flash memory. NAND flash is the most cost-effective option for storing gigabytes of data or more, and its fast write speeds make it a good choice for applications that need to update data frequently. Embedded NAND flash chips and SD Cards both effectively utilize this technology, but if removing the storage medium is not necessary an embedded chip can offer superior reliability.

On the other hand, applications that need to read data quickly, or that need to read individual bytes will benefit from NOR flash and EEPROMs. NOR flash offers higher read speeds and storage capacity, but applications without those requirements can benefit from the higher endurance of EEPROM. If the memory size requirement is small enough, and writes to the data are rare, these applications may also benefit from using leftover flash memory in the microcontroller instead of an external EEPROM.


Embedded memory is a critical component of any electronic system. It allows devices to store and retrieve data, instructions, and other media necessary for their operation. The embedded memory technologies used to accomplish this have differing characteristics in terms of capacity, speed, endurance, power consumption, interface, and cost. Therefore, choosing the best embedded memory technology for your application will depend on prioritizing these factors, and identifying the one that best fulfills each of your requirements.

At MJS Designs, our electronics design team are experts when it comes to working with embedded memory devices, as well as the electronic systems that incorporate them. We can help with any stage of the manufacturing process, from designing the circuit board, to assembling the finished product. Contact MJS Designs today to learn more about how we can fulfill your product development and design needs.