Reasonable Embedded Storage (> 1 GB) solution with NRF chips

I'm posting some thoughts in the hope of receiving some useful feedback, or at least bringing together information that is currently scattered a bit all over the place on this forum.

I'm working on a low-power embedded application that requires some long-term data logging (1 gigabyte, maybe a few). I've been looking for a suitable storage solution for quite some time now and I could not get to a reasonable, where reasonable means that it does not have serious/concerning drawbacks in one way or another. I'm quite surprised, but it seems that NRF microcontrollers have been designed completely neglecting this use case. 

Here is what I looked into and some reasoning 

  • NOR memory is well supported, but I would say it is mainly intended as an extension of the program memory. There is the possibility of using this as storage as well, but probably more for configuration/system state. NOR memories are essentially too small/expensive to scale for any "large" storage application, this is quite established.
  • Raw NAND memory would be the way to go for this use case. Raw NAND brings some extra challenges due to the inherent unreliability of the storage medium, which needs to be solved in firmware with some Flash Translation Layer capable of handling read/write errors, bad blocks and wear levelling. It's also possible to find large memories that work at 1.8V, which is an extra bonus feature for any low-power application. However, most of the large memories come with a parallel interface. NRF chips do not have any dedicated memory controller, which means the only option would be bit-banging. A major tradeoff in my opinion.
  • There are some SPI NAND chips, although usually not with large capacities, and there does not seem to be a large offer for any capacity of 8Gbit (one giga-byte) or above.
  • The most common solution that I see is to use SD cards via SPI. This is rather inefficient, but it works and allows access to large storage with low complexity. However, this option feels basically like a hack, and I'm not sure if it would be acceptable in large production.
  • eMMC is from what I understand the de-facto standard "place and forget" solution for managed embedded storage. However again no NRF chip has a controller capable of interfacing eMMC, which again only leaves the option of bit-banging.
  • There seems to exists some very esoteric "IC SD cards" but again, not really an option on which one can rely.

Am I missing something? I am currently working with SPI NAND memory, but also due to the problems mentioned above, I'm even considering switching to a completely different microcontroller.

I hope this can help other people (and hopefully me as well) to orient themselves a bit better.
@Nordic or anybody who designed a similar application, I would really appreciate some inputs on this!

Thank you!

  • I think this is a pretty comprehensive assessment. As you alluded to, even hardware wise, the 1GB space is kind of a no-mans land.

    I'm guessing the Nordic offerings haven't concentrated on eMMC / raw NAND since they're IoT focused and intend to constantly stream data out as opposed to needing to store large amounts?

    An application I worked on needed a lot of storage (16Gb) so we were kind of forced into the SD card route and haven't found any big issues. It kind of feels hacky having an SD card when the user never needs to remove the card for any reason but they aren't that expensive and you can find some with built-in wear leveling and other protection which is nice. I haven't compared power use of SD cards to the other tech you mentioned since my application wasn't very restrictive on power - is that what you meant by "inefficient"?

    Cheers

  • Hi Andrea,

    I agree that different features/solutions are not optimized for all use-cases, and there are always tradeoffs; sometime speed, cost, support, and cost of supporting that feature.

    I see people are using NOR flash for storing sensor data, though that might not be as large as in your case.
    Some customers also see bit-banging as a possible/feasible solution to whatever we have. SPI NAND chips with 8 Gbit=1GB capacity are at least available.

    Yes, the SD card seems to be a good choice in this scenario. What do you mean by inefficient? People have used it in production.

    We do not have EMMC support. What other MCU you are considering? Do they support what you want to have? It is always about tradeoffs. I would agree mostly with what Louis has said. Is transmitting to cloud an option for your use case?

  • I'm looking at a wearable device for medical applications, so Cloud is not an option given the use case and power budget. By inefficient I mean that we are probably leaving a lot of transfer speed on the table and therefore I assume also increased power consumption. In my case, I'm mostly concerned about the mechanical contacts for the SD card, since in a portable device I cannot cross out occasional bumps and strong vibrations, but feel free to contradict me here maybe I'm overconcerned :)

    I'm looking ad STM32W microcontrollers, some of them have a memory controller and they also support wireless, although it's not as good as far as I was told by some colleagues.

  • Hello Yaxit, I'm curious if you can share what direction your team went with this issue. I am hitting a similar wall to you. Not having NAND or EMMC support is becoming a major drawback.

Related