flash 、NV等非易失外存中循环覆盖存取模式下如何获取实际存储编号

实际上是个数学归纳问题
例如:有顺序编号的5个水池,编号从1到5,水池总数为SUM = 5;
如果最后一次使用的水池编号为a,现在提问:第b次使用的水池的编号,这里的a为存储编号,b为读取编号。
u32 GetSaveNum(u32 ReadNum, u32 LastUsedNum)
{
if (LastUsedNum >= ReadNum)
{
return (LastUsedNum - ReadNum + 1);
}
else
{
return (SUM - ReadNum + LastUsedNum + 1);
}
}

使用场景:
多项数据连续存储在flash中,程序不定期以循环覆盖的方式存储,并记忆当前存储位置编号,客户需要不定期“倒叙”查询这些记录(0,代表读取倒数第0个项目,1代表读取倒数第1个项目。。。),显然存储的编号,客户是不知道的,他只提供 “读取”编号。该文给出从 读取编号 到 实际存储编号 以调取记录数据的一种解决方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值