Electrical – linux – alternative to NAND chips

embeddedlinuxnon-volatile-memory

The company I work for is manufacturing a device with ARM processor and embedded Linux. At the time of the project (a few years ago) our consultants relied on NAND flash chips with UBIFS as filesystem, due to project constraints:

  • The device must always be bootable even after a power cut.
  • The boot time of the device must always be the same, even after a power cut.

Unfortunately, power cut is the "normal" way our customers shut down their devices.
Unfortunately, the flash chip is no longer in production, so we are reassessing other alternatives: MMC embedded or SATA SSD. Something, in short, that if it goes out of production, we can find a replacement while maintaining the same identical FW.

I wonder if today the hw (ssd, eMMC, etc.) and sw (mainly filesystems) technologies allow me to stay within the constraints with devices other than NAND flash chips.

Best Answer

I think it's a multi part answer.

  1. I'd assume here that if a unit fails in the field you simply swap it out. The decision to scrap that board is then yours (how long do you WANT to keep the boards circulating). For your current boards you should have stock on hand of the NAND chips to allow for board failures and repair.

  2. You'd produce future firmware that can support the 16bit NAND interface and whatever new storage interface you choose. For example in UBoot (if that's what you are using) you introduce the required drivers for the boot path.

  3. I'd suggest using the SD/MMC interface (of which e.MMC is just one variant) since that can use a single lane to simplify changes. While speed is the concern for most MMC usage, it may be that you can tolerate a slower speed as long as it's consistent. You could use a single lane interface over SPI as an interface (about as simple as you can get). This might get you started thinking about it. Certainly this would seem to minimize changes to your PCB.