mbed-os/features/storage/FEATURE_STORAGE/cfstore
Marcus Chang 8876b7ef38 Removed static declaration for the StorageVolumeManager in the CFStore because this componenent is shared across all users of the flash. Added define guards to the CFStore location and size so that these can be changed from the settings file. 2016-10-27 10:26:28 +01:00
..
configuration-store Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
doc Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
source Removed static declaration for the StorageVolumeManager in the CFStore because this componenent is shared across all users of the flash. Added define guards to the CFStore location and size so that these can be changed from the settings file. 2016-10-27 10:26:28 +01:00
LICENSE Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
Makefile.scripts Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
README.md Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
VERSION Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
apache-2.0.txt Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
berkeley.txt Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
cfstore.doxyfile Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
chernov.txt Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
mbed_lib.json Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00
tatmanjants.txt Adding mbed-os/features/storage to mbed/features/storage/FEATURE_STORAGE (before deleting mbed-os/features/storage). 2016-07-26 23:07:24 -05:00

README.md

Secure Key-Value Storage

Executive Summary

The Configuration Store (CFSTORE) is a secure, associative key-value (KV) store C-Language Hardware Abstraction Layer. CFSTORE provides the secure and persistent storage for:

  • Storing encryption keys data.
  • Storing configuration data.
  • Storing firmware, firmware updates and incremental firmware blocks for assembling into a firmware update.

These services are presented to clients with:

  • A conceptually simple, file-like interface for storing and managing data using (key, value) pairs in persistent storage media.
  • A simple, hardware-independent API to promote portability across multiple platforms and a low attack surface.
  • A very small code/memory footprint so CFSTORE is capable of running on highly-constrained memory systems (~10kB free memory) where typically available SRAM << NV storage.
  • A simple (low complexity) storage capability at the expense of features. For example, CFSTORE only supports the storage of binary blobs rather than a rich set of data types.

Current support includes:

  • NV-backed support. Integration with Flash Abstraction (Flash Journal Strategy Sequential) for persistent storage on the Freescale FRDM K64F target.
  • SRAM backed support.
  • More than 60 test cases with >80% test coverage.
  • Comprehensive documentation including doxygen generated API and test case documentation.

Configuration-Store Software Architecture

    
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     
    |  Configuration Store Client   |     
    |  e.g. FOTA                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Configuration Store          |     |  uvisor                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     |                               |
                                          |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     |                               |
    |  Flash Abstraction Layer      |     |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     |                               |
                                          |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     |                               |
    |  Flash Driver Layer           |     |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    SW
    -----------------------------------------------------------------------
    HW

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  NV Storage Media e.g. Flash  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Configuration Store Software Architecture

The above figure shows the following entities (from top to bottom):

  • A Configuration Store client e.g. FOTA.
  • Configuration Store, the associative KV pair store.
  • Flash Abstraction Layer, portable across the driver layer.
  • Flash Driver layer e.g. CMSIS-Driver.
  • NV Storage Media. These are the physical storage media.

Providing Feedback

If you would like to make a contribution to CFSTORE, please provide feedback/designs/comments/code in one of the following ways:

Further Reading

20160714