您好!
我的板在 AM3352 CS0和 CS1上有两个 NAND 闪存、它们可以在内核启动期间找到、如下所示:
[1.200073]#### nandflash cs (0) physic base addr:0x1000000 ####
[1.206787] NAND 器件:制造商 ID:0xec、芯片 ID:0xd7 (Samsung NAND 4GiB 3、3V 8位)
[1.219940]在"OMAP2-nand.0"上创建11个 MTD 分区:
[1.225616] 0x0000000000000000 0x000000100000:"SPL"
[1.2360] 0x000000100000-0x000000600000:"U-Boot"
[1.239410]0x000000600000-0x000000700000:“U-Boot Env”
[1.246368] 0x000000700000-0x000001800000:“内核”
[1.254608] 0x000001800000-0x00000d800000:"文件系统"
[1.281341] 0x00000d800000-0x000014000000:"lib"
[1.298492] 0x0000140000-0x00001d600000:"保留"
[1.320739] 0x00001d600000-0x00001e700000:"Kernel2" //mtd7.
[1.329040] 0x00001e700000-0x00002a700000:"文件系统2"
[1.3555957] 0x00002a700000-0x000030f00000:"lib2"
[1.373229] 0x000030f00000-0x000100000000:"弹起"
[1.722686]#### nandflash cs (1) physic base addr:0x2000000 ####
[1.729400] NAND 器件:制造商 ID:0xec、芯片 ID:0xd7 (Samsung NAND 4GiB 3、3V 8位)
[1.742187]在"OMAP2-nand.1"上创建2个 MTD 分区:
[1.747833] 0x000000000000-0x0000f9c00000:"data1"
[2.168670] 0x0000f9c00000-0x000100000000:"保留" //mtd12.
重要的是 当我擦除这两个 NAND 的一个分区时、例如 CS0:mtd7和 CS1:mtd12。
mtd7是擦除正常、但 mtd12是失败的(我使用 nanddump 读取 mtd12数据、并非所有数据都变为0xFF)我的调试自述文件如下所示:
[root@am3352]#./flash_erase /dev/mtd12 0 //擦除 mtd12分区
擦除512 KB @ 6380000 --完成100%
[root@am3352]# nanddump -o -f /tmp/test.txt -l 100 /dev/mtd12 //读取 MTD 数据
[root@am3352]# cat /tmp/test.txt | hexdump -cv
00000000 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... | 不变为0xFF,为什么存在0x00?
00000010 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
00000020 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
00000030 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
00000040 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
00000050 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
(笑声)
00000060 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
00000070 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
00000080 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
00000090 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
000000a0 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 |.......... |
[root@bocon app]#./flash_erase /dev/mtd6 0 //擦除 mtd12
擦除512 KB @ 9580000 --完成100%
[root@ am3352]# nanddump -o -f /tmp/test.txt -l 100 /dev/mtd6 //读取 MTD 数据
[root@am3352]# cat /tmp/test.txt | hexdump -cv
00000000关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF |.......... | 全部变为0xFF
00000010 ff ff ff ff ff ff ff FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF |.......... |
00000020 ff ff ff ff ff ff ff ff FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF |.......... |
00000030 ff ff ff ff ff ff ff ff FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF |.......... |
…
00000150关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF |.......... |
00000160关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF |.......... |
00000170关断关断 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF |.......... |
[root@am3352]#
有人能给我一些建议来解决这个问题,非常感谢!
我的 BSP: AM335xPSP_04.06.00.11,Linux 内核为3.2.0。