I am doing a study on file systems for mcirocontollers (MCU), using internal flash only. I find my self asking this questions: What type of FLASH memory is used most commonly in MCU ? NAND or NOR?

This can be useful to know when designing or selecting a file system.

I have been looking at datasheet from various MCU (STM32, MSP430, Atmel), but I was not able to find this information. They just says "FLASH memory". Anybody know what is generally used ?

(I know that some use FRAM, but I asking only about FLASH memory technology)

  • \$\begingroup\$ Flash refers to the fact that it is written to in chunks. This makes deleting/writing faster. I don't know if this still applies tho. Most use floating-gate technology, if memory serves me right. en.wikipedia.org/wiki/Floating-gate_MOSFET I don't know from heart if nand or nor is better, but I know one is gennerally superior in terms of lifecycles. \$\endgroup\$ – Joren Vaes May 7 '17 at 9:05
  • 2
    \$\begingroup\$ Usually, microcontrollers can execute code from their internal flash, this is NOR flash because it allows random accesses, whereas NAND is block-only. This code FLASH may not be partially eraseable, or very limited in the number of write/erase cycles. Some microcontrollers have several types of nonvolatile memory, some have EEPROM cells (where each byte can be individually rewritten). This really depends on the chip. \$\endgroup\$ – TEMLIB May 7 '17 at 9:42
  • \$\begingroup\$ Can be inferred from the datasheet by seeing whether it's byte-erasable or block-erasable. Not all MCUs actually let you overwrite the flash from inside at all. \$\endgroup\$ – pjc50 May 7 '17 at 10:21
  • \$\begingroup\$ @pjc50: Then if the datasheet say its' block-erasable (which is the case for all datasheet I have been looking at), then the Flash is ..... ? \$\endgroup\$ – Antoine May 7 '17 at 15:24
  • \$\begingroup\$ Block-erasable implies NAND. \$\endgroup\$ – pjc50 May 7 '17 at 16:33

Undoubtly, for program memory, the memory of choice is NOR Flash. NAND flash has several issues that make it unsuitable for program storage (NAND has to be accessed in blocks and has the bad habit of corrupting some of its data, so a management system is needed to keep track of blocks usage and of bad records. You don't want to put your program on an unreliable media).

  • 1
    \$\begingroup\$ Are you sure? NAND has to be written in blocks, but can be randomly read, and once successfully written tends to stay there. Program memory in production units is usually only ever written a small number of times. \$\endgroup\$ – pjc50 May 7 '17 at 16:34
  • 2
    \$\begingroup\$ NAND and NOR are equally realiable at the same density. However, NAND is easiler to scale down. \$\endgroup\$ – CL. May 7 '17 at 18:46
  • \$\begingroup\$ @pjc50 - yes I am sure, one of the most important difference between NOR and NAND is that NOR is random-accessable while NAND isn't \$\endgroup\$ – Claudio Avi Chami May 7 '17 at 20:12
  • 1
    \$\begingroup\$ @CL - not at all, NOR flash memories DO NOT need a bad sector manager, while NAND memories DO. \$\endgroup\$ – Claudio Avi Chami May 7 '17 at 20:13
  • \$\begingroup\$ I can write Kinetis flash word at a time (4 bytes), so I would guess that it uses NOR. \$\endgroup\$ – filo Jun 23 '17 at 14:54

Not the answer you're looking for? Browse other questions tagged or ask your own question.