免费注册 查看新帖 |

Chinaunix

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

NAND FLASH的ECC问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-30 17:21 |只看该作者 |倒序浏览
已经把nand_ecc.c yaffs_ecc.c wince ecc.c看完了.
在nand_ecc.c跟yaffs_ecc.c 中,都是以512b中分为2部256b校验一次,并且他们的ECC_TABEL也是一样的,1BIT的矫正代码中,错误情况判断相同,处理也是相同的,这样可以不可以说:他们关于ECC的1BIT矫正这块算法就是一样的?
它们的行校验只有16位,而且在512b里有6b的ECC校验

S3C2410A手册中:NAND 控制器里
512-BYTE ECC PARITY CODE ASSIGNMENT TABLE

ECC0 P64 P64’ P32 P32’ P16 P16’ P8 P8’
ECC1 P1024 P1024’ P512 P512’ P256 P256’ P128 P128’
ECC2 P4 P4’ P2 P2’ P1 P1’ P2048 P2048

这里可以看出,行校验是18位的,而且是512b校验一次3b的ECC.

而在实际应用当中,S3C2410A上nand_ecc是可以使用的.
那么,它们是如何统一起来的呢?nand_ecc yaffs_ecc它们计算ECC与S3C2410A的硬件ECC并不一致啊.存在oob里的ECC字节数也不一样.

WINCE里的校验用的就是纯硬件ECC也是512b校验一次,不存在问题.

知识有限~请各位懂的牛人指导一下吧~ 因为nand_ecc或yaffs_ecc虽然可以用,但是在标记坏块儿时,有时并不准确.比如linux有坏块儿的flash 在WINCE底下格完就没了.而本身标记出来的坏块儿如果不是第1块或第2块应该不影响烧写nand的,但是现在在文件系统的位置有一个坏块儿,直接导致无法烧写了.这是由于nand_ecc与S3C2410A ECC有差异造成的吗?

[ 本帖最后由 jn200002 于 2008-6-30 17:29 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-07-01 09:29 |只看该作者
nand flash棘手的问题阿
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP