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:

  1. do ramu (0×3200000) wpisujemy jakieś bajty testowe (0x550xaa0x550xaa) i to razy 0×20000. Rozmiar jaki chcemy przetestować podzielony przez 4
  2. potem zapisujemy to do flasha (0xa00000) na testowany obszar
  3. odczytujemy do innego obszaru pamięci
  4. 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

, , , ,

  1. #1 by sheep on 09/05/2009 - 21:41

    A jaki to ma związek z pythonem, bo chyba nie nadążam…

  2. #2 by Krzysiek on 09/05/2009 - 22:49

    Nie ma :) aktualnie po godzinach zajmuję się urządzeniami wbudowanymi. A w pracy przerabiam stare sztuczki w Pythonie i nie mam się niestety czym ciekawym podzielić. W ramach resocjalizacji postaram się przywrócić stare artykuły z Pydeva. A na marginesie blog jest nie komercyjny, więc piszę o czym mi się podoba. Przepraszam, jeżeli domena i tytuł Cię zmyliły, nie był to celowy zabieg. Zawodowo piszę min. w Pythonie i chciałem wznowić bloga, którego kiedyś prowadziłem na tej domenie. Może jak skończę dyplom, to po godzinach zajmę się również Pythonem. Póki co wrzucam tu co mi ślina na język przyniesie i basta!
    Pozdrawiam,
    KC

    [WORDPRESS HASHCASH] The poster sent us ’0 which is not a hashcash value.

(will not be published)

Powered by WP Hashcash