coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
阅读:2444回复:10

Nand Flash方面的问题,大家帮帮忙~~~

楼主#
更多 发布于:2005-03-17 09:08
查过了论坛内的帖子,关于Flash坏块的问题,有部分网友也问起过来,但没有哪位老大给出过很完整的解答。在此再请教关于Nand Flash坏块处理方面的问题,希望高手不吝赐教。

以512bytes(+16bytes)/page为例。
第517byte为Invalid Block的标志,若为0xff则说明是一个坏的block。
Samsung在datasheet中建议我们建立坏块表,如果检测到517byte为0xff的page,则标记它所在的block为坏块。
请问:
    这个第517个byte是由谁来修改的?由firmware来做的吗?在每次读写操作之前做一次检查?能不能把这个过程详细的说一下?有些帖子里说在写之前写入ECC,读出来后检查ECC,可我不是很明白,请高手指教。

USB开发交流
yuhang85
驱动牛犊
驱动牛犊
  • 注册日期2010-01-21
  • 最后登录2010-05-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-04-28 20:11
回 1楼(p_y_h) 的帖子
您好,您的QQ是多少呵呵可以交流下吗 非常感谢诶  。我我的QQ 442133447
Come on!
coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-17 17:37
流汗中……
USB开发交流
coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-17 12:41
[quote
p_y_h,还要请教一下。
你所说的“如果有ECC,则在读的时候,也会获得块的好坏“这句话能不能具体讲一下呢?ECC是具体怎么来用的,怎么操作的?
是不是在写入的时候根据写入的512bytes数据计算出一个ECC的值写入C区某个位置(这个位置是哪个位置呢),然后在读出的时候把数据读出来,根据512bytes计算出ECC的值再跟这个值进行比较,如果两个值不同就说明有错误,然后把这个page所在的block标记为坏的
是不是这样呢?
你说的那个flipping bit是怎么回事呢?在data sheet中我没有看到它,呵呵。 [/quote]

p_y_h,先帮忙把我的问题解答一下好吗?我在看application notes,可是可能要些时间,而且也抓不住重点。我现在大体上有这个思路,但不知道通常情况下大家都是怎么处理的。
USB开发交流
p_y_h
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-17 12:14
你到samsung网站看application notes,上面讲的很具体。
coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-17 11:23
没有高手指教一下了吗?
USB开发交流
coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-17 11:20
是的,每次写或察除后会读状态,判断有没有写或察除成功,如果不成功则表记坏块,如果有ECC,则在读的时候,也会获得块的好坏(NAND FLASH 有FLIPPING BIT)。工业格式化的程序就是删除后读状态然后建立坏块表等。


p_y_h,还要请教一下。
你所说的“如果有ECC,则在读的时候,也会获得块的好坏“这句话能不能具体讲一下呢?ECC是具体怎么来用的,怎么操作的?
是不是在写入的时候根据写入的512bytes数据计算出一个ECC的值写入C区某个位置(这个位置是哪个位置呢),然后在读出的时候把数据读出来,根据512bytes计算出ECC的值再跟这个值进行比较,如果两个值不同就说明有错误,然后把这个page所在的block标记为坏的
是不是这样呢?
你说的那个flipping bit是怎么回事呢?在data sheet中我没有看到它,呵呵。
USB开发交流
p_y_h
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-17 11:05
是的,每次写或察除后会读状态,判断有没有写或察除成功,如果不成功则表记坏块,如果有ECC,则在读的时候,也会获得块的好坏(NAND FLASH 有FLIPPING BIT)。工业格式化的程序就是删除后读状态然后建立坏块表等。
coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-17 11:04
没人理了。。。

自己顶一下~
USB开发交流
coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-03-17 10:10
很感激p_y_h的回复。

按照你的说法,出厂时检测过后建立了坏块表,那么在出厂之后的坏块是怎么来标记的?
是不是在每次执行写操作擦除操作和读操作后用read status来检测
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一下是否有error发生,如果有error则表明这个page是坏的,然后在
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
坏块表里把这个page所在的block标记为坏块,是不是这样的呢?
因此现在市面上的U盘的坏块管理操作是在每次的读写和擦除后read status一次看是否有错误发生,是不是这样的一个过程呢?
在每次格式化(U盘生产厂商提供的格式化程序)的时候是不是也要进行一次坏块的检测?
USB开发交流
p_y_h
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-03-17 09:39
把samsung的data sheet多读几遍就知道了。

检测第517字节是否0XFF是FLASH出厂时的要求,如果FLASH出厂某一个块坏了,这个块的第一或第二个PAGE就不是0XFF。一般FIRMWARE对刚出厂的FLASH进行一次全面的坏块检测,建立坏块表,在这个表中记录所有坏块的位置,在写和察除时不去访问这些坏块,并根据写和察除后的状态获得块的状态,动态更新坏块表。

在第一次进行全面检测后,对坏块的检测就不要检查第517字节了,那时这个块可能已经被察除,或这个PAGE的SPARE AREA已经被写入其他数据了,对坏块的管理完全依赖第一次建立的坏块表了。
游客

返回顶部