Should You (Still) Use Nor Flash for Embedded Data Storage, and How?

Introduction According to the financial and industry literature, the NOR flash memory market keeps growing. Yet, in our world, embedded system engineers often see NOR flash as being a “legacy” storage medium. The one used, for example, in countless industrial controllers since the original product used NOR flash and the designers for the next generation

Read More »

Comparing 4 Popular Embedded File Systems for NOR and NAND Flash

In this article, we discuss 4 popular file systems for both NOR and NAND flash, commonly used in bare metal and RTOS-based embedded systems: LittleFS, Yaffs, FileX and TSFS. We provide a brief description of each file system and compare their performance, RAM consumption and other specific advantages and limitations. There are plenty of other

Read More »

Setting up SPI NAND on Nordic’s nRF5340 (from A to Z)

In this article, we explain how to connect, configure and access a serial NAND device connected through SPI to the Nordic Semiconductor’s nRF5340 MCU. In the process, we discuss serial flash fundamentals, write a fully functional SPI flash driver, and compare SPI and QSPI performances. For demonstration purposes, we use the nRF5340-DK development kit which

Read More »

Serial NAND Flash: the Perfect Companion for Zephyr OS

In this article, we explain why serial SLC NAND flash is an ideal companion for Zephyr OS. We discuss some of the pitfalls to look out for when in comes to integrating NAND flash, and lay out the key ingredients to a successful and reliable integration. Finally, we introduce which are, in our opinion, two

Read More »

Why is FAT Slow on SD Card?

This article discusses the performance limitations of the FAT file system with a focus on SD Card. After a brief refresher on FAT fundamentals, we show how FAT predictably achieves high access performances in the absence of fragmentation, but how fragmentation can build up until performances suddenly collapse. We conclude with a few important recommendations about the use of the FAT file system on embedded flash memory.

Read More »

What Is a Flash File System?

In this article, we explain how flash file systems achieve native support for raw flash devices. We compare flash file systems to a common alternative, which is the combination of a block device file system (e.g., FAT) with a flash translation layer (FTL), and we make the case that the native approach is a better overall solution.

Read More »

Evaluating Embedded File System RAM Usage Under Real-Time Constraints

In this article, we discuss the impact of real-time requirements on embedded file system performances and RAM usage. We show how to calculate the amount of buffering needed to absorb a hypothetical sequence of write accesses of varying duration. We show how RAM usage, write access time and average throughput are interdependent under our real-time assumption.

Read More »

Making Sense of Flash File System Performances

In this particular article, we show how the maximum average write throughput on a given flash device varies with the amount of stored data. We provide a simple performance model that can be used for setting realistic performance expectations, comparing file system performances, and questioning application requirements with minimal assumptions regarding the actual workload or file system implementation.

Read More »

5 Things to Consider When Choosing an Embedded File System

In this article, we cover five aspects of embedded file systems that you should have in mind when deciding which one to choose, five essentials that you can’t ignore. This is by no means a complete guide to embedded file systems but it covers enough to avoid common mistakes, particularly among application engineers who have little prior experience with embedded file systems.

Read More »

Everspin MRAM Performance Benchmark Comparison

For this article, we look at Everspin’s EM064LX in the context of data storage applications, focusing on access speed metrics, that is average throughput and worst-case access latency. For context, we compare MRAM performances with NOR and NAND flash using a simple benchmark and discuss the implications of the obtained results from an application design standpoint.

Read More »

First Look at Everspin’s New xSPI STT-MRAM Lineup

In this article, we take a closer look at this promising new offering, focusing on differentiating factors compared to existing flash-based devices and previous MRAM implementations. We present 4 use case scenarios to illustrate how we believe the EMxxLX xSPI family can compete with current flash-based solutions and how it really changes the game for us embedded designers.

Read More »
Finding a Flash Replacement

Finding Flash a Successor

This article is all about emerging non-volatile (NVM) technologies, a complex and ever-evolving topic that has stimulated numerous research fields over the years, and engaged substantial investments from the biggest players in the semiconductor industry. The topic is also quickly gaining momentum among embedded developers.

Read More »

QSPI NOR Flash Part 2 – Memory Organization

In this article we’ll leave the package attributes behind to focus on the internal features of QSPI devices, starting with the memory organization. This article will cover the overall capacity, multi-stack devices as well as the memory map organization units such as pages, blocks and sectors.

Read More »

QSPI NOR Flash Part 1 – Hardware Characteristics

In this first article, we’ll go over some important considerations to keep in mind when using a NOR for code shadowing or execute in place, and explain how these considerations may change when using the NOR for data storage with a file system. Then we’ll take a quick look at the hardware characteristics of QSPI NOR devices.

Read More »

NOR vs NAND: So You Think You Know the Music?

In-depth comparison between NOR and NAND covering aspects of NOR and NAND flash technologies that, in our view, are too often ignored including the impact of the application requirements on the choice of Flash technology.

Read More »
Road leading to an SD Card shaped sunrise.

Managed vs Unmanaged: The Many Roads to Flash Storage

Let’s explore and compare two different paradigms of flash management commonly used throughout the industry: managed flash and unmanaged flash. Managed flash devices include SD cards, USB flash drives, eMMC and UFS modules — also SSDs, but those are less often seen in embedded systems. These are all NAND-based devices.

Read More »

Taming the Flash Beast

This article is the first of an introduction series about flash memory with a focus on embedded systems designs using an embedded file system. A high-level introduction shall we say. Not the kind that takes you straight to the electron and drags you through the depths of quantum physics. No. The purpose of this series

Read More »
Screenshot of the Eclipse CDT debug configuration panel.

GCC Toolchain Eclipse Setup Guide Part 4 — Debug Configuration

In this article we’ll look at the last step of setting up a C/C++ embedded development project within Eclipse CDT. Which is creating and launching a debug configuration for the project. The kind of project managed or Makefile base does not affect the debugging process so these instructions applies to both types of projects.

Read More »
Timing diagram of various high-level failures that could break the coherence of a data logging application.

Fail-Safe Storage with the TREEspan File System Part 3: Enforcing Coherence Through Transactions

In this article, we show that TSFS transactions go beyond preserving file-level integrity, and can also be used to enforce coherence across multiple files and directories. To support the discussion, we present a real-life application example and demonstrate how a single additional call to tsfs_commit() is all that is needed to make the code immune to unexpected failures.

Read More »
Time diagram of the protection afforded by a transactional file system against various unexpected failure points during a file update.

Fail-Safe Storage with the TREEspan File System Part 2: TSFS Transactions

In this second article in this series we see how an application can be designed to withstand such unforeseen events, using TSFS transactions. Doing so, we introduce the tsfs_commit() API. We also discuss the write transaction atomicity property, by which applications can be safely designed ignoring potential partial update issues.

Read More »
Time diagram of various file system unexpected failures and their impact on data and metadata corruption.

Fail-Safe Storage with the TREEspan File System Part 1: Introduction

This is the first article of a three-part series on fail-safe, storage-related application design using an embedded file system. The first part of the series lays out the fundamental problem of unexpected failures and briefly discusses partial solutions. The second part introduces how a fail-safe transactional file system such as the TREEspan File System (TSFS)

Read More »
TreeSpan File System (TSFS) logo.

Introducing TREEspan File System

Last week was one of pride and excitement for the JBLopen’s development team as we released our latest product, the TREEspan File System (TSFS). After the official announcement and presentation, we feel the need to introduce the newcomer in a more personal way, such as we see it from the inside. Above all, we would

Read More »
Plot of a MicroBlaze system memory access latency and memory bandwidth versus the working set size.

MicroBlaze Benchmarks Part 2 – Memory Bandwidth & Latency

Following the last article on core performance this article looks at the MicroBlaze memory bandwidth and access latency. Within the article benchmarks results are presented and discussed for various configuration of the MicroBlaze memory sub system such as local memory, AXI blobk RAM and external SDRAM memory.

Read More »
Close up screenshot of the Eclipse IDE editor with a custom Makefile displayed.

GCC Toolchain Eclipse Setup Guide Part 3 — Makefile Project

In this third part of the series on setting up a bare-metal GCC toolchain in Eclipse we look at Makefile projects. A Makefile project, is more complicated to setup but offers greater control and flexibility over the build process. A Makefile based project is also independent of Eclipse and can be built and maintained easily outside of Eclipse which can be useful for automated builds.

Read More »