Skip to content

Onboard Storage

Onboard storage on a planetary rover is flash and EEPROM behind a file system, sized so that a sol’s data products fit until the next relay pass clears them. Both Mars rovers that have run long missions have lost a compute string to it: Spirit was out of normal operation from sol 18 to sol 33 in 2004 because of a defect in the file system library [1], and Curiosity’s A-side computer was taken off prime duty by NAND flash hardware failures beginning on sol 200 [5] and has since lost both flash banks [4].

Spirit and OpportunityCuriosityPerseverance
RAM128 MB128 + 512 MB128 MB x2 plus 512 MB x2
Flash256 MB4096 MB4096 + 3072 MB
EEPROM11 MB, of which the 3 MB on the RAD6000 card has no error detection and correction128 MB NOR per compute elementnot reported

Sources: [6] Table 1 for the RAM and flash row, [2] for the MER EEPROM detail, [4] for the Curiosity NOR figure. On MER the RAD6000 card holds the CPU, 128 MB of DRAM and one 3 MB EEPROM bank, and a separate non-volatile memory card holds two 4 MB EEPROM banks and the 256 MB of flash [3].

MER partitions storage by medium rather than by function, and there are no disk drives [1]:

File systemMediumSizePurpose
RAM file systemRAM4 MBTemporary storage of uplinked files
Temporary file systemRAM2 MBTemporary data product store
FLASH file systemflash224 MBScience and engineering data products
Primary sequenceEEPROM700 KBSequence storage
Secondary sequenceEEPROM700 KBRedundant sequence storage
Primary downlinkEEPROM50 KBDownlink table storage
Secondary downlinkEEPROM50 KBRedundant downlink table storage

Source: [1], Table 1. The 224 MB flash file system is the visible part of the 256 MB device; the remainder holds the flight software images. Each flight software image is a single binary containing a boot loader and the software, and the A and B images each live partly in an EEPROM bank on the non-volatile memory card and partly in flash [3].

Curiosity’s layout is different. Each compute element carries 4 GB of NAND in two banks plus 128 MB of NOR [4]. The NOR normally holds up to four redundant flight software copies in two ground-selectable groups; the NAND holds the file system, with two parameter partitions and a data products partition [4]. On RCE-B the data products partition is 3936 MB with a 16 MB backup non-volatile parameter memory; on RCE-A, after the upper NAND bank was mapped out, the data products partition is 1888 MB.

The bundled DOS file system library builds an interlinked representation of the file system in RAM when the file system is mounted, and updates it as files change. Deleting a file frees the space in flash but never releases the corresponding internal structure: the memory required is set by the maximum number of files that ever existed in each subdirectory, not by the number present [1]. MER stores every data product as a file in a subdirectory, with a metadata file alongside carrying collection time and priority, and the data product management software limits the system to 8192 unique products.

Two configuration parameters turned that into a vehicle loss. The library’s private area was initialized at 256 KB with expansion from free system memory permitted and no ceiling, so it grew in 256 KB increments until the more than 4 MB of free system memory was gone; and the memory library was configured to suspend a task silently when an allocation could not be satisfied rather than failing the file operation [1]. Because the failure happened inside a critical region, the DOS library semaphore was never released, blocking the task that reads files for recorded telemetry, the task that pushes frames to the radio and the task that idles the file system during shutdown.

Recovery took 15 sols [1]. A hardware crippled mode command, one of a small set processed entirely by hardware, sets a register bit that the flight software reads during initialization and that tells it to build a RAM file system with the same logical device name instead of mounting flash. That file system is ten times smaller and volatile, but because every application uses the logical name the change is transparent to the rest of the software [1]. On sol 27 the team deleted the obsolete data products and subdirectories left over from the launch software load; on sol 32 they booted into crippled mode, copied the flight software image into RAM as insurance, erased flash in small chunks while verifying both flight software images after each chunk, then commanded a format on the next boot. Normal science resumed on sol 33.

Six months after landing, on sol 200, telemetry reported uncorrectable errors in the NAND flash on the prime compute element. Several flight software tasks had hung, so RCE-A could not shut down for its normal battery recharge session, and the watchdog timers that should have forced a reboot were being reset instead. Continued operation would have browned out the rover in three to six days [5]. Within 16 hours the team bypassed the flight software and commanded a hardware swap to RCE-B, which came up prime and entered safe mode.

The cause was a single chip in the flash array generating errors during erase cycles, attributed to a circuit board connectivity problem or infant mortality of a commercial part. Pre-flight testing had erased the NAND about 12 times against an additional 38 erases after launch, and the part is rated for 100,000 cycles [5]. Recovery segregated the bad memory and hardware reset RCE-A to run with a half-size flash file system, which the mission absorbed because the data storage volume had been sized with substantial margin. A maximum up-time watchdog was added to the flight software. The swap left the rover single string 35 days before a solar conjunction during which it would not be commandable for 25 sols, with the backup carrying the same software and the same flash design [5].

That was not the end of it. RCE-A remained the backup for 5.5 years and almost 2000 sols until an unrelated flash problem on RCE-B on sol 2172 forced a swap back; RCE-A then ran prime until further failures reached its lower NAND bank on sol 2339 and the rover swapped to RCE-B again, where it has stayed [4]. The R-Hope software release exists to make RCE-A usable without any NAND at all, relocating the file system into 64 MB of NOR, about 1 percent of the NAND volume it replaces. That relocation costs performance as well as capacity: a full set of partition reformats that takes under 5 minutes on NAND takes considerably longer on NOR [4].

MER’s flash file system holds 224 MB, about 1792 Mbit [1], against an average relay return of about 56 Mb/sol per rover through Odyssey [8], so the vehicle can retain roughly a month of returnable data. The binding constraint is the 120 Mbit per rover allocation in Odyssey’s own memory and the pass schedule rather than the rover’s storage [8]. What actually filled the file system was the count of files rather than their size: the anomaly was triggered by motion history data products and a per-communication-window data summary report, not by image volume [1].

Compression is what keeps the ratio manageable. As of 7 February 2004, MER had downlinked 5132 ICER-compressed regular images totaling 2867.9 Mpixel in 387.3 MB, an average 1.13 bits/pixel against a 12 bit/pixel source [7]. A further 6075 thumbnails, 64x64 pixel averages of the full frames, took 3.8 MB at 1.27 bits/pixel, about 0.005 bits per pixel of the original image.

References

  1. Reeves, G. E. and Neilson, T. A. (2005). The Mars Rover Spirit FLASH Anomaly. Source
    BibTeX
    @inproceedings{reeves2005mars,
      author = {Reeves, Glenn E. and Neilson, Tracy A.},
      title = {The Mars Rover Spirit FLASH Anomaly},
      booktitle = {2005 IEEE Aerospace Conference},
      year = {2005},
      address = {Big Sky, Montana},
      doi = {10.1109/AERO.2005.1559723},
      url = {https://ieeexplore.ieee.org/document/1559723/}
    }
  2. Neilson, T. (2005). Mars Exploration Rovers Surface Fault Protection. Source
    BibTeX
    @inproceedings{neilson2005mars,
      title = {Mars Exploration Rovers Surface Fault Protection},
      author = {Neilson, Tracy},
      booktitle = {2005 IEEE International Conference on Systems, Man and Cybernetics},
      address = {Big Sky, Montana},
      year = {2005},
      url = {https://dataverse.jpl.nasa.gov/dataset.xhtml?persistentId=hdl:2014/37750},
      doi = {10.1109/icsmc.2005.1571115},
      volume = {1},
      pages = {14-19}
    }
  3. Greco, M. E. and Snyder, J. F. (2005). Operational Modification of the Mars Exploration Rovers Flight Software. Source
    BibTeX
    @inproceedings{greco2005operational,
      author = {Greco, Martin E. and Snyder, Joseph F.},
      title = {Operational Modification of the Mars Exploration Rovers Flight Software},
      booktitle = {2005 IEEE International Conference on Systems, Man and Cybernetics},
      year = {2005},
      address = {Waikoloa, Hawaii},
      url = {https://hdl.handle.net/2014/37496}
    }
  4. Holloway, A., Peper, N., Anabtawi, A., Quade, J. and Byrne, D. (2022). Building a Lifeboat: MSL's Uplink and Installation Campaign to Restore a Failing Backup Computer. Source
    BibTeX
    @inproceedings{holloway2022building,
      author = {Holloway, Alexandra and Peper, Nick and Anabtawi, Aseel and Quade, Jackson and Byrne, DJ},
      title = {Building a Lifeboat: MSL's Uplink and Installation Campaign to Restore a Failing Backup Computer},
      booktitle = {2022 IEEE Aerospace Conference},
      year = {2022},
      address = {Big Sky, Montana},
      url = {https://hdl.handle.net/2014/55976}
    }
  5. National Aeronautics and Space Administration. (2013). Mars Science Laboratory (MSL) Sol-200 Anomaly. NASA Lessons Learned Information System, Lesson No. 11201. Source archived copy
    BibTeX
    @techreport{nasa2013msl,
      title = {Mars Science Laboratory (MSL) Sol-200 Anomaly},
      author = {{National Aeronautics and Space Administration}},
      year = {2013},
      institution = {NASA Lessons Learned Information System},
      number = {Lesson No. 11201},
      type = {Lessons Learned Entry},
      url = {https://www.nongnu.org/lzip/msl-sol-200-anomaly.html}
    }
  6. Rankin, A., Del Sesto, T., Hwang, P., Justice, H., Maimone, M., Verma, V. and Graser, E. (2023). Perseverance Rapid Traverse Campaign. Source
    BibTeX
    @inproceedings{rankin2023perseverance,
      title = {Perseverance Rapid Traverse Campaign},
      author = {Rankin, Arturo and Del Sesto, Tyler and Hwang, Pauline and Justice, Heather and Maimone, Mark and Verma, Vandi and Graser, Evan},
      booktitle = {2023 IEEE Aerospace Conference},
      address = {Big Sky, Montana},
      year = {2023},
      url = {https://robotics.jpl.nasa.gov/media/documents/2023-rapid-traverse.pdf},
      doi = {10.1109/aero55745.2023.10115835},
      pages = {1-16}
    }
  7. Kiely, A. and Klimesh, M. (2004). Preliminary Image Compression Results from the Mars Exploration Rovers. IPN Progress Report. Source
    BibTeX
    @article{kiely2004preliminary,
      author = {Kiely, A. and Klimesh, M.},
      title = {Preliminary Image Compression Results from the Mars Exploration Rovers},
      journal = {IPN Progress Report},
      volume = {42-156},
      year = {2004},
      institution = {Jet Propulsion Laboratory},
      url = {https://ipnpr.jpl.nasa.gov/progress_report/42-156/156I.pdf}
    }
  8. Taylor, J., Makovsky, A., Barbieri, A., Tung, R., Estabrook, P. and Thomas, A. G. (2014). Mars Exploration Rover Telecommunications. Jet Propulsion Laboratory, California Institute of Technology. Source
    BibTeX
    @incollection{taylor2014mars,
      author = {Taylor, Jim and Makovsky, Andre and Barbieri, Andrea and Tung, Ramona and Estabrook, Polly and Thomas, A. Gail},
      title = {Mars Exploration Rover Telecommunications},
      booktitle = {Deep Space Communications},
      chapter = {7},
      series = {DESCANSO Design and Performance Summary Series},
      publisher = {Jet Propulsion Laboratory, California Institute of Technology},
      year = {2014},
      url = {https://descanso.jpl.nasa.gov/monograph/series13/DeepCommo_Chapter7--141030.pdf}
    }