1
\$\begingroup\$

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)

\$\endgroup\$
6
  • \$\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, 2017 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, 2017 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, 2017 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, 2017 at 15:24
  • \$\begingroup\$ Block-erasable implies NAND. \$\endgroup\$
    – pjc50
    May 7, 2017 at 16:33

1 Answer 1

3
\$\begingroup\$

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).

\$\endgroup\$
8
  • 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, 2017 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, 2017 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\$ May 7, 2017 at 20:12
  • 1
    \$\begingroup\$ @CL - not at all, NOR flash memories DO NOT need a bad sector manager, while NAND memories DO. \$\endgroup\$ May 7, 2017 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, 2017 at 14:54

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