Skip to section navigationSkip to content

Open Source Software

Contact Us:

NASA's Goddard Space
Flight Center

Code 504
8800 Greenbelt Road
Greenbelt, MD 20771


OSI Certified

The Technology Transfer and Partnerships Office
EEPROM File System (EEFS)

The EEPROM File System (EEFS) is a simple, reliable file system for embedded systems. The EEFS is intended for non-block oriented devices such as EEPROM, ROM, or RAM. The EEFS trades complexity and the ability to handle block devices for simplicity and understandability.

EEPROM File System (EEFS) Goals

The EEPROM File System (EEFS) is a simple, reliable file system for embedded systems. The primary purpose of the EEFS is to provide a file system abstraction for EEPROM, PROM, or RAM memory devices that is simple, efficient, and reliable. The EEFS can be used on embedded systems where a file system is needed to access data from EEPROM, PROM, or RAM devices, but otherwise might not have the resources to deploy a full file system such as the MSDOS file system. The EEPROM file system can also be used in systems where the ability to dump, patch, and diagnose files is required.

Project Goals

The goal of the EEPROM file system is to provide a simple, low resource, reliable file system interface for embedded applications such as satellite data systems. The EEPROM file system provides a standard file system application program interface without the underlying complexity of a traditional file system.

Functional Goals

The EEPROM file system makes it easier to do the following:

  1. Generate a flight software (or general embedded system) executable image on the development workstation. This feature allows the embedded file system to be generated with a known CRC and loaded on to the target processor as a single image. This is a big advantage over formatting a file system on the image, then transferring each file to the file system on the target.
  2. Prove that the file system is correct and reliable. Because the EEPROM file system is simple, the code size is small, making it easy to review and find errors.
  3. Patch the files in the file system. Due to the simple layout of the EEPROM file system, it is very easy to patch the files in the file system, if the need arises. This can be helpful in deeply embedded systems such as satellite data systems.
  4. Dump and understand the file system format. Because the EEPROM file system is simple, it is easy to dump the contents of the EEPROM or PROM memory and determine the contents of each file.

Evolvability Goals

While the EEFS meets its stated goals, there are several ways it can be expanded to meet the needs of future applications:

  1. Expand the file system to work as a general purpose, high performance data recorder file system in RAM or SRAM.
  2. Expand the physical layer to work with block devices or flash memory devices that require wear-levelling.

Usability Goals

  1. Adhere to POSIX file system API standards.
  2. Provide drivers for commonly used real time and general purpose operating systems. RTEMS and vxWorks drivers are included.
  3. Provide easy to use utilities to generate and manipulate EEFS images on the development workstation.
  4. Keep the code simple enough to integrate on small operating systems that do not have a file system capability.

Software Packages

This software is released under the terms and conditions of the NASA Open Source Agreement (NOSA) Version 1.1 or later.

EEPROM File System (EEFS) Software Package

NASA logo - link to
  • Page Last Updated: October 24, 2019
  • Page Editor: Adil Anis
  • NASA Official: Darryl Mitchell