Leading the Embedded World

Green Hills Software File Systems

RISC-V Embedded Software Solutions


When it comes to file system support for embedded devices, there is no one-size-fits-all solution. The requirements for a digital camera differ greatly from an in-vehicle infotainment system or carrier grade telecommunications system. To accommodate these differing requirements, the INTEGRITY RTOS supports a wide variety of file systems.

INTEGRITY uses a a virtual file system (VFS) framework model to make it easy to add and remove support for different file systems. The file system server (VFS server) provides file system services to applications that use file system APIs such as C stdio (fopen(), fread(), fwrite(), etc.), C++ iostreams (cout, cin, etc.), or the low-level POSIX interfaces (open(), read(), write()).

File System formats available with INTEGRITY

  • Unix/Linux Compatible Fast File System (FFS)—The Berkeley Fast File System (FFS) is an inode-based file system that first appeared in the BSD UNIX distribution from the University of California. The FFS file system, sometimes referred to by its predecessor’s name, UFS (UNIX File System), is used by many BSD derivative operating systems such as NetBSD, FreeBSD, and OpenBSD.
  • DOS/FAT 12/16/32—The MSDOS file system originated with the Microsoft DOS operating system. It is sometimes referred to by its primary data structure, the file allocation system (FAT). Like FFS, MSDOS is a hierarchical, disk-based file system. The MSDOS file system comes in several variants named after the number of bits in each entry in its file allocation table: FAT12, FAT16, and FAT32. The original MSDOS file system supported filenames of up to 8 characters followed by a dot, and a 3 character extension. With Windows 95, Microsoft layered a long filename scheme onto the FAT file system. This long filename support is sometimes referred to as VFAT. INTEGRITY supports all of these variants.
  • CDROM ISO9660/CDFS/CDA—The ISO9660 file system is commonly found on Compact Disc media. INTEGRITY supports the generic ISO9660 standard format as well as the Rockridge and Joliet extensions. The Joliet extension is favored in the MS Windows world. It allows Unicode characters to be used for all text fields, which includes file names and the volume name. The RockRidge extension is favored in the Unix world. It lifts file name restrictions, but also allows Unix-style permissions and special files to be stored on the CD.
  • Partitioning Journaling File System—The INTEGRITY Partitioning Journaling File System (PJFS) provides guaranteed data integrity on the disk through catastrophic system failures (including loss of power). The PJFS constantly writes to a serial log on the disk prior to the actual data being updated. This allows PJFS to restore the data on the disk to its pre-crash state in the event of a failure. This type of file system is necessary in devices that have the most stringent reliability requirements.
  • 3rd party file systems—can also be added using INTEGRITY VFS layer or file table hooks.

Sharing over a network

INTEGRITY and µ-velOSity also support two methods for sharing file systems across a network:

  • NFS Client—The Network File System (NFS) is commonly used in UNIX environments. It allows one machine (the NFS server) to share its files with other machines (NFS clients) across an IP network. Both NFS version 2 and NFS version 3 are supported.
  • SMB (Server Message Block)—NQE™ Client/Server from Visuality Systems is an embedded SMB/CIFS protocol implementation providing file and directory access to and from any SMB/CIFS based clients, including all MS Windows clients, Samba, OS/2 or other NQ powered device. NQE Client also allows printing on remote Windows or Samba attached printers. NQE Client/Server can be easily integrated with INTEGRITY OSs, designed for optimal performance, and has a small footprint. Your SMB/CIFS enabled device will announce itself on the network, and place an icon in the "Network" folder or in "My Network Places" on the client's machine.

Supported devices types

  • IDE/EIDE/ATAPI (hard disk drives, CD ROM drives, DVD drives)
  • RAM disk
  • USB mass storage
  • SD card
  • eMMC
  • UFS
  • Portable to other types using standardized IO device

Application Programming Interfaces

All INTEGRITY file systems support ISO and ANSI standards based APIs including:

  • POSIX (open, read, write, etc)
  • C stdio
  • C++ iostreams