Mi az a Nand Flash és Bad blokk?
Oct 25, 2022
1 NAND VAKU
1.1 A NAND FLASH memória bemutatása
NAND FLASH memória, kínai néven flash memória. Nevét a gyors törlési sebességéről kapta.
A NAND FLASH-t Fujio Masuoka, a japán Toshiba csoport feltalálója. Más tárolóeszközöktől eltérően a NAND FLASH adatvonalak és címsorok multiplexek, és a címsorok nem használhatók véletlenszerű címzésre. Ezért a NAND FLASH oldallapokat használ olvasóegységként (általában egyetlen oldal 2K bájt), törlési egységként pedig blokkokat használ. (Általában egyetlen blokk 128 KB vagy 256 KB). A törlési parancs elküldése után a NAND FLASH egyszerre 1-re törli az összes blokkot, és a benne lévő összes tartalom 0xFF lesz. Mivel a törlési idő nagyon rövid, olyan gyors, mint a villám. Tehát ezt a memóriát FLASH memóriának hívjuk.
1.2 A NAND FLASH hardvermegvalósítási mechanizmusa
A NAND FLASH alapegysége egy úszókapuval ellátott MOSFET.
Az adatokat elektromos töltés formájában tárolják a Flash memória cellákban. A tárolt töltés mennyisége a külső kapura kapcsolt feszültségtől függ. Az adatok reprezentációját az jelenti, hogy a tárolt töltés feszültsége túllép-e egy meghatározott Vth küszöböt, és ha a tárolt töltés elegendő és meghaladja a Vth küszöböt, akkor 1-et jelent. 0 írásánál a kisülést jelenti. és a töltés Vth alá csökken, ami azt jelenti, hogy 0.
2 Rossz blokk
2.1 A hibás blokk definíciója
Mivel a NAND Flash folyamata nem tudja garantálni a NAND memóriatömb teljesítményének megbízhatóságát az életciklusa során, a NAND gyártása és használata során hibás blokkok lépnek fel. A rossz blokkok jellemzői: a blokk programozásakor/törlésekor bizonyos biteket nem lehet magasra húzni, ami hibákat okoz az Oldalprogramozás és a Blokktörlés műveletekben.
2.2 A rossz blokkok osztályozása: gyári hibás blokk FBB és használt rossz blokk GBB
(1) FBB: Factory Bad Block, a gyári hibás blokkot, a hibás blokkot, amely éppen most hagyta el a gyárat, Maszkolt rossz blokknak vagy kezdeti rossz/érvénytelen blokknak hívják. Amikor a NAND Flash elhagyja a gyárat, a gyártási folyamat miatt bizonyos mennyiségű rossz blokk lesz. Ugyanakkor az eredeti gyár teszteli a NAND FLASH-t, mielőtt elhagyja a gyárat, és a teszthez használt blokkokat is rossz blokkként jelölheti meg az eredeti gyár.
A gyár elhagyása előtt az eredeti gyár megjelöli a rossz blokkokat. A specifikus jelzés az, hogy a 2K oldalmérettel rendelkező általános NAND Flash esetében, a NAND flash esetében a rossz blokkjel általában minden blokk első oldalán található. Az oldal tartalékterületének első bájtja. Konkrétan lekérdezheti a különböző termékek adatlapját. Ha nem 0xFF, az azt jelenti, hogy hibás blokkról van szó. Ennek megfelelően minden normál blokk, jó blokk és minden adat 0xFF.
(2) GBB: Grown Bad Block, rossz blokkokkal. A NAND Flash használata során, mivel a NAND Flash törlési és írási élettartama korlátozott (általában nem több, mint 100,000 alkalommal), bizonyos használati idő után hibás blokkok is előfordulnak. . Ha blokktörlés vagy oldalprogram hiba található, a blokk hibás blokkként jelölhető meg. Az inherens rossz blokkinformációkkal való összhang érdekében a tartalékterület első bájtja (byte) a 0xFF-től eltérő értékekkel is meg lesz jelölve.
2.3 Hibás blokktábla:
A vaku első blokkjának jónak kell lennie, amikor elhagyja a gyárat, ellenkező esetben az egész vakut nem lehet használni. Mert általában az első blokkot fogják használni a rossz blokktábla (BBT, Bad Block Table) mentésére. A rossz blokkkezelés (Bad Block Management) működési mechanizmusa miatt a Linux kernel MTD architektúrájú NAND Flash illesztőprogramjában és az UBOOT NAND Flash illesztőprogramjában az illesztőprogram betöltése után, ha nem ad hozzá paramétereket, aktívan kéri a kihagyást. a rossz blokkvizsgálat. Ha igen, akkor aktívan keresni fogja a rossz blokkokat, és létrehozza a szükséges BBT-t a későbbi rossz blokkok kezeléséhez.
2.4 A hibás blokkok száma és elhelyezkedése
Az eredeti NAND FLASH gyárban lesz szabvány a rossz blokkok számára és elhelyezkedésére. Az eredeti gyár általában azt ígéri, hogy a hibás blokkok száma nem haladja meg a 2 százalékot, de a rossz blokkok elhelyezkedése nem garantált (de az első blokknak jónak kell lennie, amikor elhagyja a gyárat. , mert az elsőt használják áruház BTT). Például egy NAND chipnek 2048 blokkja van, 2048*0.02=40.96, tehát a hibás blokkok száma nem haladja meg a 40-et. De hol jelennek meg a rossz blokkok, akár folytonosak vagy véletlenszerű, nincs garancia.
2.5 A rossz blokkok hatása a jó blokkra
A rossz blokk nem befolyásolja a jó blokkok teljesítményét, mert a kiválasztott kapuk elválasztják a bitvonalaktól)
2.6 Rossz blokkok észlelése
Ezeken a „rossz blokkokként” megjelölt blokkon „törlés” műveletet hajtanak végre. Ha a Block Erase hiba lép fel, az azt bizonyítja, hogy a blokk valóban rossz blokk.
2.7 Megjegyzések a törlési művelethez
Valójában a megjelölt rossz blokkokat is törölhetjük. Az ilyen módon történő erőszakos törlés után a rossz blokkinformáció már nem létezik. Gyári hibás blokkok esetén általában nem javasolt a megjelölt információk törlése.
Az UBOOT-ban van egy "nand scrub" nevű parancs, amely törli a blokk összes tartalmát, beleértve a rossz blokkjelet is, függetlenül attól, hogy a gyári vagy az új jelölés jelenik meg a későbbi használat során. Általában nem ajánlott ezt használni. Amikor a NAND FLASH gyárat gyártják, a NAND rossz blokkokat viszonylag széles hőmérséklet- és feszültségtartományban tesztelik és jelölik. Ezek a hibás blokkok bizonyos hőmérsékleten vagy feszültség alatt továbbra is működhetnek, de a körülmények megváltozásakor máskor is módosíthatók. kudarc, potenciálisan ketyegő időzített bombává válik. Ha az eredeti gyár által megjelölt hibás blokkokat töröljük, könnyen szembesülhetünk az adatvesztés problémájával az adatok írása és mentése során.
Jobb a "nand erase"-t használni, ha csak a jó blokkokat szeretné törölni, a már rossz blokkoknak jelölt blokkoknál ne törölje.
3 Rossz blokkkezelés
Az eszköz vagy a FLASH vezérlője kezeli a hibás blokkokat, ez a BBM (Bad Block Management). Ezt később adjuk hozzá.
Megjegyzés
1 Miért van egy jó blokk 0xff-el jelölve: mivel a Nand Flash törlésével a megfelelő blokk összes bitje 1-re változik, az írási művelet során a chip minden bitje csak 1-ről változtatható hogy 0, de nem. Változás 0-ről 1-re. Az 0XFF azt jelenti, hogy az összes törölhető 11111111-re. Azt jelzi, hogy sikeresen törölhető, és ez egy jó blokk.
———————————————
Szerzői jogi nyilatkozat: Ez a cikk "Alexander{{0}}Lai" CSDN-blogger eredeti cikke, és követi a CC 4.0 BY-SA szerzői jogi megállapodást. Kérjük, csatolja az eredeti forrás hivatkozását és ezt a nyilatkozatot az újranyomtatáshoz.







