我正在尝试开发一种警报历史结构以存储在非易失性闪存中。闪存的写入周期数有限,因此我需要一种方法来将记录添加到结构中,而无需每次都重写结构中的所有闪存页面或写出指向队列头/尾的更新指针。
此外,一旦使用了可用的闪存空间,我想开始覆盖以前存储在闪存中的记录,从添加的第一条记录开始,先进先出。这让我认为循环缓冲区最适合添加项目。但是,在查看记录时,我希望结构像堆栈一样工作。例如,记录将按时间倒序显示,后进先出。
除非将它们存储在记录本身中,否则无法存储结构大小、头、尾、索引,因为如果每次将它们写出到固定位置,它将超过存储它们的页面上的最大写入周期。
那么我应该使用堆栈、队列还是某种混合结构?我应该如何将头部,尾部,大小信息存储在闪存中,以便在上电后可以重新初始化?