Document number
205065
Version
Rev. N
Issue date
2019-02-04
Sirius OBC and TCM User Manual
Page
124
of
174
Downloads from an auto-padded partition should take into account the additional padding
size for written data when calculating the download size. The free and write pointers can be
used to determine the total current size of all written data including padding.
7.9.1.5. Partition virtual channel
This specifies which CCSDS virtual channel to be used for downloading of the data in the
partition. Currently virtual channels 0 and 1 are supported.
7.9.2. Recovery
The mass memory handler utilises the NVRAM to store on-going operation data, , which is
used in the initialisation step in order to recover consistency after aborted write or free
operations, caused for example by a power failure reset.
If errors or inconsistencies are detected when the stored on-going parameters are read from
NVRAM at initialisation, the recovery associated with the unavailable item will be skipped
and the initialisation will continue.
The initialisation recovery is aggressive, and will prioritise a usable system over data
retention; any single block which exhibits metadata inconsistencies that make it impossible
to safely add it to the translation table will be erased and considered free.
For continuous and circular partitions, further recovery is performed in order to ensure that
the partition data range is continuous (which is required in order for the partition to be
usable). If a discontinuity is discovered, the recovery process will erase data blocks from the
highest logical partition address and downwards, until a continuous range of data is left on
the partition. Such discontinuities can for example occur due to corrupt blocks, or if a
partition is configured to include blocks with unknown contents (e.g. changing a direct
partition into a continuous partition).
Recovery does not take into account the format of the stored data and may for example
leave a partition with data that no longer fulfils segmentation requirements for download.
Recovery may cause the free and write pointers of continuous/circular partitions to move.
An empty continuous/circular partition, where the write pointer is located exactly at the start
of a block, will have the free and write pointers reset to address 0 if a reset and subsequent
re-initialisation occurs.
Recovery will cause rediscovery of previously freed data in a block in the following
scenarios:
•
If the block was not completely freed.
•
If data was freed from the block in a continuous/circular partition and the free did not
move past the block boundary.
•
If data was freed from the block in a continuous/circular partition and the write pointer
was located inside the block.
For continuous/circular partitions, this data rediscovery will only occur in the block where the
free pointer was last located. For direct partitions, it will occur in every block which provides
one of the scenarios listed above.