mirror of https://github.com/ARMmbed/mbed-os.git
5e22db842f
- flash-journal basicAPI fix for ARM toolchain - Updated storage-abstraction with version 0.4.7 (commit c7c4a8c52298bbc006a6f53a059fb2599cad73cc). - https://github.com/ARMmbed/storage-volume-manager at version v0.2.10. - https://github.com/ARMmbed/mtd-k64f v0.4.2 version of flash.c (imported as storage_driver.c). - update to CFSTORE to use the storage-volume-manager API to initialize volume manager and add a volume for CFSTORE to use. - https://github.com/ARMmbed/flash-journal at version v0.5.3 (commit 4c58165e2fa02c6ed2b9d166a9c96967e81f458f) including readFrom() support. - Taking flash-journal-strategy-sequential v0.6.7 strategy.c (commit b11a718761aa9f33679956968a21aaef9179bde1). - GCC_ARM, ARM and IAR compiler warning fixes for new versions of flash-journal code. - Fix storage-volume-manager test cases for concurrent access from 2 volumes to use addresses within the 512-1024kB address range, which is within the cfstore added volume. - Fix cfstore/storage-volume-manager IAR warnings when building with verbose flag. |
||
---|---|---|
.. | ||
configuration-store | ||
doc | ||
source | ||
LICENSE | ||
Makefile.scripts | ||
README.md | ||
VERSION | ||
apache-2.0.txt | ||
berkeley.txt | ||
cfstore.doxyfile | ||
chernov.txt | ||
mbed_lib.json | ||
tatmanjants.txt |
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:
- By logging an issue in the CFSTORE repo.
- By submitting a Pull Request to the CFSTORE repo.
- By sending an email to: -- simon.hughes@arm.com -- milosch.meriac@arm.com
Further Reading
- The CFSTORE Getting Started Guide including examples.
- The CFSTORE Engineering Requirements.
- The CFSTORE High Level Design Document.
- The CFSTORE Low Level Design Document.
- The CFSTORE Test Plan.
- The CFSTORE Application Note 0001: NXP Freescale Kinetis FRDM-K64F Flash Memory Usage.
- The CFSTORE Releases provides requirements tracking by listing the requirements supported for a CFSTORE version.
20160714