How it works on ARM Mbed

ARM Mbed™ is an IoT ecosystem built around the ARM Cortex-M processor line. ARM Mbed is unique as an IoT platform in that it is developed in C++ and uses C++ classes to support file system integration into its Virtual File System (VFS). Reliance Edge integrates with Mbed by implementing a FileSystemLike subclass.

When Reliance Edge is configured to use its POSIX-like interface, this allows users to access volumes through the FileSystemLike subclass or through the C standard library interface (such as “fopen()”). Most programs written for other file systems on ARM Mbed will work with this interface without significant changes.

If the Reliance Edge File System Essentials (FSE) API is chosen instead, users must call the FSE functions directly. This may be preferred in some scenarios to keep RAM and CPU requirements to a minimum.

The interface to the underlying block device is implemented using a C++ class hierarchy: the Reliance Edge FileSystemLike subclass must be inherited by another subclass which defines the interface to the block device. This structure is identical to what Mbed’s FAT file system (FATFileSystem) uses, so any subclasses that work with the FATFileSystem (such as SDFileSystem and USBFileSystem) work with Reliance Edge with only minimal changes. Two such adaptations are provided: one that uses a SPI interface to access an SD card, and another that uses a RAM virtual disk for storage.

How Tuxera Reliance Edge compares to FatFs

The default file system on ARM mbed, and perhaps the only full-featured pre-ported file system other than Reliance Edge, is an adaptation of ChaN’s FatFs known as FATFileSystem. Depending on the block device implementation, this file system may also be called SDFileSystem or USBFileSystem.

Some other interesting file-system-like modules are also shown here for comparison.

  • API Support
  • File system functionality
  • Reliability
  • Media supported
  • Professionally developed and tested

Reliance Edge

  • Accessed through mbed VFS or File System Essentials API
  • Full-featured, highly configurable
  • Full transactional reliability
  • SD, RAM disk, extensible
  • Yes

FatFs (SDFileSystem, USBFileSystem)

  • Accessed through mbed VFS
  • Full-featured, configurable
  • Vulnerable to corruption from power failure
  • SD, RAM disk, USB, extensible
  • No**

LocalFileSystem

  • Accessed through mbed VFS
  • Flat (no directory support)
  • Unknown
  • ARM mbed on-device storage*
  • No

FlashFileSystem

  • Accessed through mbed VFS
  • Read-only
  • N/A, read-only file system
  • CPU's FLASH program storage
  • No

* This is the semihost storage that shows up in Windows as an “MBED” drive when you plug in mbed-enabled hardware via USB. It is not designed for runtime application storage.

** The FatFs file system is widely used on various IoT platforms, but the ARM mbed port is not known to be professionally developed and tested. Our internal testing has exposed flaws in the port code.

For a generic comparison of Reliance Edge vs FAT and other filesystems, see the Product Introduction of the Reliance Edge Developers’ Guide.