Save RAM: Allocate eeFs only for MAX_MODELS (#462)

* allocate eeFs only for MAX_MODELS,
* keep old EEProm alignment
This commit is contained in:
Janek
2025-02-18 18:46:51 +01:00
committed by GitHub
parent e7edba29f3
commit 51ea45dfac
2 changed files with 17 additions and 7 deletions
+4 -4
View File
@@ -164,7 +164,7 @@ void storageFormat()
memclear(&eeFs, sizeof(eeFs));
eeFs.version = EEFS_VERS;
eeFs.mySize = sizeof(eeFs);
eeFs.mySize = sizeof(EeFsOld);
eeFs.freeList = 0;
eeFs.bs = BS;
for (blkid_t i=FIRSTBLK; i<BLOCKS-1; i++) {
@@ -186,12 +186,12 @@ bool eepromOpen()
if (eeFs.version != EEFS_VERS) {
TRACE("bad eeFs.version (%d instead of %d)", eeFs.version, EEFS_VERS);
}
if (eeFs.mySize != sizeof(eeFs)) {
TRACE("bad eeFs.mySize (%d instead of %d)", (int)eeFs.mySize, (int)sizeof(eeFs));
if (eeFs.mySize != sizeof(EeFsOld)) {
TRACE("bad eeFs.mySize (%d instead of %d)", (int)eeFs.mySize, (int)sizeof(EeFsOld));
}
#endif
if (eeFs.version != EEFS_VERS || eeFs.mySize != sizeof(eeFs)) {
if (eeFs.version != EEFS_VERS || eeFs.mySize != sizeof(EeFsOld)) {
return false;
}
+13 -3
View File
@@ -25,7 +25,7 @@
#define blkid_t uint16_t
#define EEFS_VERS 5
#define MAXFILES 62
#define MAXFILES 16 + 2 // 62 -> 18, MAX_MODELS + 1 (FILE_GENERAL) + 1 (FILE_TMP)
#define BS 64
PACK(struct DirEnt {
@@ -45,6 +45,15 @@ PACK(struct EeFs {
DirEnt files[MAXFILES];
});
PACK(struct EeFsOld {
uint8_t version;
blkid_t mySize;
blkid_t freeList;
uint8_t bs;
EEFS_EXTRA_FIELDS
DirEnt files[62];
});
extern EeFs eeFs;
#define FILE_TYP_GENERAL 1
@@ -56,7 +65,8 @@ extern EeFs eeFs;
#define FILE_MODEL(n) (1+(n))
#define FILE_TMP (1+MAX_MODELS)
#define RESV sizeof(EeFs) //reserv for eeprom header with directory (eeFs)
// Align to previous size of EeFs to keep eeprom data intact
#define RESV sizeof(EeFsOld) //reserv for eeprom header with directory (eeFs)
#define FIRSTBLK 1
#define BLOCKS (1+(EEPROM_SIZE-RESV)/BS)
@@ -201,7 +211,7 @@ inline bool isEepromStart(const void * buffer)
// OpenTX EEPROM
{
const EeFs * eeprom = (const EeFs *)buffer;
if (eeprom->version==EEFS_VERS && eeprom->mySize==sizeof(eeFs) && eeprom->bs==BS)
if (eeprom->version==EEFS_VERS && eeprom->mySize==sizeof(EeFsOld) && eeprom->bs==BS)
return true;
}