У меня проблема с хранением данных в EEPROM на 16-битном микроконтроллере Fujitsu.
Запись байтов в EEPROM не проблема, я могу записывать и считывать данные без проблем.
Мы используем перечисление dword
s для хранения различных переменных в EEPROM, и все они имеют длину 4 байта. Для каждой переменной мы хотим сохранить до 4 байтов пространства. Это не очень хорошо, потому что, когда я хочу сохранить только флаг (один бит) или переменную, длина которой составляет всего один байт, он по-прежнему использует четыре байта.
Причина, по которой мы используем эту четырехбайтовую технику, заключается в том, что мы знаем, по какому адресу хранится переменная, к которой я хочу получить доступ. Это работает хорошо, но у него есть некоторые недостатки.
Один - это потраченное впустую пространство, а другой - проблема, которая возникает, когда я работаю со структурами.
Например, у меня есть структура, подобная
typedef struct {
attenuator_whichone_t attenuator;
char* attenuatorname;
servo_whichone_t associated_servo;
ad_ad7683_whichone_t associated_adconverter;
word item_control;
word item_mode;
word item_position;
} attenuator_info_t;
и инициализировать его следующим образом:
static attenuator_info_t constinfo[_NUM_ATTENUATOR_WHICHONE_] = {...}
С кодом, который мы используем сейчас, нам нужно было бы сохранять каждое значение отдельно.
Следовательно, разрушая структуру. Я бы очень хотел сохранить эту структуру как есть. (и еще пара у нас в коде).
Из моего понимания мне понадобится файловая система для этого. Поиск Google дал мне несколько примеров, таких как microFAT и так далее. Это, на мой взгляд, излишество.
Сохранение структуры с помощью sizeof и повторение всех байтов было бы просто замечательно, но тогда, как мне решить проблему знания, где находятся структуры в EEPROM?
Так что, возможно, нужна какая-то файловая система. Разве нет ничего меньшего? Или какая-то хитрость? В любом случае переменные имеют фиксированную длину. Вот почему мне было интересно, есть ли какой-нибудь хороший и простой способ сохранить эти структуры.
Надеюсь, я смогу уточнить мою проблему.