NASA EEFS

Hi, any experience with this?

It is intended to be used with EEPROM, SRAM, FRAM, MRAM devices.
P.

EEFS was developed to store application code for military missile systems and NASA space projects.

I saw it used with the VxWorks RTOS. VxWorks has been used by many unmanned NASA projects. VxWorks was developed by two of my friends who left the National labs, founded Wind River Systems, and became very wealthy.

It is also used with RTEMS. Originally the Real-Time Executive for Missile Systems but now called the Real-Time Executive for Multiprocessor Systems.

EEFS provides a very light weight file system for development and deployment of embedded system software.

It is a slotted file systems so it is mostly write once read many. Slots are usually larger than the file so you can send patched files during a mission.

Here are the design goals for EEFS:

File System Design:
The EEPROM File System is a standard file system interface for data stored in EEPROM. The EEPROM File System is a slot
based file system where each slot is a fixed size contiguous region of memory allocated for a single file. Note that
each slot can be a different size. The size of each slot is determined when the file system is created and is based
on the size of the file to be stored in the slot. Additional free space can be to the end of each slot to allow room
for the file to grow in size if necessary. Since this file system is intended to be used for EEPROM it is unlikely
that files in the file system will change very often, so in most cases it will be used as a write once, read many file
system. The file system is organized this way for the following reasons:

  1. Keeping each file in one contiguous area of memory makes it easier to patch or reload eeprom without going through
    the file system interface if required by on-orbit maintenance.
  2. This file system is intended to be used for eeprom, so in most cases it will be used as a write once, read many
    file system. So it is unlikely that files in the file system will change very often.
  3. Simplifies the design of the file system.