This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3352 NAND FLASH 16-bit ECC校验无法校验反转bit位

Other Parts Discussed in Thread: AM3352

各位好:

      目前在使用AM3352读取NAND FLASH时,出现读取有bit反转现象,NAND FLASH驱动无法ECC反转的bit位。

    CPU:AM3352

    NAND FLASH:美光MT29F32G08CBADAWP

   ECC:硬件 16 bit (OMAP_ECC_BCH16_CODE_HW)

   SDK:ti-processor-sdk-linux-am335x-evm-01.00.00.03-Linux-x86-Install.bin

   测试方法:使用一个8M的每个字节都是0xaa的文件写入NAND FLASH,然后读取数据并打印

  MTD分区信息:

dev:    size   erasesize  name
mtd0: 01000000 00010000 "spi1.0"
mtd1: 80000000 00200000 "NAND.rootfs1"
mtd2: 80000000 00200000 "NAND.rootfs2"

MTD信息:
Count of MTD devices:           3
Present MTD devices:            mtd0, mtd1, mtd2
Sysfs interface supported:      yes

mtd0
Name:                           spi1.0
Type:                           nor
Eraseblock size:                65536 bytes, 64.0 KiB
Amount of eraseblocks:          256 (16777216 bytes, 16.0 MiB)
Minimum input/output unit size: 1 byte
Sub-page size:                  1 byte
Character device major/minor:   90:0
Bad blocks are allowed:         false
Device is writable:             true

mtd1
Name:                           NAND.rootfs1
Type:                           mlc-nand
Eraseblock size:                2097152 bytes, 2.0 MiB
Amount of eraseblocks:          1024 (2147483648 bytes, 2.0 GiB)
Minimum input/output unit size: 8192 bytes
Sub-page size:                  8192 bytes
OOB size:                       744 bytes
Character device major/minor:   90:2
Bad blocks are allowed:         true
Device is writable:             true

mtd2
Name:                           NAND.rootfs1
Type:                           mlc-nand
Eraseblock size:                2097152 bytes, 2.0 MiB
Amount of eraseblocks:          1024 (2147483648 bytes, 2.0 GiB)
Minimum input/output unit size: 8192 bytes
Sub-page size:                  8192 bytes
OOB size:                       744 bytes
Character device major/minor:   90:4
Bad blocks are allowed:         true
Device is writable:             true

使用文件的方式读取MTD1,读取8K的数据,然后打印,结果如下:

root@am335x-evm:/tools# ./djmtdrwe mtd1 r 0 2000
main:argv[0]=./djmtdrwe,argv[1]=mtd1,argv[2]=r,argv[3]=0,argv[4][ 5693.471727] nand: >>>>> nand_do_read_ops1 chipnr >>>> chipnr=0
=2000
offset=0x0,len=8192
size=2048M
erasesize=2048K
writesi[ 5693.482367] nand: >>> nand_do_read_ops >>>
ze=8192
oobsize=744
regcount=0
>>> readmtd >>> offset=0x0,len[ 5693.492067] nand: col=0,from=0,readlen=8192,oob=0,realpage=0,ops->mode=0,page_shift=13
=8192,pos=0x0
[ 5693.505595] nand: eccinfo:mode=2,steps=16,size=512,bytes=26,total=416,strength=16,prepad=0,postpad=0
[ 5693.516079] nand: chipinfo:chip_delay=200,bbt_options=0x0,options=0x10000,numchips=1,chipsize=416M,pagemask=4096,pagebuf=0,subpagesize=524287,ecc_strength_ds=-1,ecc_step_ds=8192
[ 5693.531981] nand: mtdinfo:size=0,writesize=0,erasesize=1,oobsize=8192,oobavail=2097152,ecc_strength=744,subpage_sft=326
[ 5693.542823] nand: bytes=8192,aligned=1,writesize=8192,realpage=0,chip->pagebuf=-1,oob=0
reading result:
flash addr file ops 
0x00000000 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000010 : ab ab aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000020 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000030 : aa aa aa aa aa aa aa aa aa aa aa aa aa a2 aa aa
0x00000040 : aa aa ba aa ba aa aa aa aa aa aa aa aa aa aa aa
0x00000050 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000060 : aa aa aa aa ea aa aa aa aa aa a2 aa aa aa aa aa
0x00000070 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ab
0x00000080 : ba aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000090 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000000a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000000b0 : aa aa aa aa aa aa aa aa aa aa aa aa aa a2 aa aa
0x000000c0 : aa aa aa aa b2 aa aa aa aa aa aa aa aa aa aa ea
0x000000d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000000e0 : aa aa aa aa aa aa aa aa aa ae aa aa aa aa aa aa
0x000000f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000100 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000110 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000120 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000130 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000140 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000150 : aa aa ae aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000160 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000170 : aa aa aa aa aa aa aa aa aa a2 aa aa aa ae aa aa
0x00000180 : aa aa aa aa aa aa aa aa aa aa aa aa a8 aa aa aa
0x00000190 : aa aa aa aa ab aa aa aa aa aa aa aa aa aa aa aa
0x000001a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000001b0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000001c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000001d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000001e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000001f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ab
0x00000200 : aa aa aa aa aa aa aa aa aa aa aa ea aa aa aa aa
0x00000210 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000220 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000230 : aa aa aa 2a aa aa aa aa aa aa aa aa aa a2 aa aa
0x00000240 : aa aa aa aa aa aa aa aa aa aa aa aa aa ae aa aa
0x00000250 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000260 : aa aa aa aa aa aa aa aa aa aa aa aa aa ba aa aa
0x00000270 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000280 : ba aa aa aa aa aa aa aa aa aa aa aa aa aa 2a ea
0x00000290 : aa ab aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000002a0 : aa aa ab aa aa aa aa aa aa aa aa aa aa be aa aa
0x000002b0 : aa aa aa aa aa aa aa aa aa a2 aa ab aa aa aa ab
0x000002c0 : ab aa aa aa ba aa aa aa aa aa aa aa aa aa aa aa
0x000002d0 : ab aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000002e0 : aa aa aa aa ea aa aa aa aa aa aa aa aa aa aa aa
0x000002f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa a2 aa aa
0x00000300 : aa aa aa aa aa aa aa aa aa aa aa a2 aa aa aa aa
0x00000310 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000320 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000330 : aa aa aa aa aa aa aa aa aa aa aa aa aa a2 aa aa
0x00000340 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ea
0x00000350 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000360 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000370 : aa aa aa aa aa aa aa aa aa aa aa ab aa aa aa aa
0x00000380 : aa aa aa aa aa aa aa aa aa aa aa ea aa aa aa aa
0x00000390 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000003a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000003b0 : aa aa aa aa aa aa aa aa aa a2 aa aa aa aa aa ab
0x000003c0 : aa aa aa aa ba aa aa aa a8 aa aa aa aa aa aa ea
0x000003d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000003e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000003f0 : aa aa aa aa aa aa aa aa aa ae aa ab aa aa aa aa
0x00000400 : ab aa aa 8a aa aa aa aa aa aa aa aa aa aa aa aa
0x00000410 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000420 : aa aa aa aa aa aa aa aa aa aa 8a aa aa aa aa aa
0x00000430 : 8a aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000440 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000450 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000460 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000470 : aa ea aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000480 : ab aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000490 : aa aa aa ae aa aa aa aa aa aa aa aa aa aa aa aa
0x000004a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000004b0 : aa aa aa aa aa aa aa aa aa ab aa aa aa aa aa aa
0x000004c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000004d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000004e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000004f0 : aa aa aa aa aa aa aa aa aa ab aa aa aa aa aa aa
0x00000500 : ab aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000510 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000520 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000530 : 8a aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000540 : aa aa aa aa aa aa aa 8a aa aa aa aa aa aa aa aa
0x00000550 : ea aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000560 : aa aa aa aa aa aa aa aa 8a aa aa aa aa aa aa aa
0x00000570 : aa ea aa aa aa aa aa aa aa ab aa aa aa aa aa aa
0x00000580 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000590 : aa aa aa aa aa aa aa aa aa aa 2a aa aa aa aa aa
0x000005a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa 8a aa
0x000005b0 : aa aa aa aa 8a aa aa aa aa aa aa aa aa aa aa aa
0x000005c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000005d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa 2a aa
0x000005e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000005f0 : 8a aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000600 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000610 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000620 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000630 : aa ea aa aa aa aa aa aa aa aa aa aa ae aa aa aa
0x00000640 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000650 : aa aa aa aa aa aa aa ae aa aa aa aa aa aa aa aa
0x00000660 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa 8a aa
0x00000670 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000680 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000690 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000006a0 : aa aa aa aa aa aa a8 aa aa aa aa aa aa aa aa aa
0x000006b0 : aa aa aa aa aa ae aa aa aa aa aa aa ab aa aa aa
0x000006c0 : ab aa aa aa ab aa aa aa aa aa aa aa aa aa aa aa
0x000006d0 : aa aa aa aa aa aa aa aa aa aa 2a aa aa aa aa aa
0x000006e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000006f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000700 : aa aa aa aa ab aa aa aa aa aa aa aa aa aa aa aa
0x00000710 : aa aa aa ae aa aa aa aa aa aa aa aa aa aa aa aa
0x00000720 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000730 : aa aa aa aa aa aa aa aa aa aa aa aa aa ab aa aa
0x00000740 : aa aa aa aa aa aa 2a aa aa aa aa aa aa aa aa aa
0x00000750 : aa aa aa aa aa aa aa ae aa aa aa aa aa aa 2a aa
0x00000760 : aa ab aa aa aa aa aa aa aa aa aa aa 8a aa aa aa
0x00000770 : aa aa aa aa aa ea aa aa aa ea aa aa aa aa aa aa
0x00000780 : ab aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000790 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000007a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000007b0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ea
0x000007c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000007d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000007e0 : aa aa aa aa aa aa aa aa aa aa aa ab aa aa aa ae
0x000007f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000800 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000810 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000820 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000830 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000840 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000850 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000860 : aa aa aa aa aa aa aa a2 aa aa aa aa aa aa aa aa
0x00000870 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000880 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000890 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000008a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000008b0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000008c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000008d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000008e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000008f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000900 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000910 : aa aa aa aa aa ea aa aa aa aa aa aa aa aa aa aa
0x00000920 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000930 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000940 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000950 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000960 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000970 : aa aa aa aa aa aa aa ba aa aa aa aa aa aa aa aa
0x00000980 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000990 : aa aa aa aa aa aa a8 aa aa aa aa aa aa aa aa aa
0x000009a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000009b0 : aa aa aa aa aa aa aa ba aa aa aa ae aa aa aa aa
0x000009c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000009d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000009e0 : aa aa aa a2 aa aa aa aa aa aa aa aa aa aa aa aa
0x000009f0 : aa aa aa ae aa aa aa aa aa aa ae aa aa aa aa aa
0x00000a00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000a10 : aa aa a8 aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000a20 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000a30 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000a40 : aa aa 2a ae aa aa aa aa aa aa aa aa aa aa aa aa
0x00000a50 : ab aa aa aa ab aa aa aa aa aa aa aa aa aa aa aa
0x00000a60 : aa aa aa 2a aa aa aa aa aa aa aa aa aa aa aa aa
0x00000a70 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000a80 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000a90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000aa0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ab0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ac0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ad0 : aa ea a8 aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ae0 : aa aa aa a2 aa aa aa aa aa aa aa aa aa aa aa ae
0x00000af0 : aa aa aa aa aa aa aa ba aa aa aa aa aa aa aa aa
0x00000b00 : aa aa aa aa aa aa aa ae aa aa aa aa aa aa aa aa
0x00000b10 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000b20 : aa aa aa ba aa aa aa 2a aa aa aa aa aa aa aa aa
0x00000b30 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000b40 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000b50 : aa aa aa aa aa aa aa aa aa aa ba aa aa aa aa aa
0x00000b60 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000b70 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000b80 : aa aa aa aa aa aa a2 aa aa aa aa aa aa aa aa aa
0x00000b90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ba0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000bb0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000bc0 : aa aa aa aa aa aa aa ae aa aa aa aa aa aa aa aa
0x00000bd0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000be0 : aa a2 aa aa aa aa aa aa aa aa aa aa aa aa aa ae
0x00000bf0 : aa aa aa aa aa aa aa ba aa aa aa aa aa aa aa aa
0x00000c00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000c10 : aa aa aa aa aa ab aa aa aa aa aa aa aa aa aa aa
0x00000c20 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000c30 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000c40 : aa aa aa aa aa aa aa aa aa aa aa aa 2a aa aa aa
0x00000c50 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000c60 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000c70 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000c80 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000c90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ca0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000cb0 : aa aa aa ab aa aa aa ab aa aa aa aa aa aa aa aa
0x00000cc0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000cd0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ce0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000cf0 : aa a2 aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d10 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d20 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d30 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d40 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d50 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d60 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d70 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d80 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000d90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000da0 : aa aa aa aa aa aa aa aa aa aa aa ab aa aa aa aa
0x00000db0 : aa aa aa a2 aa aa aa aa aa aa aa aa aa aa aa aa
0x00000dc0 : aa 2a aa aa aa aa aa aa aa aa aa ea aa aa aa 2a
0x00000dd0 : aa ab aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000de0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000df0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000e00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000e10 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000e20 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000e30 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000e40 : aa 2a aa aa aa aa aa aa aa aa aa ea aa aa aa aa
0x00000e50 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa ea aa
0x00000e60 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000e70 : aa a2 aa aa aa aa aa aa aa ca aa aa aa aa aa aa
0x00000e80 : aa 2a aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000e90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ea0 : aa aa aa aa aa aa a2 aa aa aa aa aa aa aa aa aa
0x00000eb0 : aa aa aa aa aa aa aa aa aa aa aa aa aa ea aa aa
0x00000ec0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ed0 : aa aa aa aa aa ab aa aa aa aa aa aa aa aa aa aa
0x00000ee0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ab
0x00000ef0 : aa aa aa ab aa aa aa aa aa ea aa aa aa aa aa aa
0x00000f00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ba
0x00000f10 : aa aa aa aa aa aa aa aa aa 2a aa aa aa aa aa aa
0x00000f20 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000f30 : aa aa aa aa aa aa aa ab aa aa aa aa aa aa aa aa
0x00000f40 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000f50 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000f60 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000f70 : aa aa aa aa aa a2 aa aa aa aa aa aa aa aa aa aa
0x00000f80 : aa aa aa ae aa aa aa aa aa aa aa aa aa aa aa aa
0x00000f90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000fa0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000fb0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000fc0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000fd0 : aa aa aa aa aa aa a8 aa aa aa ea aa aa 2a ea aa
0x00000fe0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00000ff0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001000 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001010 : aa aa a8 aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001020 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001030 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ae
0x00001040 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001050 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001060 : aa aa aa aa aa aa 8a aa aa aa aa aa aa aa aa aa
0x00001070 : a8 aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001080 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001090 : aa aa aa aa aa aa aa aa ab aa aa aa aa aa aa aa
0x000010a0 : aa aa 8a aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000010b0 : aa aa aa aa aa aa aa aa aa aa 8a aa aa aa aa aa
0x000010c0 : aa aa aa aa aa aa aa ae aa aa aa aa aa aa aa aa
0x000010d0 : aa aa aa aa aa aa aa aa ab aa aa aa aa aa aa aa
0x000010e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000010f0 : aa aa aa ab aa aa aa aa aa aa aa aa aa aa aa aa
0x00001100 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001110 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001120 : aa aa aa aa aa aa 8a aa aa aa aa aa aa aa aa aa
0x00001130 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001140 : aa aa aa ae aa aa aa aa aa aa aa aa aa aa aa aa
0x00001150 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001160 : aa aa 8a aa aa aa 88 aa aa aa aa aa aa aa aa aa
0x00001170 : aa aa aa 8a 8a aa ea aa aa aa 8a aa aa aa aa aa
0x00001180 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001190 : aa aa aa aa aa aa aa ba aa aa aa aa aa aa aa aa
0x000011a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000011b0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000011c0 : aa aa aa aa aa aa aa aa aa a2 aa aa aa aa aa aa
0x000011d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000011e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000011f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa 8a aa
0x00001200 : aa aa aa ae aa aa aa aa aa aa aa aa aa aa aa aa
0x00001210 : aa aa ab aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001220 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001230 : a8 aa aa aa aa ab aa aa aa aa aa aa aa aa aa aa
0x00001240 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001250 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001260 : aa aa aa aa aa aa ba aa aa aa aa aa aa aa aa aa
0x00001270 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001280 : aa aa aa aa aa aa aa aa aa aa aa aa aa ab aa aa
0x00001290 : aa ae aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000012a0 : aa aa aa aa aa aa 8a aa aa aa aa aa aa aa aa aa
0x000012b0 : aa aa ea aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000012c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000012d0 : aa aa aa aa aa aa aa aa ab aa aa aa aa ea aa aa
0x000012e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000012f0 : aa aa ea aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001300 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001310 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001320 : aa aa ae aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001330 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001340 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001350 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001360 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001370 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001380 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001390 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000013a0 : aa aa aa aa aa aa 8a aa aa ab aa aa aa aa aa aa
0x000013b0 : aa aa aa aa 8a aa aa aa aa aa aa aa aa aa aa aa
0x000013c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa ab aa aa
0x000013d0 : aa aa ab aa aa aa a8 aa aa aa aa aa aa aa aa aa
0x000013e0 : aa aa 8a aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000013f0 : aa aa ea aa aa aa aa 8a aa aa aa aa aa aa aa aa
0x00001400 : aa aa aa aa aa aa a8 aa aa aa aa aa aa aa aa aa
0x00001410 : aa ae aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001420 : 8a aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001430 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001440 : aa aa a8 aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001450 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001460 : aa aa aa aa aa aa ae aa aa aa aa aa aa aa aa aa
0x00001470 : aa aa aa aa aa aa aa aa aa aa aa aa aa a8 aa aa
0x00001480 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001490 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ab
0x000014a0 : ae aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000014b0 : aa aa aa aa aa aa ba aa aa aa aa aa aa aa aa aa
0x000014c0 : ae aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000014d0 : aa aa aa 2a aa aa aa aa aa aa aa aa aa aa aa aa
0x000014e0 : aa aa aa aa aa aa aa aa aa aa aa 2a aa aa aa aa
0x000014f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001500 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001510 : aa aa ae aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001520 : ea aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001530 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001540 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001550 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001560 : aa aa aa aa aa aa aa aa aa aa aa aa aa ea aa aa
0x00001570 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001580 : ba aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001590 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000015a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000015b0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000015c0 : aa aa aa aa ba aa aa aa aa aa aa aa aa aa aa aa
0x000015d0 : ba aa aa aa aa aa aa 2a aa aa aa aa aa aa aa aa
0x000015e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000015f0 : aa ba aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001600 : aa aa aa aa aa aa 2a aa aa ba aa aa aa aa aa aa
0x00001610 : ba aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001620 : aa aa aa aa 8a aa aa aa aa aa aa aa aa aa aa aa
0x00001630 : aa aa aa aa aa aa aa aa aa a8 aa aa aa aa aa aa
0x00001640 : aa aa aa aa aa aa aa aa aa 2a aa aa aa 2a aa aa
0x00001650 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001660 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001670 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001680 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001690 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000016a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000016b0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000016c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000016d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000016e0 : aa aa aa aa aa aa aa aa aa aa aa aa a2 aa aa aa
0x000016f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001700 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001710 : aa aa aa aa ba aa aa aa aa aa aa aa aa aa aa aa
0x00001720 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001730 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001740 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001750 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001760 : aa aa aa aa aa aa ae aa aa aa aa aa aa aa aa aa
0x00001770 : aa ba aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001780 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001790 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000017a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000017b0 : aa aa ba aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000017c0 : ba aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000017d0 : aa aa ea aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000017e0 : aa aa aa aa aa aa aa ea aa aa aa aa aa aa aa aa
0x000017f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001800 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001810 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001820 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001830 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa 8a aa
0x00001840 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001850 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001860 : aa aa aa aa aa aa aa ea aa aa aa a8 aa aa aa aa
0x00001870 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001880 : aa aa aa aa aa aa 8a aa aa aa aa aa aa aa aa aa
0x00001890 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000018a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000018b0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000018c0 : aa aa 8a aa aa ae aa aa aa aa aa aa aa aa aa aa
0x000018d0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000018e0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa a8
0x000018f0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001900 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001910 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001920 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001930 : aa aa aa 8a aa aa aa ba aa aa aa aa aa aa aa aa
0x00001940 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001950 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001960 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001970 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001980 : aa ae aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001990 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000019a0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000019b0 : aa aa aa aa aa aa aa 2a aa aa aa aa aa aa aa aa
0x000019c0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x000019d0 : aa aa aa aa aa aa aa aa aa aa aa a8 aa aa aa a2
0x000019e0 : aa aa aa aa aa aa aa ea aa aa aa aa ca aa aa aa
0x000019f0 : aa aa aa ba aa aa aa aa aa aa aa aa aa aa aa aa
0x00001a00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001a10 : aa aa aa aa aa aa aa aa a8 aa aa aa aa aa aa aa
0x00001a20 : aa aa aa aa aa 8a aa aa aa a8 2a aa aa aa aa aa
0x00001a30 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001a40 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001a50 : aa aa aa aa aa aa aa aa aa aa aa a2 aa aa aa aa
0x00001a60 : aa aa aa aa aa aa aa aa aa aa aa aa 8a a8 aa aa
0x00001a70 : aa aa aa aa aa aa aa aa ab aa aa aa aa aa aa aa
0x00001a80 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001a90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001aa0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001ab0 : aa aa aa aa aa aa aa ba aa aa aa aa aa aa aa aa
0x00001ac0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001ad0 : aa aa aa aa aa aa aa aa aa aa aa aa ba aa aa aa
0x00001ae0 : aa aa aa aa aa aa aa aa aa aa aa aa 8a aa aa aa
0x00001af0 : aa aa aa aa aa ae aa ba aa aa aa aa aa aa aa aa
0x00001b00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001b10 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001b20 : aa aa aa aa aa aa aa aa aa a8 aa aa aa ea aa aa
0x00001b30 : aa aa aa aa aa ae aa aa aa aa aa aa aa aa aa aa
0x00001b40 : aa aa aa aa aa ae aa aa aa aa aa aa aa aa aa aa
0x00001b50 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001b60 : aa aa aa aa aa aa aa aa aa aa aa a8 aa aa aa aa
0x00001b70 : aa aa aa aa aa aa aa ba aa aa aa aa aa aa aa aa
0x00001b80 : aa aa aa aa aa aa ba aa aa aa aa a2 aa aa aa aa
0x00001b90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001ba0 : aa aa aa aa aa aa aa aa aa aa aa a8 aa aa aa aa
0x00001bb0 : aa aa aa 8a aa aa aa aa aa aa aa aa aa aa aa aa
0x00001bc0 : aa aa aa aa aa aa 8a aa aa aa aa aa aa aa aa aa
0x00001bd0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001be0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001bf0 : aa aa aa aa aa aa aa aa aa aa 8a aa aa aa aa aa
0x00001c00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001c10 : a2 aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001c20 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001c30 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001c40 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001c50 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001c60 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001c70 : aa aa aa aa aa aa aa aa aa aa aa aa ae aa aa aa
0x00001c80 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001c90 : aa aa aa aa aa aa aa aa aa aa aa 8a aa aa aa aa
0x00001ca0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001cb0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001cc0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001cd0 : aa aa aa aa aa aa aa aa aa aa a2 aa aa aa aa aa
0x00001ce0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ae
0x00001cf0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001d00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001d10 : 8a aa aa aa ba aa aa aa aa aa aa aa aa aa aa 8a
0x00001d20 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001d30 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001d40 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001d50 : aa aa aa aa aa aa aa aa aa aa aa 8a aa aa aa aa
0x00001d60 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001d70 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001d80 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001d90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa a8
0x00001da0 : aa aa aa aa aa aa aa aa ab aa aa aa aa aa aa aa
0x00001db0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001dc0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001dd0 : aa aa aa aa 8a aa aa aa aa aa aa aa aa aa aa aa
0x00001de0 : aa aa aa aa aa aa aa aa aa aa aa ae aa aa aa aa
0x00001df0 : ea aa aa aa aa aa aa aa aa 2a aa aa aa aa aa aa
0x00001e00 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001e10 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001e20 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa ae aa
0x00001e30 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001e40 : aa aa aa aa aa aa aa a8 aa aa aa aa aa aa aa aa
0x00001e50 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001e60 : aa aa aa a2 aa aa aa aa ab aa aa aa aa aa aa aa
0x00001e70 : 8a aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001e80 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001e90 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001ea0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001eb0 : aa aa aa aa ea aa aa aa aa aa aa aa aa aa aa aa
0x00001ec0 : aa aa aa aa aa aa aa aa aa aa ab aa aa aa aa aa
0x00001ed0 : aa aa aa aa 8a aa aa aa aa aa aa aa aa aa aa aa
0x00001ee0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ae
0x00001ef0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001f00 : aa aa ba aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001f10 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001f20 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ae
0x00001f30 : aa aa aa aa aa aa aa aa aa 2a aa aa aa aa aa aa
0x00001f40 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001f50 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001f60 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001f70 : aa aa aa aa aa aa aa aa aa aa 2a aa aa aa aa aa
0x00001f80 : aa aa aa aa aa aa aa a8 aa aa aa aa aa aa aa aa
0x00001f90 : aa aa aa aa a2 aa aa aa aa aa aa aa aa aa aa aa
0x00001fa0 : aa aa ba aa aa aa aa aa aa aa aa ae aa aa aa ae
0x00001fb0 : ea aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001fc0 : aa aa aa aa aa aa aa aa aa aa aa aa aa ba aa aa
0x00001fd0 : aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
0x00001fe0 : aa aa aa aa aa aa ba aa aa aa aa aa aa aa ae aa
0x00001ff0 : aa aa aa aa aa aa aa aa aa aa 2a aa aa aa aa aa
read done!
read 0x2000(8192) bytes at offset=0x0 done!

附件是读取mtd的测试程序。

 

 

 

 

  • 最近也在关注着nand ecc的问题,可否帮忙在你的测试版本上,跑一下以下三条命令来测试这个ecc问题?

    ./runltp -f ddt/nand_mtdtests -P am335x-evm

    ./runltp -f ddt/nand_ecc_tests -s "NAND_S_FUNC_ECC_2K_BCH8_8ERRS_NO_OOB_ERR" -P am335x-evm

    ./runltp -f ddt/nandtests -s "NAND_L_STRESS_NANDTEST" -P am335x-evm

    PS说明:Use LTP. It comes with our root file system in /opt/ltp. 

  • Steven:

        你好,我以前用的nand flash的page size是8KB,AM335x技术手册上说明ECC校验时最大支持page size为4KB的nand flash,我们今天更换了美光的MT29F16G08CBACAWP的FLASH,ecc校验正常。在前段时间,我内核读nand flash一次读一个page size的修改为一次读512个自己,分eccsteps次读取,校验也是对的。

  • 补充说明,读取pagesize为8KB的,分eccsteps次读取,每次读取512个字节ECC校验也有问题,pagesize为4KB的,一次读取4KB或者分eccsteps读取,每次读取512B时ECC校验都是正常的。

    另外2014.07的u-boot读取pagesize为8KB的flash,eccsteps读取,每次读取512B时ECC校验都是正常的,内核下不正常,原因不明。

  • 你好,请问你们的问题现在解决了吗?能否把你的这个测试程序给我发一份dquanynet@163.com,我似乎下载不了,谢谢了

  • 答案看前面的啊。

    其实就是对/dev/mtd设备读写,和读写文件一样。

    #include <unistd.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <fcntl.h>
    #include <time.h>
    #include <sys/ioctl.h>
    #include <sys/mount.h>
    #include <string.h>
    #include <mtd/mtd-user.h>

    #define MAX_BUFF_LEN 2048
    typedef unsigned int uint32;

    int gfd = 0;

    int non_region_erase(int Fd, int start, int count, int unlock)
    {
    mtd_info_t meminfo;
    if (ioctl(Fd,MEMGETINFO,&meminfo) == 0)
    {
    erase_info_t erase;
    erase.start = start;
    erase.length = meminfo.erasesize;
    for (; count > 0; count--) {
    printf("\rPerforming Flash Erase of length %u at offset 0x%x",
    erase.length, erase.start);
    fflush(stdout);
    if(unlock != 0)
    {
    //Unlock the sector first.
    printf("\rPerforming Flash unlock at offset 0x%x",erase.start);
    if(ioctl(Fd, MEMUNLOCK, &erase) != 0)
    {
    perror("\nMTD Unlock failure");
    close(Fd);
    return 8;
    }
    }
    if (ioctl(Fd,MEMERASE,&erase) != 0)
    {
    perror("\nMTD Erase failure");
    close(Fd);
    return 8;
    }
    erase.start += meminfo.erasesize;
    }
    printf(" done\n");
    }
    return 0;
    }

    void print_buffer(unsigned char* buff,int len)
    {
    int i = 0;
    unsigned char* pData = buff;
    int nCount = 0;
    uint32 u32Addr = 0;
    printf("%-10s %-10s\n","flash addr","file ops");
    printf("0x%08x : ",u32Addr);

    for( i= 0; i < len; i++)
    {
    if(nCount == 16)
    {
    printf("\n");
    nCount = 0;
    u32Addr += 16;
    printf("0x%08x : ",u32Addr);
    }

    printf("%02x ",*pData);
    pData++;
    nCount++;
    }

    printf("\n");
    }

    void readmtd(__off_t offset,int len)
    {
    if(len <= 0 || offset < 0)
    {
    printf("readmtd : invalid param offset=0x%x,len=%d\n",offset,len);
    return;
    }

    int i = 0;

    __off_t pos = lseek(gfd,offset,SEEK_SET);
    if(pos == -1)
    {
    printf("seek to 0x%x failed\n",offset);
    return ;
    }

    printf(">>> readmtd >>> offset=0x%x,len=%d,pos=0x%x\n",offset,len,pos);

    uint8_t *rxbuff = malloc(len);
    if(rxbuff == NULL)
    {
    printf("alloc mem failed\n");
    return;
    }

    memset(rxbuff,0,len);
    int nCount = read(gfd, rxbuff, len);
    printf("reading result:\n");
    print_buffer(rxbuff,len);
    printf("read done!\n");

    printf("read 0x%x(%d) bytes at offset=0x%x done!\n",nCount,nCount,offset);
    free(rxbuff);
    }

    void writemtd(__off_t offset,int len)
    {
    if(len <= 0 || offset < 0)
    {
    printf("writemtd : invalid param offset=0x%x,len=%d\n",offset,len);
    return;
    }

    int i = 0;

    __off_t pos = lseek(gfd,offset,SEEK_SET);
    if(pos == -1)
    {
    printf("seek to 0x%x failed\n",offset);
    return ;
    }

    printf("write data to nor flash:\n");
    uint8_t *txbuff = malloc(len);
    uint8_t* pBuff = txbuff;

    for(i = 0; i < len; i++,pBuff++)
    {
    *pBuff = i;
    }

    int nCount = write(gfd, txbuff, len);

    printf("writen 0x%x(%d) bytes done!\n",nCount,nCount);
    free(txbuff);
    }

    int main(int argc, char *argv[])
    {
    char *cmd;
    struct mtd_info_user info;
    int regcount;
    int ret;
    int res;
    int i = 0;
    char arrDevice[256]="/dev/";
    __off_t offset = 0;
    __off_t len = 0;

    if(argc != 5)
    {
    printf("please usage:\ndjmtd mtdname w offset len--write data to nor flash\ndjmtd mtdname r offset len --read data from nor flash\ndjmtd mtdname e offset len--erase data from nor flash\n");

    return 0;
    }

    printf("main:argv[0]=%s,argv[1]=%s,argv[2]=%s,argv[3]=%s,argv[4]=%s\n",argv[0],argv[1],argv[2],argv[3],argv[4]);

    //djmtd mtd0 r offset len
    strcat(arrDevice,argv[1]);
    cmd = argv[2];

    offset = strtol(argv[3],NULL,16);
    len = strtol(argv[4],NULL,16);

    printf("offset=0x%x,len=%d\n",offset,len);

    gfd = open(arrDevice,O_RDWR);

    // Open the device
    if ( gfd < 0)
    {
    fprintf(stderr,"can't open %s\n",arrDevice);
    return 8;
    }
    else
    {
    ioctl(gfd,MEMGETINFO,&info);
    printf("size=%dM\nerasesize=%dK\nwritesize=%d\noobsize=%d\n",info.size/(1024*1024),info.erasesize/1024,info.writesize,info.oobsize);
    }

    if (ioctl(gfd,MEMGETREGIONCOUNT,&regcount) == 0)
    {
    printf("regcount=%d\n",regcount);
    }

    /*erase the device*/
    if (strcmp(cmd, "e") == 0)
    {
    if(regcount == 0)
    {
    res = non_region_erase(gfd,0,(info.size/info.erasesize),0);
    }
    printf("erase!\n");
    }
    /*write file to this device*/
    if (strcmp(cmd, "w") == 0)
    {
    writemtd(offset,len);
    }

    if (strcmp(cmd, "r") == 0)
    {
    readmtd(offset,len);
    }

    close(gfd);

    return 1;
    }