Green Hills Software File Systems



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-vehicicle 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()).

Wear Leveling Flash Storage (WLFS)

WLFS gives you the ability to access a bank of flash memory through the file system as if it were a disk. Wear leveling technology manages the underlying flash in a manner that guarantees wear on the flash will be evenly distributed across the entire device, and is also resilient against power failures and other unexpected interruptions.

Both NOR and NAND flash device types are supported with WLFS. Any of the supported file system formats may be used in conjunction with WLFS.

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.

  • UDF DVD (read only)—The UDF file system (Universal Disk Format) is the file system used on DVD's as well as other media. INTEGRITY's UDF library allows users to build applications that interact with UDF formatted media using a standard POSIX-style interface. In addition, applications can access all of the other file systems supported by INTEGRITY alongside UDF.

  • 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, CDROM drives, DVD drives)
  • RAM disk
  • Flash memory
  • Compact Flash
  • USB mass storage
  • M-Systems
  • Portable to other types using standardized IODevice

Application Programming Interfaces

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

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