免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5148 | 回复: 4
打印 上一主题 下一主题

[驱动] nandflash坏块标记? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-26 15:33 |只看该作者 |倒序浏览
三星的K9F2G08,在测试nand时,按照datasheet上说的页内地址写成2048(第一页),看NFDATA的值是不是0xff就可以知道此块是不是坏块,
可是写程序验证时检查结果,没有坏块,当用u-boot的nand bad检查时有两个坏块,这事这么回事呢?难道坏块标记不是第一页的spare area 的第一个字节?对于2G08的 spare area 区域的结构是什么样的(见有的资料上说是64B分成4份,每一份对应512B)?
  1. static u_size8 is_bad_block(u_size32 addr)
  2. {
  3.       u_size32 i;
  4.       u_size8 tmp;
  5.       EN_NANDFLASH;
  6.       WCMD(READ1);
  7.         rNFADDR = 2048 & 0xff;
  8.         rNFADDR = (2048 >> 8) & 0xf;
  9.         rNFADDR = (addr >> 12) & 0xff;
  10.         rNFADDR = (addr >> 20) & 0xff;
  11.         rNFADDR = (addr >> 28) & 0x1;
  12.       WCMD(READ2);
  13.       delay(10);
  14.       noBUSY;
  15.       tmp = rNFDATA;
  16.         if(tmp != 0xff){
  17.           DIS_NANDFLASH;      
  18.           return 1;
  19.     }
  20.       DIS_NANDFLASH;      
  21.       return 0;
  22. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-05-26 17:57 |只看该作者
自己顶一下!

论坛徽章:
0
3 [报告]
发表于 2010-05-26 18:50 |只看该作者
坏块的分类
  总体上,坏块可以分为两大类
  (1) 固有坏块
    这是生产过程中产生的坏块,一般芯片原厂都会在出厂时都会将坏块第一个page的spare area的第6个byte标记为不等于0xff的值。
  (2) 使用坏块
    这是在NAND Flash使用过程中,如果Block Erase或者Page Program错误,就可以简单地将这个块作为坏块来处理,这个时候需要把坏块标记起来。为了和固有坏块信息保持一致,将新发现的坏块的第一个page的spare area的第6个Byte标记为非0xff的值。

论坛徽章:
0
4 [报告]
发表于 2010-05-26 20:01 |只看该作者
已经解决,是地址弄错了!呵呵!

论坛徽章:
0
5 [报告]
发表于 2010-10-30 23:34 |只看该作者
已经解决,是地址弄错了!呵呵!
yang23 发表于 2010-05-26 20:01



   请问能否贴出您的 判断坏块的代码吗?
我想参考下,
我怎么总是判断为坏块啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP