硬汉嵌入式论坛

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

[RL-FlashFS] 写文件的效率和flash寿命问题。

[复制链接]

3

主题

8

回帖

17

积分

新手上路

积分
17
发表于 2022-11-7 16:50:00 | 显示全部楼层 |阅读模式
最近交接了别人的一个项目,用nand flash做的存储器,我看他在向文件写入1000组数据时,用for循环的方式,每次写入一组(一组8个字节)。但是不是应该用for循环的方式把要写入的内容拼接好,然后一次性写入更合适么?这样分次写入效率低就算了,会不会导致更多的擦除操作,降低flash的寿命。我不太了解文件系统的底层,希望有大佬解答一下。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2022-11-7 16:59:01 | 显示全部楼层
这个要看NAND擦写均衡效率了,加入管理的话,好很多。

这种写法,慢是肯定的。没有整块操作快。
回复

使用道具 举报

3

主题

8

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-11-7 17:09:18 | 显示全部楼层
谢谢大佬的解答,实在不想老改别人的代码。改完出了问题,解释不清。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2022-11-8 09:50:33 | 显示全部楼层
mountfushan 发表于 2022-11-7 17:09
谢谢大佬的解答,实在不想老改别人的代码。改完出了问题,解释不清。

嗯,这种玩法也行,影响不大。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2022-11-8 09:57:11 | 显示全部楼层
可能是为了节省ram吧。如果一次性写入,需要准备很多kb的缓存。 其实,flash主要是擦除费芯片,写入的影响还好。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2022-11-11 10:36:29 | 显示全部楼层
贴一下flash的擦写规则,网上搜索的。
常用FLASH擦写规则
最小擦除单位:扇区
可选择擦除单位:扇区、块、全片
最大编程(写入)单位:页( 256 Byte),大于256 Byte则需要循环写入。
Flash 写入数据时和 EEPROM 类似,不能跨页写入,一次最多写入一页,W25Q128的一页是 256 字节。写入数据一旦跨页,必须在写满上一页的时候,等待 Flash 将数据从缓存搬移到非易失区,重新再次往里写。
最小编程(写入)单位:1 Byte,即一次可写入 1~256 Byte的任意长度字节。
未写入时FLASH里面的数据为全1,即0xFF。
只能由 1 —> 0 写入,不能由 0 —> 1 写入,即如果已经写入过了,则需要先擦除(擦除后数据变为全1)再写入。
示例:0xF0(1111 0000),即高4位可写入,低4位不可写入。
————————————————
版权声明:本文为CSDN博主「ParryHuc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33155449/article/details/121199397
回复

使用道具 举报

3

主题

8

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-11-15 16:19:36 | 显示全部楼层
主要是担心频繁的写入少量数据,耗时长是次要的,影响flash寿命才是最关键的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 08:49 , Processed in 0.444547 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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