Совместное использование Datalogger и EepromService
Я пытаюсь сохранить на устройстве некоторые данные, которые я не хочу перезаписывать, когда регистратор данных заполнен. И столкнулись с некоторыми незначительными проблемами. Я искал "eeprom_logbook_app", но не смог найти его в прошивке версии 1.6.2 устройства-lib.
Я определил, сколько места мне нужно для моих постоянных данных, и в App.cpp я использовал макрос LOGBOOK_MEMORY_AREA(offset, size).
где я использовал размер того, что я хочу сохранить в качестве смещения и установить размер, чтобы быть
(2097152 + 1048576) - (размер данных, которые я хочу сохранить)
поскольку это было то, что было возвращено, когда я спросил датчик для размера eeprom. (Eeprom разделен между 2 микросхемами, одна с емкостью 1 МБ и одна с емкостью 2 МБ?)
Затем я вспомнил, что в этом ответе говорилось о том, что ExtflashChunkStorage::StorageHeader хранится как первые 256 байтов.
Поэтому у меня вопрос, откуда будут смещены данные и какой максимальный размер я могу установить в качестве размера, чтобы я мог вычесть правильную сумму, соответствующую моим данным? Я предполагаю, что по крайней мере мне нужно вынуть еще 256 байтов из размера, чтобы получить правильный размер хранилища.
0 ответов
Как указано в моем комментарии, я получил эту работу, единственное, что вам нужно сделать, это использовать функцию LOGBOOK_MEMORY_AREA(offset, size). допустим, вы хотите выделить 256 бит для своей конфигурации, тогда вы можете сделать это:
#define RESERVED_CONFIG 256
#define TOTAL_MEMMORY_SIZE (2097152 + 1048576)
static const uint32_t offset = RESERVED_CONFIG;
static const uint32_t size = TOTAL_MEMMORY_SIZE -offset;
LOGBOK_MEMORY_AREA(offset, size);
Это позволит выделить 256 байтов в начале памяти EEPROM и сместить журнал, чтобы приспособиться к этому. В результате заголовок журнала также будет перемещен в начало области памяти журнала.