flash memory option for ARM

Hello,

I am designing an ARM Cortex M4 board and I have to store about 1Mbit of data that gets occasionally changed, say maybe 1000 times over 5 years. I am also adding SRAM that would be mapped into MCU address space. At start-up I copy the data from Flash into SRAM and when it changes I write it back to flash.

Can someone recommend a good storage solution, if using NOR flash I can map the memory into the MCU space while if I use NAND flash I can use the NAND controller but no longer parallel mapped addressing. NAND is cheaper but do I really have to implement ECC for those chips, apparently they came out of the manufacturer with some bad blocks. Using NOR is not that expensive considering I need a small amount of flash, any downsides (I have read the speed consideration), do I still need to implement the wear-off algorithm? I have used in the past to map SRAM into AVR devices, there was no need to program them at all just enable the registries, I would assume this is the exact case with ARM as well (I can read the datasheet and find out).

I am also thinking to battery power the SRAM and live with that, no flash at all.

What would you normally use in such situation?

Thanks.

I’ve used these

S25FL127S

8 pin package.

Simple SPI interface.

Inexpensive - like $1.50 for 16MBytes

I’ll second Steve’s suggestion.

The questions you need to consider are-

How much data changes and how much has to be written when power goes away? Or is it something you are posting as the program is running. You may not have enough time to write to a Flash style memory if you have limited warning of power going away. In situations like that we use EEPROM because you can write it quite quickly.

I am wondering about adding extra SRAM, not usually a viable or cost effective option for many M-class ARMs. Some do allow it but that chews up a lot of pins.

You might consider the SPIFI peripheral in some of the NXP parts. This uses the SPI interface (also SQI some call it) for a reasonably fast access to serial Flashes in typical SO8 packages. This memory can be read in the normal address space and is cached. You may have to step up to 16MB but even so those devices only cost about 50 cents. Other vendors may offer this as well.