免费注册 查看新帖 |

Chinaunix

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

[驱动] 关于Nand Flash 坏块问题!!!!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-04 17:22 |只看该作者 |倒序浏览
最近碰到一个问题,纠结了很久了。买来个4G的nand flash(H27UBG8T2ATR), 但是在linux驱动程序中被用作2G。但是后来又改回4G,在2G nand flash 驱动的的内核升级到4G nand flash 驱动的内核过程中,就会出现如下的LOG。这样这个nand flash就有很多坏块了,甚至升级不成功或死掉。我相信是程序导致的。如果在升级到4G nand flash 驱动的内核前,将nand flash全部擦除一下,且保留坏块表,升级就成功,不会出现如下的LOG了。
目前我的办法是在阅读代码,现在是很纠结。没有实际前进方向,但是有如下一些疑问:
第一: 最后4个block是被谁改掉的?因为被用做2G的时候,坏块是在1021~1024。被用做4G的时候坏块表在2044~2048。每2bits代表一个block的好坏。升级的时候扫描这个坏块表,才出现如下的坏块信息。我就奇怪了,后面的都没有用,这个坏块表是谁写的???????
第二:为什么在升级前nand erase all一下,就不会出现下面的坏块?????

希望各位大侠指教一下。谢谢!


NAND device: Manufacturer ID: 0xad, Chip ID: 0xd7949a (Hynix H27UBG8T2ATR)
p[0] = 0x42, td->pattern[0] = 0x42
p[1] = 0x62, td->pattern[1] = 0x62
p[2] = 0x74, td->pattern[2] = 0x74
p[3] = 0x30, td->pattern[3] = 0x30
check_pattern return.
find bbt page is 523776
Bad block table found at page 523776, version 0x01
p[0] = 0x42, td->pattern[0] = 0x31
p[0] = 0x31, td->pattern[0] = 0x31
p[1] = 0x74, td->pattern[1] = 0x74
p[2] = 0x62, td->pattern[2] = 0x62
p[3] = 0x42, td->pattern[3] = 0x42
check_pattern return.
find bbt page is 523520
Bad block table found at page 523520, version 0x01
#######read_bbt: page: 523776, num: 2047, bits: 2, offs: 0, reserved_block_code: 0
nand_read_bbt: Bad block at 0x000000000000
Bad block at 0
nand_read_bbt: Bad block at 0x000000200000
Bad block at 1
nand_read_bbt: Bad block at 0x000002600000
Bad block at 19
nand_read_bbt: Bad block at 0x000002800000
Bad block at 20
nand_read_bbt: Bad block at 0x000002e00000
Bad block at 23
nand_read_bbt: Bad block at 0x000003000000
Bad block at 24
nand_read_bbt: Bad block at 0x000003400000
Bad block at 26
nand_read_bbt: Bad block at 0x000003600000
Bad block at 27
nand_read_bbt: Bad block at 0x000003800000
Bad block at 28
nand_read_bbt: Bad block at 0x000004000000
Bad block at 32
nand_read_bbt: Bad block at 0x000004200000
Bad block at 33
nand_read_bbt: Bad block at 0x000004400000
Bad block at 34
nand_read_bbt: Bad block at 0x000004600000
Bad block at 35
nand_read_bbt: Bad block at 0x000004800000
Bad block at 36
nand_read_bbt: Bad block at 0x000004a00000
Bad block at 37
nand_read_bbt: Bad block at 0x000004c00000
Bad block at 38
nand_read_bbt: Bad block at 0x000004e00000
Bad block at 39
nand_read_bbt: Bad block at 0x000005000000
Bad block at 40
nand_read_bbt: Bad block at 0x000005200000
Bad block at 41
nand_read_bbt: Bad block at 0x000005400000
Bad block at 42
nand_read_bbt: Bad block at 0x000005600000
Bad block at 43
nand_read_bbt: Bad block at 0x000005800000
Bad block at 44
nand_read_bbt: Bad block at 0x000005a00000
Bad block at 45
nand_read_bbt: Bad block at 0x000005c00000
Bad block at 46
nand_read_bbt: Bad block at 0x000005e00000
Bad block at 47
nand_read_bbt: Bad block at 0x000006000000
Bad block at 48
nand_read_bbt: Bad block at 0x000006200000
Bad block at 49
nand_read_bbt: Bad block at 0x000006400000
Bad block at 50
nand_read_bbt: Bad block at 0x000006600000
Bad block at 51
nand_read_bbt: Bad block at 0x000006800000
Bad block at 52
nand_read_bbt: Bad block at 0x000006a00000
Bad block at 53
nand_read_bbt: Bad block at 0x000006c00000
Bad block at 54
nand_read_bbt: Bad block at 0x000006e00000
Bad block at 55
nand_read_bbt: Bad block at 0x000007000000
Bad block at 56
nand_read_bbt: Bad block at 0x000007200000
Bad block at 57
nand_read_bbt: Bad block at 0x000007400000
Bad block at 58
nand_read_bbt: Bad block at 0x000007600000
Bad block at 59
nand_read_bbt: Bad block at 0x000007800000
Bad block at 60
nand_read_bbt: Bad block at 0x000007a00000
Bad block at 61
nand_read_bbt: Bad block at 0x000008000000
Bad block at 64
nand_read_bbt: Bad block at 0x000008200000
Bad block at 65
nand_read_bbt: Bad block at 0x000008c00000
Bad block at 70
nand_read_bbt: Bad block at 0x000008e00000
Bad block at 71
nand_read_bbt: Bad block at 0x000009000000
Bad block at 72
nand_read_bbt: Bad block at 0x000009200000
Bad block at 73
nand_read_bbt: Bad block at 0x000009400000
Bad block at 74
nand_read_bbt: Bad block at 0x000009600000
Bad block at 75
nand_read_bbt: Bad block at 0x000009800000
Bad block at 76
nand_read_bbt: Bad block at 0x000009a00000
Bad block at 77
nand_read_bbt: Bad block at 0x000009c00000
Bad block at 78
nand_read_bbt: Bad block at 0x000009e00000
Bad block at 79
nand_read_bbt: Bad block at 0x00000a000000
Bad block at 80
nand_read_bbt: Bad block at 0x00000a200000
Bad block at 81
nand_read_bbt: Bad block at 0x00000a400000
Bad block at 82
nand_read_bbt: Bad block at 0x00000a600000
Bad block at 83
nand_read_bbt: Bad block at 0x00000a800000
Bad block at 84
nand_read_bbt: Bad block at 0x00000aa00000
Bad block at 85
nand_read_bbt: Bad block at 0x00000ac00000
Bad block at 86
nand_read_bbt: Bad block at 0x00000ae00000
Bad block at 87
nand_read_bbt: Bad block at 0x00000b000000
Bad block at 88
nand_read_bbt: Bad block at 0x00000b2bind to g_file_storage --> -19
is WonderMedia Technology
0mod_data.file[i]=/dev/block/loop0 c9c75fc0
mod_data1.file1[i]=/dev/block/loop0 c9c75f80
mod_data2.file2[i]=/dev/block/loop0 c9c75fc0
0mod_data.file[i]=/dev/block/mmcblk0 c9c75fa0
mod_data1.file1[i]=/dev/block/mmcblk1 c9c75f60
mod_data2.file2[i]=/dev/block/mmcblk0 c9c75fa0
000
Bad block at 89
nand_read_bbt: Bad block at 0x00000b400000
Bad block at 90
nand_read_bbt: Bad block at 0x00000b600000
Bad block at 91
nand_read_bbt: Bad block at 0x00000b800000
Bad block at 92
nand_read_bbt: Bad block at 0x00000ba00000
Bad block at 93
nand_read_bbt: Bad block at 0x00000bc00000
Bad block at 94
nand_read_bbt: Bad block at 0x00000be00000
Bad block at 95
nand_read_bbt: Bad block at 0x00000c000000
Bad block at 96
nand_read_bbt: Bad block at 0x00000c200000
Bad block at 97
nand_read_bbt: Bad block at 0x00000c400000
Bad block at 98
nand_read_bbt: Bad block at 0x00000c600000
Bad block at 99
nand_read_bbt: Bad block at 0x00000c800000
Bad block at 100
nand_read_bbt: Bad block at 0x00000cc00000
Bad block at 102
nand_read_bbt: Bad block at 0x00000ce00000
Bad block at 103
nand_read_bbt: Bad block at 0x00000d000000
Bad block at 104
nand_read_bbt: Bad block at 0x00000d200000
Bad block at 105
nand_read_bbt: Bad block at 0x00000d400000
Bad block at 106
nand_read_bbt: Bad block at 0x00000d600000
Bad block at 107
nand_read_bbt: Bad block at 0x00000da00000
Bad block at 109
nand_read_bbt: Bad block at 0x00g_file_storage gadget: File-backed Storage Gadget, version: 20 October 2004
g_file_storage gadget: Number of LUNs=2
udc: gri pullup_enable()
000dc00000
Bad block at 110
nand_read_bbt: Bad block at 0x00000e400000
Bad block at 114
nand_read_bbt: Bad block at 0x00000e600000
Bad block at 115
nand_read_bbt: Bad block at 0x00000e800000
Bad block at 116
nand_read_bbt: Bad block at 0x00000ea00000
Bad block at 117
nand_read_bbt: Bad block at 0x00000ec00000
Bad block at 118
nand_read_bbt: Bad block at 0x00000ee00000
Bad block at 119
nand_read_bbt: Bad block at 0x00000f000000
Bad block at 120
nand_read_bbt: Bad block at 0x00000f200000
Bad block at 121
nand_read_bbt: Bad block at 0x00000f400000
Bad block at 122
nand_read_bbt: Bad block at 0x00000f600000
Bad block at 123
nand_read_bbt: Bad block at 0x00000f800000
Bad block at 124
nand_read_bbt: Bad block at 0x00000fa00000
Bad block at 125
nand_read_bbt: Bad block at 0x00000fc00000
Bad block at 126
nand_read_bbt: Bad block at 0x00000fe00000
Bad block at 127
nand_read_bbt: Bad block at 0x000010000000
Bad block at 128
nand_read_bbt: Bad block at 0x000010200000
Bad block at 129
nand_read_bbt: Bad block at 0x000010400000
Bad block at 130
nand_read_bbt: Bad block at 0x000010600000
Bad block at 131
nand_read_bbt: Bad block at 0x000010800000
Bad block at 132
nand_read_bbt: Bad block at 0x000010a00000
Bad block at 133
nand_read_bbt: Bad block at 0x000010c00000
Bad block at 134
nand_read_bbt: Bad block at 0x000010e00000
Bad block at 135
nand_read_bbt: Bad block at 0x000011000000
Bad block at 136
nand_read_bbt: Bad block at 0x000011200000
Bad block at 137
nand_read_bbt: Bad block at 0x000011400000
Bad block at 138
nand_read_bbt: Bad block at 0x000011600000
Bad block at 139
nand_read_bbt: Bad block at 0x000011800000
Bad block at 140
nand_read_bbt: Bad block at 0x000011a00000
Bad block at 141
nand_read_bbt: Bad block at 0x000011c00000
Bad block at 142
nand_read_bbt: Bad block at 0x000011e00000
Bad block at 143
nand_read_bbt: Bad block at 0x000012000000
Bad block at 144
nand_read_bbt: Bad block at 0x000012200000
Bad block at 145
nand_read_bbt: Bad block at 0x000012400000
Bad block at 146
nand_read_bbt: Bad block at 0x000012600000
Bad block at 147
nand_read_bbt: Bad block at 0x000012800000
Bad block at 148
nand_read_bbt: Bad block at 0x000012a00000
Bad block at 149
nand_read_bbt: Bad block at 0x000012c00000
Bad block at 150
nand_read_bbt: Bad block at 0x000013000000
Bad block at 152
nand_read_bbt: Bad block at 0x000023400000
Bad block at 282
nand_read_bbt: Bad block at 0x000023800000
Bad block at 284
nand_read_bbt: Bad block at 0x000023c00000
Bad block at 286
nand_read_bbt: Bad block at 0x000023e00000
Bad block at 287
nand_read_bbt: Bad block at 0x000024000000
Bad block at 288
nand_read_bbt: Bad block at 0x000024400000
Bad block at 290
nand_read_bbt: Bad block at 0x000024600000
Bad block at 291
nand_read_bbt: Bad block at 0x000025000000
Bad block at 296
nand_read_bbt: Bad block at 0x000025200000
Bad block at 297
nand_read_bbt: Bad block at 0x000025400000
Bad block at 298
nand_read_bbt: Bad block at 0x000025600000
Bad block at 299
nand_read_bbt: Bad block at 0x000025a00000
Bad block at 301
nand_read_bbt: Bad block at 0x000025c00000
Bad block at 302
nand_read_bbt: Bad block at 0x000025e00000
Bad block at 303
nand_read_bbt: Bad block at 0x000026000000
Bad block at 304
nand_read_bbt: Bad block at 0x000026200000
Bad block at 305
nand_read_bbt: Bad block at 0x000026400000
Bad block at 306
nand_read_bbt: Bad block at 0x000026600000
Bad block at 307
nand_read_bbt: Bad block at 0x000026800000
Bad block at 308
nand_read_bbt: Bad block at 0x000026c00000
Bad block at 310
nand_read_bbt: Bad block at 0x000026e00000
Bad block at 311
nand_read_bbt: Bad block at 0x000027000000
Bad block at 312
nand_read_bbt: Bad block at 0x000027200000
Bad block at 313
nand_read_bbt: Bad block at 0x000027400000
Bad block at 314
nand_read_bbt: Bad block at 0x000027600000
Bad block at 315
nand_read_bbt: Bad block at 0x000027800000
Bad block at 316
nand_read_bbt: Bad block at 0x000027a00000
Bad block at 317
nand_read_bbt: Bad block at 0x000027c00000
Bad block at 318
nand_read_bbt: Bad block at 0x000027e00000
Bad block at 319
nand_read_bbt: Bad block at 0x000028000000
Bad block at 320
nand_read_bbt: Bad block at 0x000028200000
Bad block at 321
nand_read_bbt: Bad block at 0x000028400000
Bad block at 322
nand_read_bbt: Bad block at 0x000028600000
Bad block at 323
nand_read_bbt: Bad block at 0x000028800000
Bad block at 324
nand_read_bbt: Bad block at 0x000028a00000
Bad block at 325
nand_read_bbt: Bad block at 0x000028c00000
Bad block at 326
nand_read_bbt: Bad block at 0x000028e00000
Bad block at 327
nand_read_bbt: Bad block at 0x000029000000
Bad block at 328
nand_read_bbt: Bad block at 0x000043e00000
Bad block at 543
nand_read_bbt: Bad block at 0x00004be00000
Bad block at 607
。。。。。
mount_thread
yaffs: dev is 32505867 name is "mtdblock11"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.11, "mtdblock11"
block 1 is bad
block 2 is bad
block 3 is bad
block 7 is bad
block 8 is bad
block 9 is bad
block 10 is bad
block 11 is bad
block 12 is bad
block 13 is bad
block 14 is bad
block 15 is bad
block 16 is bad
block 17 is bad
block 18 is bad
block 19 is bad
block 20 is bad
block 21 is bad
block 22 is bad
block 23 is bad
block 24 is bad
block 25 is bad
block 26 is bad
block 27 is bad
block 28 is bad
block 29 is bad
block 30 is bad
block 31 is bad
block 32 is bad
block 33 is bad
block 34 is bad
block 35 is bad
block 36 is bad
block 39 is bad
block 40 is bad
block 45 is bad
block 46 is bad
block 47 is bad
block 48 is bad
block 49 is bad
block 50 is bad
block 51 is bad
block 52 is bad
block 53 is bad
block 54 is bad
block 55 is bad
block 56 is bad
block 57 is bad
block 58 is bad
block 59 is bad
block 60 is bad
block 61 is bad
block 62 is bad
block 63 is bad
block 64 is bad
block 65 is bad
block 66 is bad
block 67 is bad
block 68 is bad
block 69 is bad
block 70 is bad
block 71 is bad
block 72 is bad
block 73 is bad
block 74 is bad
block 75 is bad
block 77 is bad
block 78 is bad
block 79 is bad
block 80 is bad
block 81 is bad
block 82 is bad
block 84 is bad
block 85 is bad
block 89 is bad
block 90 is bad
block 91 is bad
block 92 is bad
block 93 is bad
block 94 is bad
block 95 is bad
block 96 is bad
block 97 is bad
block 98 is bad
block 99 is bad
block 100 is bad
block 101 is bad
block 102 is bad
block 103 is bad
block 104 is bad
block 105 is bad
block 106 is bad
block 107 is bad
block 108 is bad
block 109 is bad
block 110 is bad
block 111 is bad
block 112 is bad
block 113 is bad
block 114 is bad
block 115 is bad
block 116 is bad
block 117 is bad
block 118 is bad
block 119 is bad
block 120 is bad
block 121 is bad
block 122 is bad
block 123 is bad
block 124 is bad
block 125 is bad
block 127 is bad
usb usb2: suspend_rh (auto-stop)
usb usb3: suspend_rh (auto-stop)
yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs2 filesystem) on device 31:11.

论坛徽章:
13
巨蟹座
日期:2013-10-30 18:29:4115-16赛季CBA联赛之青岛
日期:2019-01-04 17:30:1015-16赛季CBA联赛之天津
日期:2016-03-08 10:30:1715-16赛季CBA联赛之天津
日期:2015-12-10 15:56:452015年亚洲杯之约旦
日期:2015-03-09 16:29:36双鱼座
日期:2014-11-27 17:17:20寅虎
日期:2014-11-18 13:55:12双子座
日期:2014-03-31 15:41:32狮子座
日期:2014-03-14 11:23:24狮子座
日期:2014-02-19 16:30:12午马
日期:2013-11-04 23:22:31卯兔
日期:2013-10-30 19:51:15
2 [报告]
发表于 2011-03-04 21:41 |只看该作者
路过看看,顶一下

论坛徽章:
0
3 [报告]
发表于 2011-03-08 13:33 |只看该作者
个人认为:2G的flash与4G的flash在做写动作时地址的偏移计算不相等,特别是最后一个地址偏移量,这导致再改为4G的驱动时写的地址计算与前面2G的驱动不同,故会出现你帖子提到的现象,解决方法是在rootfs下用mtd工具或在boot 下强制擦除(也擦除obb信息)。

论坛徽章:
0
4 [报告]
发表于 2011-03-16 17:37 |只看该作者
Thanks so much. This issue has been done. The root cause is that the first and second bytes of the oob are wrong. Whjzhp's method is good, but the BBT information is gone. Later your file system is unstable. Be careful.

论坛徽章:
0
5 [报告]
发表于 2012-02-04 20:59 |只看该作者
您好,当我修改uboot使其支持在2G的nand flash上烧写yaffs2文件系统,启动后也出现同样的连续坏块,小弟新手,你能否给出详细的解决方法,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP