One Small Step to a Reliable File System

Posted by: Thom Denholm

Neil Armstrong's footprint on the moon

The Reliance Edge File System Essentials (FSE) is one of two API sets supported by Reliance Edge. It’s a minimalist but reliable alternative to the POSIX-like option.

What are its benefits and how does it work? This feature summary should answer those questions.

The micro storage issue

Many small embedded designs don't have storage for data. Instead, programs on the device are simply loaded and executed. More sensors in the device and data-heavy situations mean a greater need to log some data - or decisions made - for later troubleshooting. Then again, some newer embedded designs are primarily used to gather sensor data, even if it is only until the device is in range of the cloud.

Such increases in data storage needs mean that system designers must eventually migrate from having no file system to needing something - if not a full POSIX implementation. They can take these steps on their own - treating storage as a memory pool here, storing data from multiple sensors there. While such an approach is doable, it opens the door to considerable increases in workload through complexity.  For instance, storing data in two different "files" in a memory pool can mean load balancing. And while doing this, a system designer also needs to consider unexpected interruptions, special media handling, and especially tests. Not an easy task.

A far better alternative is to hand the task over to experts. Until recently, though, the only file systems available for microcontrollers were primitive FAT implementations, with little real thought towards fail safety or even performance. Reliance Edge changes all that – and File System Essentials provides a solid first step.

Reliance Edge FSE - A smart solution

Within FSE, there are no file names or paths. Instead, a set of numbered locations are defined. Within the code, they can be specified by #define values to make the project more readable. These locations can be read from, written to, and truncated. The size of these "files" can also be read. The number of available locations is fixed at compile time.

#define LOG_FILE        (RED_FILENUM_FIRST_VALID)
#define DATABASE_FILE   (RED_FILENUM_FIRST_VALID + 1U)
#define ICON1_FILE      (RED_FILENUM_FIRST_VALID + 2U)
#define ICON2_FILE      (RED_FILENUM_FIRST_VALID + 3U)

As mentioned earlier, multiple files increase the complexity of testing for a simple memory pool - doubly so if the effects of power interruption also have to be managed. With FSE however, all the tests are provided, and all core file interactions have already been validated. Reliability is provided by transaction points, also fully tested.

These tests were designed for Automotive SPICE, and Reliance Edge is written in MISRA C. While not necessary for a small embedded device, you can take comfort in just how fully tested this software is. Integrating Reliance Edge FSE into a project may be the simplest - and most effective - next step available today. No operating system required!

A compact, focused tool

Reliance Edge FSE has been designed to fill a very specific role. Like any highly focused solution, this means it sacrifices some breadth to achieve the levels of precision needed. The most obvious curveball of Reliance Edge FSE is that it’s not a full file system. Names, folders, handles, and file attributes are all missing. A file can never be "opened" or "closed" - it just exists.

Another aspect of FSE is that it’s modest with its disk space in order to stay tiny. And while this is a limitation, it’s probably a minor one for most designs. Reliance Edge FSE takes a simple, practical approach to your disk space needs - at format time, all the chosen files are created with zero size. There are no quotas or file size limitations, but all the data still has to fit in the available space.

Reliance Edge FSE uses just 3898 bytes of RAM. Even though that’s twice what was available for the entire Apollo 11 Guidance Computer, it speaks of how far flash storage needs have come.

Final thoughts

The File System Essentials API set can be a great stepping-stone from no file system at all to full POSIX. In fact, it can even be the only solution needed for some edge designs. With full tests, functionality, and reliability, it’s far better to use Reliance Edge than something written ad-hoc by even the best developers. So if you’re looking for a compact, no-frills tool to handle your embedded flash storage needs - we have got you covered.

Embedded manufacturers - let's work together to ensure your data storage needs are accurately met


Comments (0)


Add a Comment





Allowed tags: <b><i><br>Add a new comment: