diff options
Diffstat (limited to 'os/ex/subsystems/mfs')
-rw-r--r-- | os/ex/subsystems/mfs/mfs.c | 4 | ||||
-rw-r--r-- | os/ex/subsystems/mfs/mfs.h | 50 |
2 files changed, 54 insertions, 0 deletions
diff --git a/os/ex/subsystems/mfs/mfs.c b/os/ex/subsystems/mfs/mfs.c index 7380c34a3..00488db1c 100644 --- a/os/ex/subsystems/mfs/mfs.c +++ b/os/ex/subsystems/mfs/mfs.c @@ -33,6 +33,10 @@ /* Driver local definitions. */ /*===========================================================================*/ +#define MFS_BANK_MAGIC1 0x35A1EC13 +#define MFS_BANK_MAGIC2 0x0FE14991 +#define MFS_HEADER_MAGIC 0x1AC7002E + /*===========================================================================*/ /* Driver exported variables. */ /*===========================================================================*/ diff --git a/os/ex/subsystems/mfs/mfs.h b/os/ex/subsystems/mfs/mfs.h index a47c25c47..7abbde0da 100644 --- a/os/ex/subsystems/mfs/mfs.h +++ b/os/ex/subsystems/mfs/mfs.h @@ -62,6 +62,56 @@ typedef enum { } mfs_state_t; /** + * @brief Bank header. + * @note The header resides in the first 16 bytes of a bank extending + * to the next page boundary. + */ +typedef struct { + /** + * @brief Bank magic 1. + */ + uint32_t magic1; + /** + * @brief Bank magic 2. + */ + uint32_t magic2; + /** + * @brief Usage counter of the bank. + */ + uint32_t counter; + /** + * @brief First data element. + */ + flash_address_t next; +} mfs_bank_header_t; + +/** + * @brief Data block header. + */ +typedef union { + struct { + /** + * @brief Data header magic. + */ + uint32_t magic; + /** + * @brief Data identifier. + */ + uint32_t id; + /** + * @brief Data size. + */ + uint32_t size; + /** + * @brief Data CRC. + */ + uint32_t crc; + } fields; + uint8_t h8[16]; + uint32_t h32[4]; +} mfs_data_header_t; + +/** * @brief Type of a MFS configuration structure. */ typedef struct { |