HexFire 发表于 2016-1-7 15:32:59

求助:执行 devcp 前忘记执行 mtd_erase 结果出现了坏块,怎么办?

求助:执行 devcp 前忘记执行 mtd_erase 结果出现了坏块,怎么办? 谢谢

现在每次执行 mtd_erase 都会出现这个情况:

PMON> mtd_erase /dev/mtd1
mtd_erase working:
0x03100000nand_erase: attempt to erase a bad block at page 0x00006200
0x03f60000nand_erase: attempt to erase a bad block at page 0x00007ec0
0x07200000
mtd_erase work done!
PMON>

HexFire 发表于 2016-1-7 18:42:38

本帖最后由 HexFire 于 2016-1-7 18:44 编辑

操作记录:

PMON> ifup syn0
Bus Mode Reg after reset: 0x00020101
Version = 0x1237
MacAddr = 0x0   0x55    0x7b    0xb5    0x7d    0xf7
=====>enter synopGMAC_mac_init:1000
=====>full duplex
=====>100M
PMON> ifaddr syn0 192.168.99.161
bootp=8000b874
PMON> ping 192.168.99.209
PING 192.168.99.209 (192.168.99.209): 56 data bytes
64 bytes from 192.168.99.209: icmp_seq=0 ttl=64 time=0.982 ms
64 bytes from 192.168.99.209: icmp_seq=1 ttl=64 time=0.615 ms

--- 192.168.99.209 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.615/0.790/0.982 ms
PMON> mtd_erase /dev/mtd1
mtd_erase working:
0x03100000nand_erase: attempt to erase a bad block at page 0x00006200
0x03f60000nand_erase: attempt to erase a bad block at page 0x00007ec0
0x07200000
mtd_erase work done!
PMON> devcp tftp://192.168.99.209/rootfs.yaffs2img /dev/mtd1 yaf nw      
37982208
Skip bad block 0x03100000
53391360
Skip bad block 0x03f60000
74547264PMON> set append 'root=/dev/mtdblock1 console=ttyS2,115200 rootfstype=yaffs2'PMON> reboot

xieyug2012 发表于 2016-1-8 09:04:49

智龙2.0可以重新刷PMON和debian,

HexFire 发表于 2016-1-8 15:57:30

xieyug2012 发表于 2016-1-8 09:04
智龙2.0可以重新刷PMON和debian,

我的意思是智龙的 NAND flash 因为操作不当出现了坏块, 查询了下资料, 了解到这种坏块是由于在写入 yaffs2 文件系统前, 没有执行 mtd_erase 导致的, 也就说并不是真的坏了, 而是由于误操作被系统标识为坏块了, 应该是可以恢复的.

不过暂时还没搞清楚如何用命令恢复, 尤其是目前智龙把闪存分了3个区域, MTD0存放Linux 内核, MTD1存放 rootfs, MTD2 是用户区域, 我现在只是 MTD1 出现了坏块, 希望能在不影响其他两个分区的情况下恢复 MTD1 中的坏块.

这方面的知识了解得不多, 正在慢慢查

xieyug2012 发表于 2016-1-16 12:09:38

HexFire 发表于 2016-1-8 15:57
我的意思是智龙的 NAND flash 因为操作不当出现了坏块, 查询了下资料, 了解到这种坏块是由于在写入 yaffs ...
那好吧,我就不添乱了。:lol

shigeng 发表于 2016-1-17 20:38:04

理论上说flash随着写次数的增加坏块会逐渐增多,yaffs文件系统会平均每一个存储块被写的机会,另外坏块会被标记出来以便写数据的时候绕过它。

xieyug2012 发表于 2017-4-3 15:31:26

http://git.oschina.net/openloongson/smart_loong_docs/tree/master/,用这里的文件系统试试,也许是文件本身错了
页: [1]
查看完整版本: 求助:执行 devcp 前忘记执行 mtd_erase 结果出现了坏块,怎么办?