6472|12

7

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

nand flash memory读写问题! [复制链接]

我在看Flash的文档的时候遇到一个问题不明白:当要往一个新的block_1写一个page数据时,假设:该block_1中有数据,那么我是不是要进行一下的操作:
1:将该block_1中的数据通过copyback备份到另外一个新的没用到的block_2中。
2:擦除该block_1。
3:将备份的新的block_2中的数据写回到该block_1。
4:最后在将该page写到block_1中。

假设我要进行如上的操作,那么按照美光的Flash文档上说的写一个page要900-2200 us,一个block有256个page,我将block_1备份到block_2,再将block_2写回block_1,那是不是将要耗费500 ms?假设不是这样操作,正确的操作方法是什么?
希望懂的问可以指点一二!谢谢!
此帖出自FPGA/CPLD论坛

最新回复

这么用可以的啦,,人家见过的啦。 使用场合,只是用在标志位的判断上面,不是面向大量频繁改写。 而且你说的,我也懂。赞同!!   详情 回复 发表于 2016-5-26 21:37
点赞 关注
 

回复
举报

6423

帖子

16

TA的资源

版主

沙发
 
不需要这样的,nand flash 写是以page为最小单位,擦除是以block为单位,只能顺序写,假如写了10页接着写第20页,那么中间的是不能够再写的。里边的东西挺多的不是一两句能够解释清楚

此帖出自FPGA/CPLD论坛
个人签名training
 
 

回复

6423

帖子

16

TA的资源

版主

板凳
 
如果想修改写过的页是要先将这一页复制出来,然后修改写到其他block,这个时候原block的页是不能够被修改的,因为flash特性必须先擦除再写
此帖出自FPGA/CPLD论坛

点评

版主:是不是修改Block1中的page1数据,步骤是不是这样:先将Block1中的page1数据复制到本block或其他block的一个空闲页,然后修改,完了是不是可以将该修改过的数据页可以复制到原来的Block1中的page1。 是这样吗  详情 回复 发表于 2016-5-25 17:17
把修改的page写到了另外的block,那flash内部是怎么知道一个block中的某一个page在另外一个block?你能不能给我讲解一下,或者给点资料文档我看看,我找了很多文档,都没有对这个情况的说明!  详情 回复 发表于 2014-5-16 09:15
个人签名training
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

4
 
本帖最后由 昨日随风 于 2014-5-16 09:16 编辑
白丁 发表于 2014-5-15 23:44
如果想修改写过的页是要先将这一页复制出来,然后修改写到其他block,这个时候原block的页是不能够被修改的 ...

把修改的page写到了另外的block,那flash内部是怎么知道一个block中的某一个page在另外一个block?你能不能给我讲解一下,或者给点资料文档我看看,我找了很多文档,都没有对这个情况的说明!希望前辈能指导一下,谢谢!
此帖出自FPGA/CPLD论坛

点评

page是你写的,所以你是知道的!这一点很重要,你要记住你把那个page写到了哪一页,这就是映射。如果想把Flash搞好是很麻烦的,一般的都不会搞这么麻烦,都用的比较简单,如果想深入了解可以看那一下FTL算法  详情 回复 发表于 2014-5-16 18:01
 
 
 

回复

6423

帖子

16

TA的资源

版主

5
 
昨日随风 发表于 2014-5-16 09:15
把修改的page写到了另外的block,那flash内部是怎么知道一个block中的某一个page在另外一个block?你能不 ...

page是你写的,所以你是知道的!这一点很重要,你要记住你把那个page写到了哪一页,这就是映射。如果想把Flash搞好是很麻烦的,一般的都不会搞这么麻烦,都用的比较简单,如果想深入了解可以看那一下FTL算法
此帖出自FPGA/CPLD论坛
个人签名training
 
 
 

回复

483

帖子

0

TA的资源

一粒金砂(中级)

6
 
白丁 发表于 2014-5-15 23:44
如果想修改写过的页是要先将这一页复制出来,然后修改写到其他block,这个时候原block的页是不能够被修改的 ...

版主:是不是修改Block1中的page1数据,步骤是不是这样:先将Block1中的page1数据复制到本block或其他block的一个空闲页,然后修改,完了是不是可以将该修改过的数据页可以复制到原来的Block1中的page1。
是这样吗?应该可以复制到本block的其他空闲页吧?
此帖出自FPGA/CPLD论坛

点评

你说的完全错了,请记住nandflash的三个特性,写page,擦block,先擦后写。这里指出你的几个错误,flash第一个page是page0不是page1,;你把page1复制到其他page上就修改不了了,是先把page读到内存,然后修改,然后  详情 回复 发表于 2016-5-25 21:01
 
 
 

回复

6423

帖子

16

TA的资源

版主

7
 
gxg1122 发表于 2016-5-25 17:17
版主:是不是修改Block1中的page1数据,步骤是不是这样:先将Block1中的page1数据复制到本block或其他blo ...

你说的完全错了,请记住nandflash的三个特性,写page,擦block,先擦后写。这里指出你的几个错误,flash第一个page是page0不是page1,;你把page1复制到其他page上就修改不了了,是先把page读到内存,然后修改,然后再写到flash;你原位置没有擦除是不能够进行再次写入的。懂了吗?
此帖出自FPGA/CPLD论坛

点评

感谢版主回答。我只是拿page1举个例子。是需要先擦再写的。 多谢版主回答。  详情 回复 发表于 2016-5-26 12:55
个人签名training
 
 
 

回复

1950

帖子

4

TA的资源

版主

8
 
本帖最后由 5525 于 2016-5-25 22:33 编辑

版主说的很清楚了。

Flash就是有规矩: 必须先擦除block, 而后才能写次block.

比如,楼主如果把 [11 22 33 44 55 .. ] 写道block里面了,
要在直接在block里面修改的话,是不行的。
正常把该block 读到内部RAM里面[11 22 33 44 55 .. ],
在RAM里面修改好后,比如改成了[11 AA BB CC 55 .. ],
再按flash得规矩,必须先擦除block, 再把[11 AA BB CC 55 .. ]写入擦除好的block里面

如果你要修改的数据很奇葩,比如 00变01, 01变03之类的话,记得能直接写

如果楼主觉得这些做法都不够酷,请看版主推荐的"FTL算法".
此帖出自FPGA/CPLD论坛

点评

即使是这样的数据也不建议再次写入。  详情 回复 发表于 2016-5-26 18:18
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

483

帖子

0

TA的资源

一粒金砂(中级)

9
 
白丁 发表于 2016-5-25 21:01
你说的完全错了,请记住nandflash的三个特性,写page,擦block,先擦后写。这里指出你的几个错误,flash ...

感谢版主回答。我只是拿page1举个例子。是需要先擦再写的。
多谢版主回答。
此帖出自FPGA/CPLD论坛
 
 
 

回复

6423

帖子

16

TA的资源

版主

10
 
5525 发表于 2016-5-25 22:32
版主说的很清楚了。

Flash就是有规矩: 必须先擦除block, 而后才能写次block.

比如,楼主如果把 [11  ...

即使是这样的数据也不建议再次写入。
此帖出自FPGA/CPLD论坛

点评

要是我自己弄得话,也不喜欢这种非常规做法。 只是有次看到,德国哥们写的商用程序里面,这样搞的  详情 回复 发表于 2016-5-26 20:22
个人签名training
 
 
 

回复

1950

帖子

4

TA的资源

版主

11
 
白丁 发表于 2016-5-26 18:18
即使是这样的数据也不建议再次写入。

要是我自己弄得话,也不喜欢这种非常规做法。

只是有次看到,德国哥们写的商用程序里面,这样搞的
此帖出自FPGA/CPLD论坛

点评

且不说这个flash能不能行,就是能行,就是ram你这样去判断数据效率就很低吧  详情 回复 发表于 2016-5-26 21:17
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

6423

帖子

16

TA的资源

版主

12
 
5525 发表于 2016-5-26 20:22
要是我自己弄得话,也不喜欢这种非常规做法。

只是有次看到,德国哥们写的商用程序里面,这样搞的{:1_ ...

且不说这个flash能不能行,就是能行,就是ram你这样去判断数据效率就很低吧
此帖出自FPGA/CPLD论坛
个人签名training
 
 
 

回复

1950

帖子

4

TA的资源

版主

13
 
这么用可以的啦,,人家见过的啦。

使用场合,只是用在标志位的判断上面,不是面向大量频繁改写。

而且你说的,我也懂。赞同!!
此帖出自FPGA/CPLD论坛
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表