Error-correcting code between file system and SPI Flash to secure data storage
Before continuing please visit: Project Thesis
Motivation
We are currently working on a sensor platform that uses the nrf52840 BLE SoC as a processing unit. The storage medium is an IS25LE01G SPI NOR Flash.
RIOT OS is the operating system to be used on the sensor system. It already implements all the necessary drivers and interfaces for the flash. A file system is also already implemented (e.g. LittleFS). In order to protect both the file system itself and the data, an intermediate layer is to be implemented, which secures the transactions between the file system and flash using ECC. The ECC to be used is the Reed-Solomon code often used for this purpose.
Transactions are to be encoded and decoded. Errors should be recognized and corrected if possible. Error reports and general housekeeping (e.g. regular scrubbing of the flash and checking for errors) should be possible as a self-test if required. The influence on write and read speed should be determined by extensive evaluations.
Tasks
In this master project work, student has to perform the following tasks:
- Familiarization with the topic: Reed Solomon Codes, RIOT OS, LittleFS, nrf52840 SoC.
- Familiarization with Riot OS, setting up the basic functionality
- Understanding of the write and read transactions between the file system and Flash
- Implementation or adaptation of a flexible RS library (parameters such as block size, message length, etc.)
- Development of the intermediate layer, in which the transactions between the file system and flash can be secured with the help of the library.
- Encoding and decoding on the fly for write and read commands
- Report on recognized errors, attempt to correct them
- Development of an FDIR (Fauk Detection Isolation and Recovery) interface
- Reporting of errors incl. debug information
- Implementation of a housekeeping/scrubbing as a self-test in which the content of the flash is checked/corrected as a whole
- Extensive evaluation (also with different parameter settings)
- Influence of the intermediate layer on write and read performance
- Influence on power consumption
- Robustness/Error correction through targeted error injection (e.g. through manual manipulation of data in the flash)
- Documentation:
- Documenting the project in GitLab.
- Proper code structure and comprehensible in code documentation has to be maintained.
- Report: Max. 8 pages, IEEE double column format.