硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3030|回复: 9
收起左侧

[有问必答] W25Q64类的SPI FLASH怎么做日志记录

[复制链接]

32

主题

88

回帖

184

积分

初级会员

积分
184
发表于 2023-7-26 17:40:41 | 显示全部楼层 |阅读模式
目前有个项目要用到W25Q64做日志记录,有几个点没搞明白。


前提:
1.日志记录数据写到w25q64中要提供当前要写入的地址
2.事件日志数据是一直在增加的,说明地址要变化
3.写入数据的地址也要存在w25q64中
4.w25q64只能页擦除

问题:
写入数据的地址如何处理?比如在地址为000000H的地方放入当前要写的地址,
那每次写入新的数据都要将这个页进行擦除,,如果在某时刻突然掉电,那存入的地址就可能丢失。
有没有更好的解决方法?(上面的方式个人觉得容易出问题,单一个地址就浪费了一个页,且一直擦除的话也会出问题吧)



回复

使用道具 举报

4

主题

412

回帖

424

积分

高级会员

积分
424
发表于 2023-7-26 21:12:01 | 显示全部楼层
FlashDB了解一下
以下引用
FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。

FlashDB 提供两种数据库模式:

键值数据库 :是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。KVDB 操作简洁,可扩展性强。
时序数据库 :时间序列数据库 (Time Series Database , 简称 TSDB),它将数据按照 时间顺序存储 。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。
回复

使用道具 举报

32

主题

88

回帖

184

积分

初级会员

积分
184
 楼主| 发表于 2023-7-26 21:25:10 | 显示全部楼层
cctv180 发表于 2023-7-26 21:12
FlashDB了解一下
以下引用
FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案 ...

可以用在单片机上?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117548
QQ
发表于 2023-7-27 07:09:46 | 显示全部楼层
简单省事些可以以扇区为单位的数组方式管理,掉电问题可以额外开备份空间,每次写先把现有的弄到备份空间,然后再更新,这样可以保证要给损坏了还有新的
回复

使用道具 举报

32

主题

88

回帖

184

积分

初级会员

积分
184
 楼主| 发表于 2023-7-27 08:05:35 | 显示全部楼层
eric2013 发表于 2023-7-27 07:09
简单省事些可以以扇区为单位的数组方式管理,掉电问题可以额外开备份空间,每次写先把现有的弄到备份空间, ...

可以说得详细一些吗?1个sector做为数据记录?意思是一个sector只记录一条的意思吗?这个里面涉及到两个问题有点没明白。,一个是数据写入地址的保存,二是数据写入地址的修改。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117548
QQ
发表于 2023-7-28 09:21:57 | 显示全部楼层
Y1ng 发表于 2023-7-27 08:05
可以说得详细一些吗?1个sector做为数据记录?意思是一个sector只记录一条的意思吗?这个里面涉及到两个 ...

我这种方式实际是两个扇区为一个单元,一个作为备份,一个作为写入。这样的话,就不怕掉电了。

只是要额外占用一半的存储空间。
回复

使用道具 举报

32

主题

88

回帖

184

积分

初级会员

积分
184
 楼主| 发表于 2023-7-28 11:35:33 | 显示全部楼层
eric2013 发表于 2023-7-28 09:21
我这种方式实际是两个扇区为一个单元,一个作为备份,一个作为写入。这样的话,就不怕掉电了。

只是要 ...

有点不是很明白耶。我的意思是数据总量是增加的,每次要写的话还要记录下一次要写的位置,那位置信息也是存在SPI FLASH中,那不是会频繁改写嘛,那寿命不就下来了?
回复

使用道具 举报

17

主题

233

回帖

284

积分

高级会员

积分
284
发表于 2024-7-3 17:33:18 | 显示全部楼层
eric2013 发表于 2023-7-28 09:21
我这种方式实际是两个扇区为一个单元,一个作为备份,一个作为写入。这样的话,就不怕掉电了。

只是要 ...

老实人的设计方法,特点皮实耐用,不怕丢数据。缺点,浪费一半空间。
空间换安全。
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2024-7-7 11:17:57 来自手机 | 显示全部楼层
要么上文件系统。数据简单的话自己管理。对于你说的几个问题。1-此类flash的物理结构决定了就是要sector擦出没有好办法。2-你可以一个扇区做索引,其他扇区存储。3-看你数据结构大小,想减少擦写次数,可以合理划分存储结构,采用一个扇区多页循环使用,或多个扇区循环使用。
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2024-7-7 11:19:19 来自手机 | 显示全部楼层
好比,你一个数据最大不到1页,一个扇区就能擦写一次可以供你修改16次。类似这种!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 09:01 , Processed in 0.044681 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表