0

我正在尝试在设备上存储一些数据,当数据记录器已满时我不想被覆盖。并且遇到了一些小问题。我正在寻找“eeprom_logbook_app”,但在设备库的固件版本 1.6.2 中找不到它。

我已经为我的持久数据定义了多少空间,并且在 App.cpp 中我使用了 LOGBOOK_MEMORY_AREA(offset, size) 宏。

我使用了我想要存储的大小作为偏移量并将大小设置为

(2097152 + 1048576) - (我要存储的数据大小)

因为这是我向传感器询问 eeprom 大小时返回的内容。(eeprom 分为 2 个 IC 一个 1MB 容量和一个 2MB 容量?)

然后我记得有一些关于 ExtflashChunkStorage::StorageHeader 在这个答案中被存储为前 256 个字节的讨论。

所以我的问题是数据将从哪里偏移以及我可以设置为大小的最大大小是多少,以便我可以减去正确的数量以适合我的数据?我认为我至少需要从大小中再减少 256 个字节才能获得正确的存储大小。

4

1 回答 1

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); 

这将在 EEPROM 存储器的开头留出 256 个字节,并偏移日志以适应这一点。结果,日志标题也将移动到日志内存区域的开头。

于 2019-02-04T14:03:07.023 回答