Posts Tagged qq2440
Detekcja bad blocków za pomocą U-Boot
Najpierw proponuję sprawdzić tablicę partycji czy testujemy porządny obszar.
qq2440 # mtdparts device nand0 <nandflash0>, # parts = 3 #: name size offset mask_flags 0: kernel 0x00200000 0x00000000 0 1: jffs2 0x00800000 0x00200000 0 2: yaffs 0x03600000 0x00a00000 0 active partition: nand0,0 - (kernel) 0x00200000 @ 0x00000000 defaults: mtdids : nand0=qq2440-nand mtdparts: <NULL>
Oto prosty snippet do wykrywania bad blocków w pamięci NAND flash za pomocą U-Boota.
mw 0x32000000 55aa55aa 20000 nand write 0x32000000 0x00a00000 0x80000 nand read 0x32080000 0x00a00000 0x80000 cmp.l 0x32000000 0x32080000 0x20000
Objaśnienia po kolei:
- do ramu (0×3200000) wpisujemy jakieś bajty testowe (0x550xaa0x550xaa) i to razy 0×20000. Rozmiar jaki chcemy przetestować podzielony przez 4
- potem zapisujemy to do flasha (0xa00000) na testowany obszar
- odczytujemy do innego obszaru pamięci
- testujemy
Wyniki mogą być takie (adresy w przykładzie są z innego testu):
word at 0x32180000 (0x55aa55aa) != word at 0x32200000 (0x00000000) Total of 393216 words were the same
Jeżeli znajdziemy jakiegoś babola wypada go odznaczyć, offset w pamięci flash trzeba obliczyć ręcznie, ale to chyba nie problem:
nand markbad 0xa00000

