Nand Flash iPhone - mitä nämä virheet ovat ja kuinka korjata ne? Ohjelmointi NAND FLASH

2017-05-25 Viimeisin muokkauspäivä: 2018-10-10

Artikkelissa käsitellään: Mikropiirien käytön ominaisuudet NAND FLASH,menetelmät sivun asettelua ja huonoa lohkonhallintaa varten. Suosituksia ohjelmoijille ohjelmoijien avulla.

SISÄLLYS:

1. TEORIA

1.1. Ero NAND FLASH -sirujen ja perinteisten sirujen välillä

Jos et perehdy tekniikan monimutkaisuuteen, niin mikropiirien välinen ero NAND muista muistipiireistä on seuraava:

  • Mikropiirit NAND on erittäin suuri määrä.
  • Mikropiirit NAND voi olla huonot (huonot) lohkot.
  • Sivun koko levyjä ei ole 2:n potenssi .
  • Kirjoittaminen sirulle toteutettu vain sivuja , poistaminen - ainakin lohkoissa .

Eroja on muitakin, mutta kaksi ensimmäistä ominaisuutta ovat tärkeitä. Aiheuttaa eniten ongelmia huonojen lohkojen läsnäolo.

1.2. NAND FLASH -sirujen järjestäminen

Lisätietoja mikropiirien organisaatiosta ja rakenteesta NAND voidaan lukea erikoiskirjallisuudesta, mutta huomaamme, että:

  • Mikropiirit NAND järjestetty sisään sivuja (sivuja), sivuja sisään lohkot (bloks), sulkeutuu sisään loogiset moduulit (lun).
  • Sivun koko NAND ei 2:n kerrannainen.
  • Sivu koostuu perus Ja varaa (varaa) alueita.

Kehittäjien mukaan NAND Vydinalue on sijoitettava itse tiedot, A vara-alueella - huonot lohkomerkit, tarkistussummat pääalue, muu omistusoikeudellisia tietoja.

Jos he puhuvat sivun koko NAND-sirut 512 tavu tai 2K tavu siis me puhumme O pääalueen koko sivuja, pois lukien varaa.

1.3. Sivun vara-alueen käyttötavat

Muistutetaan vielä kerran, että NAND-sirujen kehittäjien suunnitelmien mukaan vara-alueella pitäisi sijaitsee: huonot lohkomerkit, tarkistussummat päätietoalue, muu palvelutiedot.

Useimmat kehittäjät vain kuvaavat sijainti huonot lohkomerkit mukana toimitetuissa mikropiireissä. Muut vara-alueen käytön näkökohdat annettu yleisiä suosituksia ja algoritmi ECC:n laskemiseksi, yleensä Hamingin mukaan. Samsung menee hieman pidemmälle kehittämällä suosituksia nimeltä " Vara-NAND-flash-muistialue. Käyttötarkoitusstandardi "("NAND Flash Spare Area. Assignment Standard", 27. huhtikuuta 2005, Memory Division, Samsung Electronics Co., Ltd).

Tämä standardi siis olettaa seuraavaan käyttöön vara-alue:

Siruille, joiden sivukoko on 2048+64 tavua t sivun pää- ja vara-alueet on jaettu 4 osaan (sektoriin) kukin:

AlueKoko (tavu)Fragmentti
Main512 Sektori 1
512 Sektori 2
512 Sektori 3
512 Sektori 4
Varaosat16 Sektori 1
16 Sektori 2
16 Sektori 3
16 Sektori 4

Jokainen fragmentti niiden pääalue on yhteensopiva vara-alueen fragmentti.

Vara-alueen käyttäminen (jokaiselle neljälle fragmentille)
siruille, joiden sivukoko on 2048+64 tavua:
Bias
(tavu)
Koko
(tavu)
TarkoitusKuvaus
Merkki huono blokki
Varattu
Looginen sektorinumero
Varattu sektorinumerolle
Varattu
Pääsivualueen ECC-koodi
Loogisen sektorinumeron ECC-koodi
Varattu

Mutta tämä ei ole ainoa "standardi" sivumuistin varaamiseen, vain me tunnemme niitä useita kymmeniä, esimerkiksi:

  • "NAND FLASH -hallinta WinCE 5.0:ssa ", NXP;
  • "Huono lohkohallinta NAND Flashille NX2LP:llä ", 15. joulukuuta 2006, Cypress Semiconductor;
  • "OLPC NAND Bad Block Management ", OLPC.

1.4. NAND-kuva ja binäärikuva

Saatat kohdata kaksi vaihtoehtoa kuva tallennettavaksi:

  1. Binääritiedosto ei rikki sivuille ja ilman vara-aluetta.
    Tämä vaihtoehto on mahdollista, jos olet käyttävä laitekehittäjä NAND tai saanut sellaisen tiedoston kehittäjältä. Tämä kuva sopii kirjoittamiseen mikropiireihin, joissa on minkä kokoisia sivuja tahansa ja mikä tahansa vara-alueen jakautuminen, sinun on vain tiedettävä, millä menetelmällä vara-alue muodostetaan.
  2. Toisesta mikropiiristä (näytteestä) luettu kuva, joka sisältää vara-alueen huonojen lohkojen merkinnöillä, huoltotiedoilla ja ohjauskoodeilla.
    Tämä kuva voidaan kirjoittaa vain siruksi kanssa täsmälleen samat mitat sivuja ja lohkoja.

Erilaisia ​​laitteita korjaavat asiantuntijat kohtaavat usein toisen tapauksen. Tällaisessa tapauksessa on usein vaikea määrittää käytettävää vara-alueen allokointimenetelmää ja käytettyä huonoa lohkonhallintamenetelmää.

1.5. Huonojen lohkojen tehdasmerkintä

Ainoa asia, joka on enemmän tai vähemmän standardoitu, on huonojen lohkojen tehdasmerkintä.

  • Huonot lohkot on merkitty päällä 0. tai 1. sivu siruille, joiden sivukoko on alle 4K.
  • varten 4K sivuja ja enemmän, merkintä voi olla päällä viimeinen sivu lohko.
  • Itse huono lohkomerkki sijaitsee sivun vara-alueella 5. tavussa pienille sivuille (512 tavua) ja 0. tavulle suurille sivuille (2K).
  • Huono lohkomerkki voi olla merkitystä 0x00 tai 0xF0 pienille sivuille Ja 0x00 lisää X.
  • Hienoja lohkoja aina merkitty 0xFF.
  • Joka tapauksessa merkitys eri kuin 0xFF ohjelmoija näkee huono lohkomerkki.
  • Yleensä modernissa NAND huono lohko täytetään kokonaan arvolla 0x00.

On yksi ongelma: huono lohko voidaan poistaa. Tällä tavalla voit menettää tietoja huonoista sirulohkoista.

Jos mikropiiri on kuitenkin jo toiminut laitteessa, tätä huonojen lohkojen merkitsemismenetelmää ei aina käytetä. Joskus jopa huonoja lohkotietoja ei tallenneta NAND-muistiin. Mutta useammin kuin ei, vaikka kehittäjä ohjelmisto Laite käyttää erilaista järjestelmää huonojen lohkojen hallintaan, se ei halua poistaa tehdasmerkintöjä.

1.6. Huono lohkonhallinta

Kehittäjät NAND mikropiirit ehdottavat seuraavien huonojen lohkoohjausjärjestelmien käyttöä:

  • Syöttö huonot lohkot
  • Käyttö varaa alueella

Myös huonojen lohkojen hallintamenetelmiin kuuluu joskus käyttö virheen korjaus(ECC). On huomattava, että yksittäisen virheen korjauksen käyttö ei poista useita virheitä, vaan pakottaa sinut silti käyttämään jotakin yllä olevista menetelmistä. Tämän lisäksi suurin osa NAND siruilla on taattu virheetön alue, jossa huonoja lohkoja ei esiinny. Virheetön alue sijaitsee yleensä sirun alussa.

Nämä menetelmät huonojen lohkojen hallintaan on kuvattu hyvin tekninen dokumentaatio valmistajat NAND ja niistä keskustellaan laajasti käyttöä koskevassa kirjallisuudessa NAND. Muistakaamme kuitenkin lyhyesti niiden olemuksen:

Ohita huonot lohkot:
Jos nykyinen lohko osoittautuu vialliseksi, se ohitetaan ja tiedot kirjoitetaan seuraavaan vapaaseen lohkoon. Tämä järjestelmä on universaali, helppo toteuttaa, mutta hieman ongelmallinen tapauksissa, joissa huonoja lohkoja ilmenee käytön aikana. varten täysipainoista työtä Tässä järjestelmässä looginen lohkonumero on tallennettava lohkon sisään (Samsungin standardi vara-alueen määrittämiseksi itse asiassa olettaa tämän). Työskennellessään tämän kaavion mukaisesti ohjaimen on tallennettava jonnekin vastaavuustaulukko lohkojen loogisten lukumäärien ja fyysisiä numeroita muuten muistin käyttö hidastuu huomattavasti.

Siksi looginen kehitys on järjestelmä vara-alueen käyttöä:
Tämän menetelmän mukaan koko muisti on jaettu kahteen osaan: pää- ja varmuuskopioon. Kun päämuistiin ilmestyy huono lohko, se korvataan varamuistin lohkolla ja tehdään vastaava merkintä lohkon uudelleenjakotaulukkoon. Uudelleenmääritystaulukko tallennetaan joko taatussa vikasietoisessa lohkossa tai useissa kopioissa. Taulukon muoto on erilainen, se on tallennettu eri paikoissa. Samsung kuvaa jälleen standardin taulukon muodosta ja asettelusta, mutta harvat ihmiset noudattavat sitä.

2. HARJOITTELU

2.1. NAND-sirun huonojen lohkojen skannaus

Ohjelmoija ChipStar mahdollistaa mikropiirin nopean skannauksen NAND huonojen lohkojen esiintymisestä huonojen lohkojen tehdasmerkintöjen mukaisesti.

Valitse valikon kohta " Chip|Etsi huonoja lohkoja ", siru tarkistetaan huonojen lohkojen varalta. Tulos näytetään taulukkomuodossa.

Tämä toiminto on tarpeen vain, jos haluat vain tarkastella huonojen lohkojen luetteloa. Kaikissa muissa tapauksissa huonojen lohkojen haku suoritetaan automaattisesti tarvittaessa.

2.2. Huonot lohkot NAND-kuvassa

Lukeessaan NAND-sirun kuvaa ohjelmoija tallentaa lisäksi tietoa sirun sivusta ja lohkokoosta. Tiedot tallennetaan sisään erillinen tiedosto. Joten jos laskit ja tallensit sirukuvan tiedostoon <имя_файла>.nbin ohjelma luo toisen tiedoston: <имя_файла>.cfs . Kun avaat tiedoston <имя_файла>.nbin tiedosto <имя_файла>.cfs luetaan samalla tavalla. Tiedostossa <имя_файла>.cfs tiedot sirun sivusta ja lohkokoosta tallennetaan. Kun olet lukenut sirun tai avannut tiedoston, kuten .nbin , kuvan taustaskannaus suoritetaan virheellisten lohkojen havaitsemiseksi sivua ja lohkon kokoa koskevien tietojen perusteella.

Vaihtoehdot NAND ja tiedot huonoista lohkoista löytyvät "välilehdestä" NAND"ohjelmoijaeditori:

Binäärikuva NAND voi katsoa "välilehdeltä" Päämuisti ":

Editointitilassa NAND sivun vara-alue on varattu himmeämpi väri, painikkeet sivuilla, lohkoissa ja nopea siirtyminen vara-alueen alkuun nykyinen sivu. Kohdistimen osoitteen lisäksi näkyy myös editorin tilarivi sivunumero Ja lohkon numero missä kohdistin sijaitsee. Kaiken tämän avulla voit kätevämmin tarkastella mikropiirin sisältöä.

2.3. NANDin poistaminen

Oletusohjelmoija ei pyyhi huonot lohkot, mutta jos poistat vaihtoehdon käytöstä " Huonojen lohkojen tarkistaminen ja ohittaminen " huonot lohkot voidaan pyyhkiä pois ja huonot lohkomerkinnät voivat kadota. Poista tämä vaihtoehto käytöstä vain tarvittaessa.

Vain tehdasmerkintöjen mukaisesti merkityt huonot lohkot ohitetaan. Jos laite käyttää eri merkintää huonoille lohkoille, ne poistetaan, koska ohjelmointiohjelmisto ei näe niitä. Ohjelmoija voi käyttää ulkoisia laajennuksia työskennelläkseen epästandardien huonojen lohkoasettelujen kanssa.

2.4. Mikropiirin testaus tallennuksen puutteen varalta

Oletuksena ohjelmoija jättää huomioimatta kaikki huonot lohkot tarkistaessaan, mutta jos poistat vaihtoehdon " Skannaa ja ohita huonot lohkot "Huonoja lohkoja testataan, mikä luonnollisesti johtaa testausvirheisiin.

2.5. Valmiin kuvan kirjoittaminen sirulle

Kuvan polttaminen NAND mikropiirissä eroaa hieman tavanomaisista FLASH mikropiirit Ensinnäkin niiden on vastattava sivukoot kuva ja kohdesiru. Jos ohjausta käytetään, huonojen lohkojen on täsmättävä lohkojen koot kuva ja mikropiiri.

Ohjelmisto kaikille ohjelmoijille ChipStar tukee kolme tapaa hallita huonoja lohkoja sisäänrakennetut työkalut ja rajoittamaton määrä laajennuksia. Lisäksi voit asettaa kirjoitettavien lohkojen määrän sirun alussa, mikä itse asiassa on neljäs tapa hallita huonoja lohkoja.

Tapa 1: Huonojen lohkojen huomioiminen

Yksinkertainen kopiointi, huonot lohkot huomioimatta (huonot lohkot kirjoitetaan samalla tavalla kuin normaalit).

Alkuperäinen kuva Siru
(alkutila)
Siru
(tulos)
Lohko 0
hyvä
Lohko
puhdas
Lohko 0
hyvä
Lohko 1
huono
Lohko
puhdas
Lohko 1
väärä
Lohko 2
hyvä
Lohko
puhdas
Lohko 2
hyvä
Lohko 3
hyvä
Lohko
huono
Lohko 3
viallinen
Lohko 4
hyvä
Lohko
puhdas
Lohko 4
hyvä
Ennätysraja
Lohko 5
hyvä
Lohko
puhdas
Lohko
puhdas

Sopii parhaiten NAND-sirujen kopioimiseen siihen perehtymättä sisäinen rakenne, edellyttäen, että siru kirjoitetaan ei sisällä huonoja lohkoja . Jos alkuperäisessä kuvassa siellä oli huonoja lohkoja , lopulta muoto vääriä huonoja lohkoja . Väärien huonojen lohkojen esiintyminen ei vaikuta laitteen toimintaan. Jos siru kuitenkin sisältää jo huonoja lohkoja, kun yrität kirjoittaa sellaiselle sirulle, huonot lohkot arvaamattomilla seurauksilla. Vinkki: voit yrittää poistaa koko sirun, mukaan lukien huonot lohkot, ja kopioida sen. Jos huonoon lohkoon kirjoittaminen onnistuu (näin tapahtuu usein), laitteesi toimii jatkossa oikein, laiteohjelmisto tunnistaa huonon lohkon ja korvaa sen toiminta-algoritminsa mukaisesti.

Tapa 2: Ohita huonot lohkot

Alkuperäinen kuva Siru
(alkutila)
Siru
(tulos)
Lohko 0
hyvä
Lohko
puhdas
Lohko 0
hyvä
Lohko 1
huono
Lohko
puhdas
Lohko
puhdas
Lohko 2
hyvä
Lohko
puhdas
Lohko 2
hyvä
Lohko 3
hyvä
Lohko
huono
Lohko
huono
Lohko 4
hyvä
Lohko
puhdas
Lohko 4
hyvä
Ennätysraja
Lohko 5
hyvä
Lohko
puhdas
Lohko
puhdas

Kun ohitetaan huonot lohkot huonoja lohkoja ei tallenneta alkuperäinen kuva Ja tietoa ei kirjoiteta huonoihin sirulohkoihin. Tämä ei ole paras kopiointikäytäntö, mutta se on turvassa huonoja sirulohkoja vastaan: mitään tietoa ei häviä huonoista sirupaloista ja vääriä huonoja lohkoja ei näy. Joissakin tapauksissa tällainen kopiointikäytäntö voi auttaa palauttamaan tuntemattoman laitteen toiminnan.

Tapa 3: Ohita huonot lohkot

Alkuperäinen kuva Siru
(alkutila)
Siru
(tulos)
Lohko 0
hyvä
Lohko
puhdas
Lohko 0
hyvä
Lohko 1
huono

Lohko
puhdas
Lohko 2
hyvä
Lohko 2
hyvä
Lohko
puhdas
Lohko 3
hyvä
Lohko 3
hyvä
Lohko
huono
Lohko
huono
Lohko 4
hyvä
Lohko
puhdas
Lohko 4
hyvä
Ennätysraja
Lohko 5
hyvä
Lohko
puhdas
Lohko
puhdas

Kirjoita ohittamalla huonoja lohkoja olettaa, että laite käyttää juuri tätä algoritmia huonojen lohkojen hallintaan, ei mitään muuta. Näissä olosuhteissa tietojen oikea kopiointi taataan.

Tapa 4: Kirjoita vain taattu häiriötön alue

Alkuperäinen kuva Siru
(alkutila)
Siru
(tulos)
Lohko 0
hyvä
Lohko
puhdas
Lohko 0
hyvä
Lohko 2
hyvä
Lohko
puhdas
Lohko 1
hyvä
Ennätysraja
Lohko
huono
Lohko
puhdas
Lohko
puhdas
Lohko 3
hyvä
Lohko
huono
Lohko
huono
Lohko 4
hyvä
Lohko
puhdas
Lohko
puhdas
Lohko 5
hyvä

Lohko
puhdas

Lohko
puhdas

Useimmissa moderneissa NAND mikropiirejä, ensimmäisillä lohkoilla (ainakin yhdellä) ei taatusti ole vikoja. Monissa laitteissa käynnistyslataimen koodi sijaitsee sirun alussa ja käyttöjärjestelmä laitteita. Pelkästään näiden alueiden kopioiminen riittää usein.

Määritä tallennustilan asetusten valintaikkunassa tallennuskoko lohkoina.

Muita tapoja hallita huonoja lohkoja

Ohjelmisto ChipStar-ohjelmoijat tukee kaikkia huonoja lohkonhallintaalgoritmeja NAND käyttämällä ulkoisia liitännäisiä. Saatavuudesta riippuen asennettuja laajennuksia kuvaukset lisämenetelmiä näkyvät luettelossa" Huonojen NAND-lohkojen hallinta ". Voit määrittää valitun menetelmän parametrit napsauttamalla " -painiketta Ulkoinen laajennus ".

Error Correcting Codes (ECC)

Virheenkorjauskoodien käyttö mahdollistaa palauttaa yksittäiset virheet NAND-sivulla.

Erilaisia ​​algoritmeja voidaan käyttää sektorin yksittäisten virheiden palauttamiseen. Riippuen algoritmista ECC, voidaan palauttaa erilaisia ​​määriä virheitä sektoria kohti (512+16 tavua). termillä " sinkku "ymmärretään virhe vain yhdessä bitissä tiedot. NANDille, jonka sivukoko on 512+16 tavua, käsite " alalla" ja " sivu" ottelu. NANDille suuri koko ChipStar-sivuohjelmoija käyttää sivun asettelumallia sektoreihin kuvatulla tavalla. Tallennus- tai vahvistusasetuksissa voit määrittää, kuinka monta virhettä sektoria kohden laitteessasi käytetty algoritmi voi korjata. Vastaavasti mikropiirejä, joissa on hyväksyttävä määrä virheitä, ei hylätä tiedot korjattavien virheiden määrästä näytetään tilastoikkunassa:

Tietoja sallittujen virheiden määrästä sektoria kohti kullekin tietylle sirulle löytyy osoitteesta dokumentaatio per siru. Kaikki äskettäin lisätyt NAND-sirut syötetään ohjelmointitietokantaan ottaen huomioon sallittujen virheiden määrä.

Lisättäessä itsenäisesti mikropiirit:

  • Jos ONFI tuettu, sitten sallittu virhemäärä sektoria kohti lukea mikropiirin parametritaulukosta ja on asennettu haluttuun arvoon.
  • jos mikropiiri ei tue ONFIa, käyttäjä pitää asettaa arvo itse, käyttämällä sirun dokumentaatiota.

Uusille mikropiireille NAND tuotantoon Samsung sektorikohtaisen virheiden sallitun määrän arvo on koodattu osaksi sirutunnistetta. Siksi tällaisille mikropiireille myös sallittu virhemäärä sektoria kohti asetetaan oikein.

Kun luet mikropiirin sisältöä sen tallentamista tai kopioimista varten, yksittäisiä virheitä ei voida havaita luotettavasti. Tuloksena oleva kuva voidaan sitten analysoida erikseen virheiden varalta laskemalla ECC-tarkistuskoodit ulkoinen sovellus, edellyttäen että tarkalleen käytetty algoritmi ja sivun asettelu tunnetaan .

ChipStar-ohjelmointiohjelmisto tarjoaa epäsuoraa tilastollinen menetelmä yksittäisten virheiden tunnistaminen ja poistaminen. Menetelmä mahdollistaa vain tunnistamisen epävakaa virheitä kanssa ei taata luotettavuus. Jos haluat suorittaa lukemisen virheentunnistuksen kanssa, sinun on valittava " Valikoivaa lukemista" ja "NAND"-välilehdellä, valitse " Ota virheenkorjaustila käyttöön"

Voit määrittää lukujen uudelleenyritysten määrän vertailua varten ja lukujen uudelleenyritysten kokonaismäärän virheen ilmetessä. On syytä pitää mielessä, että käyttö tätä menetelmää olento hidastaa lukuprosessia.

Tilastollinen virheentunnistusalgoritmi toimii seuraavasti:

  1. NAND-sivu luetaan useita kertoja peräkkäin (vähintään kolme).
  2. Luettua dataa verrataan tavu kerrallaan.
  3. Jos vertailuvirheitä ei havaita, sivun oletetaan olevan virheetön.
  4. Jos vertailussa havaitaan virheitä, sivu luetaan vielä useita kertoja.
  5. Jokaiselle virheelle lasketaan lukujen määrä. yksiköitä Ja nollia.
  6. Oikeaksi arvoksi ("0" tai "1") katsotaan se, jota on enemmän.

Algoritmi toimii hyvin, jos virheen todennäköisyys mikropiirin tietyssä bitissä on pienempi kuin 0,5. Mikropiiriä luettaessa lasketaan "korjatut" virheet ja oikean lukemisen todennäköisyys.

2.6. Binäärikuvan muuntaminen NAND-kuvaksi

Kaikki edellä kuvattu koski enemmänkin kopioimista NAND ja mikropiirimalliin perustuvat tallenteet, mutta se on usein välttämätöntä kirjoita ohjelman alkuperäinen binäärikuva tyhjälle sirulle. Sinun on muunnettava ennen tallennusta binäärikuva NAND-kuvaan lisäämällä jokaiselle sivulle vara-alue ja täytä se oikein. Voit tehdä tämän avaamalla binääritiedosto, valitse valikosta kohta " ". Näyttöön tulee valintaikkuna:

Aseta NAND-muunnostila: " Binäärikuva... ", määritä sivu ja NAND-lohkon koko tai valitse haluttu siru. Valitse vara-alueen muoto. Ohjelmoija tukee yksinkertaista alueen täyttämistä FF-arvoilla sisäänrakennetuilla työkaluilla ja muilla menetelmillä plug-inien avulla. A plug-in toimitetaan ohjelmoijan mukana, joka toteuttaa Samsungin suosittelemat vara-aluemääritykset.

Jos sinun on toteutettava jokin eri jakeluvaihtoehto - kerro meille, niin valmistelemme sopivan laajennuksen tai voit toteuttaa tarvittavan laajennuksen itse.

2.7. Yhteensopiva muiden ohjelmoijien lukemien NAND-kuvien kanssa

Jos sinulla on NAND-kuva, jonka toinen ohjelmoija on lukenut tai saanut toisesta lähteestä, sen täytyy olla muuntaa tallennusta varten sopivaan muotoon ChipStar ohjelmoija.

Voit tehdä tämän seuraavasti:

  • Avaa tiedosto, valitse valikkokohta " Muokkaa | Vaihda NAND-editoritila ". Näkyviin tulee yllä olevan kuvan mukainen valintaikkuna.
  • Aseta muunnostila muotoon NAND: "Kuva on jo NAND... ", osoita sivun koko Ja lohko NAND tai valitse haluamasi siru. napsauta " Jatkaa".
  • Muokkausohjelmaan tulee välilehti " NAND " ja kuva alkaa etsiä virheellisiä lohkoja.
  • Tuloksena oleva tiedosto voidaan tallentaa muodossa NAND, tiedosto saa laajennuksen .nbin oletuksena.

varten onnistunut työ mikropiirien kanssa NAND FLASH(nand flash) tarvitset ainakin:

    Onko sinulla käsitys NAND FLASH:n rakenteesta (nand flash), olemassa olevia menetelmiä ja algoritmit sellaiseen muistiin tallennetun tiedon käyttämiseksi.

    Sinulla on ohjelmoija, joka tukee oikein NAND Flash -muistin kanssa työskentelyä, ts. voit valita ja toteuttaa tarvittavat parametrit ja käsittelyalgoritmit.

NAND FLASH -ohjelmoijan on oltava erittäin nopea. Usean Gbitin tilavuuden omaavan mikropiirin ohjelmointi tai lukeminen perinteisellä ohjelmoijalla kestää useita tunteja. Ilmeisesti enemmän tai vähemmän säännöllistä NAND Flashin ohjelmointia varten tarvitset erikoistuneen nopean ohjelmoijan, joka on mukautettu työskentelemään MS:n kanssa. korkea tiheys. Nykyään nopein Flash NAND -ohjelmoija on ChipProg-481.

NAND FLASH -ohjelmointi ChipProg-ohjelmoijille

Kun työskentelet NAND Flashin kanssa, ohjelmoija tarjoaa laajan valikoiman vaihtoehtoja ohjelmointimenetelmien ja parametrien valitsemiseen/konfigurointiin. Kaikki parametrit, jotka vaikuttavat ohjelmoijan toiminta-algoritmiin mikropiirin kanssa, näkyvät "Mikropiiriparametrien ja ohjelmointialgoritmin editori" -ikkunassa. Tarvittaessa mitä tahansa näistä parametreista voidaan muuttaa siten, että valittu toiminto (ohjelmointi, vertailu, lukeminen, poistaminen) suoritetaan algoritmin mukaan halutulle käyttäjälle ohjelmoija

Ikkuna "Sirun parametrien ja ohjelmointialgoritmin editori" ohjelmointiliittymässä NAND Flashia ohjelmoitaessa.

Suuri määrä muokattavissa olevia parametreja, jotka muodostavat toiminta-algoritmin NAND-ohjelmoija Flashin taustalla on halu tarjota universaali työkalu, jonka avulla käyttäjä voi toteuttaa täysin kaikki NAND Flash -rakenteen ominaisuudet. Elämän helpottamiseksi ChipProg-481-ohjelmoijat tarjoavat seuraavat vaihtoehdot valitessaan mitä tahansa NAND Flash -sirua:

  • Kaikki parametrit ottavat arvot, jotka on asetettu valitun NAND Flashin edellisessä ohjelmointiistunnossa (istunnossa). (tallennettujen istuntojen määrä on rajoittamaton).
  • Kaikki parametrit ottavat tietylle NAND Flashille määritetyt arvot "projektissa" ("projektien" lukumäärä on rajoittamaton)
  • Kaikki parametrit ottavat automaattisesti vaaditut arvot "skriptin" suorittamisen jälkeen. "Skriptit" kirjoitetaan ohjelmoijan kuoreen sisäänrakennetulla C-kielellä.
  • Kaikki (tai valitut) parametrit saavat oletusarvot.
  • Kaikkien parametrien arvot ovat muokattavissa graafinen käyttöliittymä ohjelmoija

Katsotaanpa ohjelmoijassa toteutettuja ohjelmointitiloja ja parametreja.

Ohjelmointitilat.

  1. Virheellinen lohkohallinta
  2. Vara-alueen käyttö
  3. Vartioi kiinteää aluetta
  4. Suvaitsevainen vahvistusominaisuus
  5. Virheellinen eston merkintävaihtoehto

1. Huonojen lohkojen käsittely.

Ennen kuin ohjelmoit NAND Flashin, voit/pitäisi valita jokin menetelmistä huonojen lohkojen kanssa työskentelyyn.

2. Vara-alueen käyttö.

Älä käytä

Vara-aluetta ei käytetä sirussa. Muistisivut ohjelmoidaan mikropiiriin ottamatta huomioon vara-aluetta.

Käyttäjätiedot

Vara-aluetta käytetään mm käyttäjän muistia. Tässä tapauksessa mikropiiriä ohjelmoitaessa puskurin tiedot sijoitetaan ensin mikropiirin pääsivulle ja sitten lisävara-alueelle. Tässä tapauksessa ohjelmointipuskuri näyttää jatkuvalta sirun pääsivujen ja niihin kiinnitettyjen vara-alueiden virtaukselta.

Käyttäjätiedot, joissa on IB-tiedot pakotettu

Vara-alue tulkitaan samalla tavalla kuin edellisessä tapauksessa, paitsi että käyttäjätietojen sijasta kirjoitetaan huonot lohkomerkit.

3. Vartioi kiinteää aluetta

Käyttötapa erikoisalue ei huonoja lohkoja. Tyypillisesti tällaisia ​​alueita käytetään mikroprosessorin käynnistyslataintena. Huonojen lohkojen käyttö ei ole sallittua tällä alueella.
Vaihtoehtoa käytetään yhdessä seuraavien parametrien kanssa:

  • Kiinteä alue - Aloituslohko - alueen alkulohko ilman huonoja lohkoja.
  • - lohkojen lukumäärä tällä alueella.

Jos määritetyllä alueella Kiinteä alue Jos kohtaat huonon lohkon, ohjelmoija luo virheen.

4. Ei herkkä vertailuvirheille.

Tämän vaihtoehdon avulla voit ottaa käyttöön tilan, joka ei ole herkkä vertailuvirheille.
Yleensä tätä vaihtoehtoa on järkevää käyttää, jos käyttäjän laite käyttää virheenhallinta- ja korjausalgoritmeja (ECC). Näissä tapauksissa tietty määrä virheitä sallitaan tietyn kokoiselle tietojoukolle. Nämä parametrit on ilmoitettu NAND Flash -ohjelmointialgoritmin parametreissa:

  • ECC-kehyksen koko (tavuja) - tietotaulukon koko.
  • Hyväksyttävä määrä virheitä - yksibittisten virheiden sallittu määrä.

5. Virheellinen eston merkintävaihtoehto.

Tämä vaihtoehto valitsee tiedot, joita käytetään huonona lohkomerkinnänä. Voit valita joko arvon 00h tai 0F0h.

  • IB-indikaatioarvo~00 tai F0

Ohjelmointivaihtoehdot.

  1. Käyttäjäalue
  2. Kiinteä alue
  3. RBA-alue
  4. ECC-kehyksen koko
  5. Hyväksyttävä määrä virheitä

a.Käyttäjäalue.

Käyttäjäalue on sirun alue, jolla Ohjelmointi-, Luku- ja Vertailumenettelyt toimivat.
Erase and Cleanlines Control -toiminnot toimivat koko siruryhmän kanssa.

Käyttäjän on asetettava seuraavat parametrit:

  • Käyttäjäalue - Aloituslohko - käyttäjäalueen alkulohko.
  • Käyttäjäalue - Lohkojen määrä - lohkojen lukumäärä käyttäjäalueella.

b. Virheetön alue.

Guard Solid Area -tilan parametrit.

  • Kiinteä alue - Aloituslohko - alueen alkulohko ilman huonoja lohkoja.
  • Kiinteä alue - Lohkojen lukumäärä - lohkojen lukumäärä tällä alueella.

c. RBA-sijoitusalue.

  • RBA-alue - Aloituslohko - alkulohko RBA-pöydät.
  • RBA-alue - Lohkojen lukumäärä - RBA-taulukon lohkojen lukumäärä.

d.ECC-kehyksen koko .

  • ECC-kehyksen koko- parametri, joka määrittää sen datataulukon koon, jossa yksibittiset virheet ovat sallittuja.

e. Virheiden sallittu määrä.

  • Hyväksyttävä määrä virheitä - parametri määrittää taulukossa sallittujen yksibittisten virheiden määrän, jonka koon määrittää ECC Frame size -parametri.

Huono lohkokartta

Virheellinen lohkokartta luodaan Invalid Block Map -alikerrokseen. Lohkokartta esitetään yhtenäisenä bittijonona. Hyviä lohkoja edustaa arvo 0, huonot lohkot arvolla 1.

Esimerkiksi arvo 02h osoitteessa nolla osoittaa, että lohkot 0,2,3,4,5,6,7 ovat hyviä, lohko 1 on huonoja. Arvo 01h ensimmäisessä osoitteessa osoittaa, että vain 8. lohko on huono lohkoryhmästä 8...15.

Kopioidaan NAND Flashia

Havainnollistaaksesi "näkevän" moodien ja parametrien valinnan tärkeyttä ohjelmoitaessa NAND Flashia ohjelmoijassa, harkitse tilannetta, jossa joillakin ohjelmoijilla on ongelmia. Useimmiten tämä korvaa NAND Flashin "laitteessa", joka on lakannut toimimasta. Standardi lähestymistapa- analogisesti tavanomaisen muistisirun vaihtamisen kanssa:

  1. Hanki toimivan mikropiirin laiteohjelmisto. Pääsääntöisesti tätä tarkoitusta varten sisältö luetaan alkuperäisestä mikropiiristä.
  2. Flash uusi vastaava mikropiiri.
  3. Vertaa ohjelmoitujen ms:n sisältöä. "alkuperäisellä" laiteohjelmistolla. Jos vertailu läpäisee, mikropiiri - kopio on valmis.

Siinä tapauksessa, että sinun on ohjelmoitava NAND Flash, kaikki ei ole niin yksinkertaista ja yksiselitteistä.

  1. Nand Flash -laiteohjelmisto, joka saadaan, kun ohjelmoija lukee sen "alkuperäisestä", riippuu merkittävästi ohjelmoijaan asennetuista tiloista ja parametreista.
  2. Ohjelmoidaksesi uuden NAND Flashin oikein ja saada täysi kopio, ennen ohjelmointia on tarpeen asettaa tilat ja parametrit ohjelmoijassa, jotka vastaavat "alkuperäistä" laiteohjelmistoa. Samalla on otettava huomioon huonojen lohkojen mahdollisuus.

Jos haluat hankkia kopiosirun, jonka NAND Flash -laiteohjelmisto on identtinen näytteen kanssa, sinun on toimittava seuraavasti.

Kopiointiin valmistautuminen.

Kopiointiin tarvitset alkuperäisen sirun ja kopiosirun (mikropiirin, johon alkuperäisen kuvan oletetaan olevan kirjoitettu). Pakolliset vaatimukset:

  1. Molempien NAND Flash -sirujen, alkuperäisen ja kopion, on oltava samaa tyyppiä.
  2. Kopiopiirissä ei saa olla huonoja lohkoja.

Jotta voit määrittää, onko kopiosirussa huonoja lohkoja, sinun on asennettava siru ohjelmoijaan ja asetettava Chip Parameters Editor -ikkunassa sirun oletusparametrit - "Kaikki oletus" -painike.

Poistonhallintaprosessi alkaa (ajan säästämiseksi voit peruuttaa tämän toimenpiteen välittömästi; huonojen lohkojen kartta luetaan heti alussa). Ohjelmointiliittymän "Ohjelmointi"-ikkunassa tiedot huonoista lohkoista näkyvät "Käyttötiedot"-kentässä.


Kopioidaan.

Ennen kuin kopioit NAND Flash -sirun ohjelmoijaan, seuraavat parametriasetukset on tehtävä Chip Parameters Editor -ikkunassa:

Virheellinen Block(IB) Management

ÄLÄ KÄYTÄ

Vara-alueen käyttö

Käyttäjätiedot

Käyttäjäalue – Lohkojen määrä

Lohkojen enimmäisarvo sirussa

NAND Flash -näyte asennetaan ohjelmoijaan ja luetaan. Sitten kopiosiru asennetaan ohjelmoijaan, poistetaan, kirjoitetaan ja verrataan. Jos kaikki kolme toimenpidettä suoritetaan onnistuneesti, ohjelmoitu NAND Flash osoittautuu täydelliseksi kopioksi alkuperäisestä.

NAND Flash-muistin rakenne.

NAND Flash-muisti * on jaettu muistilohkoihin, jotka puolestaan ​​on jaettu sivuille. Sivut voivat olla suuria (iso sivu) tai pieniä (pieni sivu). Sivun koko riippuu kokonaiskoko mikropiirit. Pienelle sivulle tyypillisiä siruja, joiden kapasiteetti on 128Kbit - 512Kbit. Suurikokoisten mikropiirien kapasiteetti on 256 Kbit - 32 Gbit ja enemmän. Pieni sivukoko on 512 tavua tavupohjaisilla siruilla ja 256 sanaa sanapohjaisilla siruilla. Suuri sivu sen koko on 2048 tavua tavupiireille ja 1024 tavua sanasiruille. IN viime aikoina ilmestyy vielä suurempia sivuja. Se on jo 4096 tavua tavupiireille.

STMicroelectronicsin pienellä sivulla olevien NAND Flash -mikropiirien muistirakenne.

STMicroelectronicsin suuren sivukoon mikropiirien muistirakenne.

Huonot NAND Flash -lohkot

NAND Flash -mikropiireille tyypillinen piirre on huonojen (viallisten) lohkojen (Bad blocks) esiintyminen sekä uusissa mikropiireissä että tällaisten lohkojen esiintyminen käytön aikana. Huonojen lohkojen merkitsemiseksi sekä lisäpalvelutietojen tai korjauskoodien tallentamiseksi NAND Flash -arkkitehtuuri tarjoaa ylimääräisen Vara-alueen jokaisen datamuistisivun lisäksi. Pienillä sivusiruilla tämä alue on 16 tavua/8 sanaa. Chipsille kanssa iso sivu- 64 tavua / 32 sanaa.

Tyypillisesti siruvalmistaja takaa, että huonojen lohkojen määrä ei ylitä tiettyä kokoa. Sirujen valmistaja toimittaa tiedot huonoista lohkoista tietyssä paikassa lisävara-alueella.

Huonojen lohkojen merkitseminen sisään NAND-sirut Flash tehdään yleensä kirjoittamalla arvo 0 tiettyyn osoitteeseen huonon lohkon nollasivun Vara-alueelle. Huonot lohkomerkit sijaitsevat sisällä tiettyjä osoitteita Vara-alue.

Muistin organisaatio

Huonojen lohkomerkkien osoite vara-alueella

Tavujärjestys, sivun koko - 512 tavua.

Sanajärjestely, sivukoko - 256 sanaa.

Tavujärjestys, sivun koko - 2048 tavua tai enemmän.

Sanajärjestely, sivukoko - 1024 sanaa tai enemmän.

Sinun on pidettävä mielessä, että huonot lohkomerkit sijoitetaan tavallisiin soluihin Flash-muisti Vara-alue, jotka poistetaan, kun koko muistilohko tyhjennetään. Siksi tietojen tallentamiseksi huonoista lohkoista on tarpeen tallentaa nämä tiedot ennen poistamista ja palauttaa ne poistamisen jälkeen.
ChipProg-ohjelmoinnissa lisävarustetta asennettaessa InvalidBlockManagement mihin tahansa arvoon paitsi Älä käytä Tietojen tallentaminen ja palauttaminen huonoista lohkoista tapahtuu automaattisesti.

On kolme yleisintä tapaa käsitellä huonoja lohkoja:

  1. Ohita huonot lohkot(Ohita huonot lohkot . )
  2. Varattu Block Area(Estä varaus)
  3. Virheiden tarkistus ja korjaus(Ohjaus ja virheenkorjaus . )

1. Ohita huonot lohkot.

Huonojen lohkojen ohituksen algoritmi on se, että sirulle kirjoitettaessa se analysoi, mihin lohkoon kirjoitetaan. Jos on huono lohko, tähän lohkoon ei kirjoiteta, huono lohko ohitetaan ja kirjoitus suoritetaan huonon lohkon jälkeen seuraavaan lohkoon.

2. Estä varaus.

Tässä menetelmässä koko mikropiirin muisti on jaettu kolmeen alueeseen: User Block Area (UBA) - käyttäjäalue, Block Reservoir - vara-alue välittömästi käyttäjäalueen jälkeen ja taulukko huonojen lohkojen yhdistämiseksi hyviin ( Varattu Block Area - RBA).

Algoritmi huonojen lohkojen korvaamiseksi tässä menetelmässä on seuraava: kun huono lohko tunnistetaan UBA-alueelta, lohko siirretään Block Reservoir -alueelle ja vastaava lohkokorvausmerkintä tehdään RBA-taulukkoon.

RBA-taulukon muoto:

2 tavua RBA-alue sisältää kaksi taulukkoa kahdessa lohkossa. Toisen lohkon taulukkoa käytetään varataulukkona siltä varalta, että ensimmäisen taulukon tiedot osoittautuvat epäluotettavaksi.

3. Virheenhallinta ja korjaus.

Tietojen luotettavuuden lisäämiseksi voidaan käyttää virheentarkistus- ja korjausalgoritmeja (ECC). Tämä lisätietoja mahtuu mukaan vapaata tilaa Vara-alue.

*) Huomautus: NAND ~ Ei JA - Boolen matematiikassa tarkoittaa "AND":n negaatiota

Hei kaikki! Juuri toissapäivänä tapasin vanhan ystäväni. Meidän piti puhua, ja hän sanoilla "Katso puhelinta, jolla kävelen nyt!", esitteli vanhaa. painonappi Nokia. Kävi ilmi, että hänen iPhonensa laiteohjelmisto kaatui jatkuvasti - hänen täytyi antaa älypuhelin palvelukeskus. Taitaa olla yleistä...

Palvelun suorittamien töiden luettelo osoittautui kuitenkin ystävälleni epätavalliseksi. Täydellinen diagnostiikka, ohjelmistopäivitykset (tarvittaessa) ja muut "tavalliset asiat" - kaikki on vakio ja selkeä täällä. Pääkysymyksen herätti tämä mestarin lause - "todennäköisimmin sinun täytyy rullata Nand Flash».

En tietenkään osoittanut palvelussa, että en ymmärtänyt, mistä he puhuivat - he sanovat, että tiedän jo kaiken ilman sinua. Pääasia on tehdä se. Mutta tulin kotiin ja menin heti Googleen - mikä tämä on, Nand Flash? Miksi ihmeessä minun pitäisi rullata sitä jonnekin iPhonen sisällä?

Nauroimme hänen kanssaan, erosimme tiestä ja ajattelin - miksi emme kirjoittaisi lyhyttä muistiinpanoa tästä aiheesta? Se ei vie paljon aikaa, ja ihmisille, jotka kohtaavat saman ongelman kuin ystäväni, tulee hieman selvempää, mitä heidän älypuhelimensa kanssa tapahtuu. Ajattelin - tein sen. mennään! :)

Mikä on Nand Flash iPhonessa?

Tämä sisäinen muisti laitteita. Kyllä, kyllä, sama asia, joka usein puuttuu iPhonen omistajat 16 Gt:lla.

Karkeasti sanottuna Nand Flash iPhone 7 32 Gt:ssa on sama 32 Gt sisäistä muistia.

Muisti sijaitsee pääosassa emolevy laite eikä erotu millään tavalla - tavallisin siru.

Luonnollisesti tämä ei ole lainkaan flash-asema - et voi purkaa iPhonea, irrottaa helposti Nand Flashia, asentaa toinen ja ajatella, että kaikki on "OK". Ei tule. On kuitenkin syytä mainita, että joissain tapauksissa tämä on silti mahdollista. Mutta siitä lisää vähän pidemmälle. Sillä välin mennään ongelmiin...

Toimintahäiriön syyt

Vaihtoehtoja ei ole kovin monia, ja ne kaikki ovat yleensä "vakiomuotoja":

  1. Laite putoaa.
  2. Muut fyysiset vauriot.
  3. Nesteen sisäänpääsy.
  4. Avioliitto.
  5. Karkaaminen.

Tässä ei ole mitään erityistä kuvattavaa - on selvää, että jos laite heitetään ja täytetään vedellä, tämä vaikuttaa sen suorituskykyyn.

Huomaan kuitenkin erikseen sellaisen kohdan valmistusvirheenä - tämä on myös erittäin mahdollista. Todistin samanlaista tilannetta - ostin juuri iPhonen, mutta se ei todellakaan toimi - se käynnistyy uudelleen, näyttää virheitä palauttaessaan ja käyttäytyy yleensä oudosti. Lähetimme sen huoltoon, seurauksena - Nand Flash -muisti oli viallinen ja laitteen myöhempi vaihto.

iPhonen Flash-muistivian oireet

Tällä toimintahäiriöllä ei ole selkeitä ja tarkkoja oireita (viesti ei ponnahdu näytölle - laitteessasi on muistiongelmia), joten kaikki tämä voidaan arvata vain epäsuorien merkkien perusteella:


Virheistä puheen ollen...

iTunes-virheet, jotka osoittavat Nand Flash -virheen

Useimmat oikea tapa torjua erilaisia ​​laitteen ongelmia. Jos iPhonella on kuitenkin ongelmia Nand Flash -muistin kanssa, palautusprosessi voi keskeytyä ja siihen voi liittyä seuraavat tyypilliset virheet:


Mutta on tärkeää muistaa tämä - iTunes on suunniteltu siten, että samalla virhenumerolla voi olla useita syitä.

Esimerkiksi virhe 4013 voi ilmoittaa sekä itse mikropiirin ongelmista että johdon epäalkuperäisestä käytöstä yhteyden muodostamisessa tietokoneeseen.

Kuten näette, leviäminen on erittäin suuri - yksinkertaisesta johdosta erittäin monimutkaiseen korjaukseen. Siksi voit käyttää tätä virheluetteloa tilanteen alustavaan analyysiin, mutta et voi sokeasti luottaa niihin.

Nand Flash -muistin korjaaminen - onko se mahdollista?

Ehkä. Mutta ei tietenkään "kotona". Lisäksi kaikki palvelukeskukset eivät pysty suorittamaan tätä toimintoa. Esimerkiksi "teltassa torilla" he eivät todennäköisesti voi auttaa sinua - siellä ei yksinkertaisesti ole tarvittavia laitteita. Ja jonkinlaista taitoa täytyy olla.

Huomautan vielä kerran erikseen - jos iPhonesi ei ole loppunut takuuaika(), silloin ei tarvitse keksiä mitään - . On suuri todennäköisyys, että saat vastineeksi uuden laitteen.

Jos takuu on "vika", mutta Nand Flash -muistin korjaus on edelleen tarpeen, huoltokeskuksella on kaksi vaihtoehtoa tilanteen korjaamiseksi:


Muuten, jos puhumme Nand Flash -laiteohjelmiston laitteista, tällaiset ohjelmoijat ovat melko erilaisia, mutta yksi asia yhdistää niitä silti - hinta. He kaikki seisovat kunnollinen raha- Kaikilla ei ole varaa sellaiseen.

Mitä johtopäätöksiä tästä kaikesta voidaan vetää? Ongelmia kanssa iPhonen muisti- Tämä on melko vakava häiriö, jota on erittäin vaikea korjata itse. Mutta tilannetta ei voida kutsua toivottomaksi. Tärkeintä on löytää hyvä palvelukeskus, jossa on päteviä asiantuntijoita ja tarvittavat varusteet. Ja sitten iPhone vielä ilahduttaa sinua työllään pitkään!

P.S. Joo, se ei toiminut lyhyenä muistiinpanona :) Kuitenkin mitä siellä on, se on mitä se on - älä poista sitä nyt. Ja tieto on hyödyllistä - se on hyödyllistä jollekin. Oletko samaa mieltä? Laita "tykkää" ja klikkaa painikkeita sosiaaliset verkostot- tue kirjoittajaa! Hän yritti, rehellisesti. Kiitos!

P.S.S. Onko sinulla kysyttävää? Onko sinulla jotain lisättävää artikkeliin tai haluaisitko kertoa tarinasi? Tästä on kommentteja - kirjoita rohkeasti!