2019-12-14 12:52发布
sunnydragon 发表于 2015-9-21 18:11 1、恭喜~已经入门EasyFlash了,EasyFlash还有更多实用的功能有待你去挖掘。感谢你的FreeRTOS的移植分享。 ...
最多设置5个标签!
2、擦写平衡模式:3*EF_ERASE_MIN_SIZE(它将会有2个Flash扇区去存储环境变量,按照每个Flash扇区可被擦写10W次计算,那么当前配置至少可擦写20W次);
感觉楼主这个磨损平衡有点蛋疼,我的理解如下:
1.必须要2块以上的SECTOR
2.大概是这两个SECTOR交替写,写一次就要擦除一次二不管这个环境变量区域有多大。
3.因此可以计算出最多可保存次数 就是 SECTOR个数*10W,注意有的FLASH只能保证擦写1W次则还要降低十倍
能不能这样做呢?、
不是写一次就要擦除一次FLASH,而是跟着FLASH后面继续写
1.在整个环境变量结构体中头部 保留一个头部判断变量,start_flag=0xa5a5a5a5,有效数据判断变量为valid_flag=0XFFFFFFFF,则存入的数据格式表示如下
假设整个要存入的数据大小为size,
{
0xa5a5a5a5,//开头标记
0XFFFFFFFF,//数据有效标记
size, // 整个数据大小
xxxxxxxxxx, //其他的包头数据
。。。。。。。。。
sssssssssss,//环境变量
ssssssssss, //环境变量
sssssssssssssssssss//环境变量
。。。。。。。。。
ssssssssss//环境变量
ssssssss//环境变量
。。。。。。。。。。
0xa6a6a6a6,//末尾结束标记
}
2.当下次再次保存环境变量的时候,将上一次的valid_flag数据设置为其他数据即可,代表上一次的环境变量木有用了,然后在后面存入本次要保存的数据结构即可
3.考虑到再次上电需要读取环境变量的时候,需要查找有效的查找到最后一次保存的数据,则从第一个0xa5a5a5a5找过去找到无效存储的size,指针一段一段的跳,几下就找到最后的写入位置了,因此也很快
罗里吧嗦写了这么多,不知道说清楚没,希望能对楼主有所帮助
一周热门 更多>