-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement persistent state #201
Comments
Also blocked by #207 because we need tests. |
I think it would be good if we employed some form of error detection and correction (EDAC) for the persistent state. The most simple to implement is probably triple modular redundancy, but this has a memory overhead of 200 %. The persistent state is not very large, however, if we want to use the same EDAC method also for the telemetry memory, then this is not feasible. Hamming or Reed–Solomon codes are better in regard to overhead, but there are lots of other options to choose from. I created issue #239 for this and added it to this epic. |
I unblocked this Epic because the newly added #239 can already be worked on. |
No longer blocked by #239 since we will not implement it for everything in the persistent state. |
Description
The persistent state contains data for the bootloader, data of the current state of the COBC, housekeeping data as well as the EDU program status history and the EDU program queue. I totally forgot about the last two. We already have them implemented but only in RAM. I am not sure how to best move them to the FRAM. Either we only have them in the FRAM and load every time from there. Or we cache them in RAM and load periodically and/or when writing.
Regarding the rest, that is just a few variables that need hardly any space and should therefore be quick to read and write. Since they do contain very important things like the
activeFirmwareImage
I want to employ a self-healing mechanism for them (store three times, compare and eliminate difference on read). This should get its own abstraction calledPersistentVariable
.To do
The text was updated successfully, but these errors were encountered: