Nand Flash iPhone - apakah ralat ini dan cara membetulkannya? Pengaturcaraan NAND FLASH

2017-05-25 Tarikh terakhir diubah suai: 2018-10-10

Artikel tersebut membincangkan: Ciri-ciri penggunaan litar mikro NAND KILAT,kaedah untuk susun atur halaman dan pengurusan blok yang buruk. Cadangan untuk pengaturcaraan menggunakan pengaturcara.

KANDUNGAN:

1. TEORI

1.1. Perbezaan antara cip NAND FLASH dan cip konvensional

Jika anda tidak menyelidiki selok-belok teknologi, maka perbezaan antara litar mikro NAND daripada cip memori lain adalah seperti berikut:

  • Litar mikro NAND mempunyai sangat isipadu yang besar.
  • Litar mikro NAND boleh dapat blok buruk (buruk)..
  • Saiz halaman rekod bukan kuasa 2 .
  • Menulis pada cip dijalankan hanya halaman , pemadaman - sekurang-kurangnya dalam blok .

Terdapat beberapa lagi perbezaan, tetapi dua ciri pertama adalah kunci. Menyebabkan paling banyak masalah kehadiran blok buruk.

1.2. Organisasi cip NAND FLASH

Butiran lanjut tentang organisasi dan struktur litar mikro NAND boleh dibaca dalam kesusasteraan khusus, tetapi kami ambil perhatian bahawa:

  • Litar mikro NAND dianjurkan dalam muka surat (muka surat), muka surat dalam blok (bloks), menyekat masuk modul logik (lun).
  • Saiz halaman NAND bukan gandaan 2.
  • Halaman terdiri daripada asas Dan ganti (ganti) wilayah.

Menurut pemaju NAND Vkawasan teras mesti terletak data itu sendiri, A di kawasan simpanan (rizab). - penanda blok buruk, jumlah semak kawasan utama, lain-lain maklumat perkhidmatan.

Jika mereka bercakap tentang saiz halaman Cip NAND 512 bait atau 2K bait, kemudian kita bercakap tentang O saiz kawasan utama muka surat, tidak termasuk ganti.

1.3. Cara Menggunakan Kawasan Ganti Halaman

Biar kami mengingatkan anda sekali lagi bahawa mengikut rancangan pembangun cip NAND di kawasan lapang sepatutnya terletak: penanda blok buruk, jumlah semak kawasan data utama, lain maklumat perkhidmatan.

Kebanyakan pembangun hanya menerangkan lokasi penanda blok buruk dalam litar mikro yang dibekalkan. Untuk aspek lain menggunakan kawasan ganti, diberikan cadangan am dan algoritma untuk mengira ECC, biasanya mengikut Haming. Samsung melangkah lebih jauh, membangunkan cadangan yang dipanggil " Kawasan memori denyar NAND ganti. Standard tujuan "("Kawasan Ganti Denyar NAND. Standard Tugasan", 27. April. 2005, Bahagian Memori, Samsung Electronics Co., Ltd).

Jadi piawaian ini menganggap kegunaan seterusnya kawasan ganti:

Untuk cip dengan saiz halaman 2048+64 bait t bahagian utama dan kawasan ganti halaman dibahagikan kepada 4 serpihan (sektor) setiap satu:

WilayahSaiz (bait)Serpihan
Utama512 Sektor 1
512 Sektor 2
512 Sektor 3
512 Sektor 4
ganti16 Sektor 1
16 Sektor 2
16 Sektor 3
16 Sektor 4

Setiap serpihan kawasan utama mereka dipadankan serpihan kawasan ganti.

Menggunakan kawasan ganti (untuk setiap empat serpihan)
untuk cip dengan saiz halaman 2048+64 bait:
berat sebelah
(bait)
Saiz
(bait)
TujuanPenerangan
Penanda blok buruk
Terpelihara
Nombor sektor logik
Dikhaskan untuk nombor sektor
Terpelihara
Kod ECC untuk kawasan halaman utama
Kod ECC untuk nombor sektor logik
Terpelihara

Tetapi ini bukan satu-satunya "standard" untuk memperuntukkan memori halaman; hanya kita yang tahu beberapa dozen daripadanya, sebagai contoh:

  • "Pengurusan NAND FLASH di bawah WinCE 5.0 ", NXP;
  • "Pengurusan Blok Buruk untuk NAND Flash menggunakan NX2LP ", 15 Disember 2006, Semikonduktor Cypress;
  • "Pengurusan Blok Buruk OLPC NAND ", OLPC.

1.4. Imej NAND dan imej binari

Anda mungkin menghadapi dua pilihan imej untuk dirakam:

  1. Fail binari tidak rosak ke halaman dan tanpa kawasan ganti.
    Pilihan ini boleh dilakukan jika anda seorang pembangun peranti yang menggunakan NAND atau menerima fail sedemikian daripada pembangun. Imej ini sesuai untuk menulis kepada litar mikro dengan halaman dalam sebarang saiz dan apa-apa pengedaran kawasan ganti, anda hanya perlu tahu dengan kaedah apa kawasan ganti akan terbentuk.
  2. Imej dibaca daripada litar mikro lain (sampel), mengandungi kawasan ganti dengan tanda blok buruk, maklumat perkhidmatan dan kod kawalan.
    Gambar ini boleh ditulis sahaja ke dalam cip dengan dimensi yang sama muka surat dan blok.

Pakar yang membaiki pelbagai peralatan sering menghadapi kes kedua. Dalam kes sedemikian, selalunya sukar untuk menentukan kaedah peruntukan kawasan ganti yang digunakan dan kaedah pengurusan blok buruk yang digunakan.

1.5. Penandaan kilang blok buruk

Satu-satunya perkara yang lebih kurang standard adalah penandaan kilang blok buruk.

  • Blok buruk ditanda pada halaman ke-0 atau ke-1 untuk cip dengan saiz halaman kurang daripada 4K.
  • Untuk 4K muka surat dan banyak lagi, penandaan mungkin dihidupkan muka surat terakhir blok.
  • saya sendiri penanda blok buruk terletak di kawasan ganti halaman dalam bait ke-5 untuk halaman kecil (512 bait) dan dalam bait ke-0 untuk halaman besar (2K).
  • Penanda blok buruk mungkin penting 0x00 atau 0xF0 untuk halaman kecil Dan 0x00 untuk lebih X.
  • Blok yang bagus sentiasa ditanda 0xFF.
  • Walau apa pun maknanya berbeza daripada 0xFF pengaturcara menganggap sebagai penanda blok buruk.
  • Sebagai peraturan, dalam moden NAND blok buruk diisi sepenuhnya dengan nilai 0x00.

Terdapat satu masalah: blok buruk boleh dipadamkan. Dengan cara ini, anda boleh kehilangan maklumat tentang blok cip buruk.

Walau bagaimanapun, jika litar mikro telah berfungsi dalam peranti, kaedah menandakan blok buruk ini tidak selalu digunakan. Kadangkala maklumat blok buruk tidak disimpan dalam memori NAND. Tetapi, lebih kerap daripada tidak, walaupun pemaju perisian Peranti menggunakan skema berbeza untuk menguruskan blok buruk; ia lebih suka untuk tidak memadamkan tanda kilang.

1.6. Pengurusan blok yang buruk

pemaju NAND litar mikro mencadangkan untuk menggunakan skim kawalan blok buruk berikut:

  • lulus blok buruk
  • Penggunaan ganti wilayah

Juga, kaedah untuk menguruskan blok buruk kadangkala termasuk menggunakan pembetulan kesilapan(ECC). Perlu diingatkan bahawa penggunaan pembetulan ralat tunggal tidak menghapuskan berbilang ralat dan masih memaksa anda untuk menggunakan salah satu daripada skema di atas. Selain itu, majoriti NAND cip mempunyai kawasan bebas kerosakan yang dijamin di mana blok buruk tidak muncul. Kawasan bebas kegagalan biasanya terletak pada permulaan cip.

Kaedah untuk menguruskan blok buruk ini diterangkan dengan baik dalam dokumentasi teknikal pengilang NAND dan dibincangkan secara meluas dalam literatur tentang penggunaan NAND. Walau bagaimanapun, mari kita ingat secara ringkas intipati mereka:

Langkau blok buruk:
Jika blok semasa ternyata rosak, ia dilangkau dan maklumat ditulis ke blok percuma seterusnya. Skim ini adalah universal, mudah untuk dilaksanakan, tetapi agak bermasalah untuk kes apabila blok buruk muncul semasa operasi. Untuk kerja penuh Dalam skema ini, nombor blok logik mesti disimpan di dalam blok (standard Samsung untuk menetapkan kawasan ganti, sebenarnya, menganggap ini). Apabila bekerja mengikut skema ini, pengawal mesti di suatu tempat menyimpan jadual surat-menyurat antara nombor logik blok dan nombor fizikal jika tidak, capaian memori akan menjadi sangat perlahan.

Oleh itu, pembangunan logik adalah skema penggunaan kawasan ganti:
Mengikut kaedah ini, keseluruhan volum memori dibahagikan kepada dua bahagian: utama dan sandaran. Apabila blok buruk muncul dalam memori utama, ia digantikan dengan blok daripada memori ganti, dan entri yang sepadan dibuat dalam jadual penugasan semula blok. Jadual penugasan semula disimpan sama ada dalam blok yang dijamin selamat gagal atau dalam berbilang salinan. Format jadual adalah berbeza, ia disimpan dalam tempat berbeza. Sekali lagi, Samsung menerangkan standard untuk format dan susun atur jadual, tetapi hanya sedikit orang yang mengikutinya.

2. AMALAN

2.1. Mengimbas blok buruk cip NAND

Pengaturcara ChipStar membolehkan anda mengimbas litar mikro dengan cepat NAND untuk kehadiran blok buruk mengikut tanda kilang blok buruk.

Pilih item menu " Cip|Cari blok buruk ", cip akan diperiksa untuk blok yang buruk. Hasilnya ditunjukkan dalam bentuk jadual.

Tindakan ini hanya perlu jika anda hanya mahu melihat senarai blok buruk. Dalam semua kes lain, carian untuk blok buruk dilakukan secara automatik apabila perlu.

2.2. Blok buruk dalam imej NAND

Apabila membaca imej cip NAND, pengaturcara juga menyimpan maklumat tentang halaman dan saiz blok cip. Maklumat disimpan dalam fail berasingan. Jadi jika anda mengira dan menyimpan imej cip dalam fail <имя_файла>.nbin program akan mencipta fail lain: <имя_файла>.rujuk . Apabila membuka fail <имя_файла>.nbin fail <имя_файла>.rujuk akan dibaca dengan cara yang sama. Dalam fail <имя_файла>.rujuk maklumat tentang halaman dan saiz blok cip direkodkan. Selepas membaca cip atau membuka fail seperti .nbin , imbasan latar belakang imej dilakukan untuk kehadiran blok buruk berdasarkan maklumat tentang halaman dan saiz blok.

Pilihan NAND dan maklumat tentang blok buruk boleh didapati dalam "tab" NAND"editor pengaturcara:

Imej binari NAND boleh dilihat dalam "tab" Ingatan utama ":

Dalam mod editor NAND kawasan ganti halaman diperuntukkan warna lebih kusam, butang untuk bergerak melalui halaman, blok dan peralihan pantas ke permulaan kawasan ganti muka surat ini. Selain alamat kursor, baris status editor juga dipaparkan mukasurat Dan nombor blok di mana kursor berada. Semua ini membolehkan anda melihat kandungan litar mikro dengan lebih mudah.

2.3.Memadamkan NAND

Pengaturcara lalai tidak memadam blok buruk, tetapi jika anda melumpuhkan pilihan " Menyemak dan melangkau blok buruk " blok buruk mungkin dipadamkan dan tanda blok buruk mungkin hilang. Lumpuhkan pilihan ini hanya jika perlu.

Hanya blok buruk yang ditanda mengikut tanda kilang dilangkau. Jika peranti menggunakan penandaan yang berbeza untuk blok buruk, ia akan dipadamkan kerana perisian pengaturcara tidak akan melihatnya. Untuk bekerja dengan tanda bukan standard bagi blok buruk, pengaturcara boleh menggunakan pemalam luaran.

2.4. Menguji litar mikro untuk kekurangan rakaman

Secara lalai, pengaturcara mengabaikan semua blok buruk semasa menyemak, tetapi jika anda melumpuhkan pilihan " Imbas dan langkau blok buruk "Blok buruk akan diuji yang secara semula jadi akan membawa kepada ralat ujian.

2.5. Menulis imej siap ke cip

Membakar imej NAND dalam litar mikro sedikit berbeza daripada yang konvensional KILAT litar mikro Pertama sekali, mereka mesti sepadan saiz halaman imej dan cip sasaran. Jika kawalan digunakan blok buruk mesti sepadan saiz blok imej dan litar mikro.

Perisian untuk semua pengaturcara ChipStar menyokong tiga kaedah untuk menguruskan blok buruk alatan terbina dalam dan nombor tanpa had menggunakan pemalam. Di samping itu, anda boleh menetapkan bilangan blok boleh tulis pada permulaan cip, yang sebenarnya keempat cara untuk menguruskan blok buruk.

Kaedah 1: Mengabaikan Blok Buruk

Menyalin mudah, mengabaikan blok buruk (blok buruk ditulis dengan cara yang sama seperti yang biasa).

Imej asal Cip
(keadaan awal)
Cip
(hasil)
Blok 0
baik
Sekat
bersih
Blok 0
baik
Blok 1
teruk
Sekat
bersih
Blok 1
salah
Blok 2
baik
Sekat
bersih
Blok 2
baik
Blok 3
baik
Sekat
teruk
Blok 3
rosak
Blok 4
baik
Sekat
bersih
Blok 4
baik
Rekod sempadan
Blok 5
baik
Sekat
bersih
Sekat
bersih

Paling sesuai untuk menyalin cip NAND tanpa mendalaminya struktur dalaman, dengan syarat cip itu ditulis tidak mengandungi blok buruk . Jika dalam gambar asal terdapat blok buruk , akhirnya terbentuk blok buruk palsu . Kemunculan blok buruk palsu tidak akan menjejaskan fungsi peranti. Walau bagaimanapun, jika cip sudah mengandungi blok buruk, apabila anda cuba menulis kepada cip sedemikian, blok buruk dengan akibat yang tidak dapat diramalkan. Petua: anda boleh cuba memadamkan keseluruhan cip, termasuk blok buruk, kemudian menyalinnya. Jika menulis ke blok buruk berjaya diselesaikan (ini sering berlaku), peranti anda akan berfungsi dengan betul; pada masa hadapan, perisian peranti akan mengenal pasti blok buruk dan menggantikannya dengan yang baik mengikut algoritma pengendaliannya.

Kaedah 2: Pintasan Blok Buruk

Imej asal Cip
(keadaan awal)
Cip
(hasil)
Blok 0
baik
Sekat
bersih
Blok 0
baik
Blok 1
teruk
Sekat
bersih
Sekat
bersih
Blok 2
baik
Sekat
bersih
Blok 2
baik
Blok 3
baik
Sekat
teruk
Sekat
teruk
Blok 4
baik
Sekat
bersih
Blok 4
baik
Rekod sempadan
Blok 5
baik
Sekat
bersih
Sekat
bersih

Apabila memintas blok buruk blok buruk tidak direkodkan daripada imej asal Dan maklumat tidak ditulis kepada blok cip buruk. Ini bukan dasar penyalinan terbaik, tetapi ia selamat daripada blok cip yang buruk: tiada maklumat yang hilang tentang blok cip buruk dan blok buruk palsu tidak muncul. Dalam sesetengah kes, dasar penyalinan sedemikian boleh membantu memulihkan kefungsian peranti yang tidak diketahui.

Kaedah 3: Langkau Blok Buruk

Imej asal Cip
(keadaan awal)
Cip
(hasil)
Blok 0
baik
Sekat
bersih
Blok 0
baik
Blok 1
teruk

Sekat
bersih
Blok 2
baik
Blok 2
baik
Sekat
bersih
Blok 3
baik
Blok 3
baik
Sekat
teruk
Sekat
teruk
Blok 4
baik
Sekat
bersih
Blok 4
baik
Rekod sempadan
Blok 5
baik
Sekat
bersih
Sekat
bersih

Tulis dengan melangkau blok buruk menganggap bahawa peranti menggunakan algoritma pengurusan blok yang buruk ini, dan bukan yang lain. Di bawah syarat ini, penyalinan maklumat yang betul adalah dijamin.

Kaedah 4: Tulis hanya kawasan yang dijamin bebas kegagalan

Imej asal Cip
(keadaan awal)
Cip
(hasil)
Blok 0
baik
Sekat
bersih
Blok 0
baik
Blok 2
baik
Sekat
bersih
Blok 1
baik
Rekod sempadan
Sekat
teruk
Sekat
bersih
Sekat
bersih
Blok 3
baik
Sekat
teruk
Sekat
teruk
Blok 4
baik
Sekat
bersih
Sekat
bersih
Blok 5
baik

Sekat
bersih

Sekat
bersih

Dalam kebanyakan moden NAND litar mikro, blok pertama (sekurang-kurangnya satu) dijamin tidak mengalami kegagalan. Dalam banyak peranti, kod pemuat but terletak pada permulaan cip dan sistem operasi peranti. Menyalin hanya kawasan ini selalunya mencukupi.

Dalam dialog tetapan mod rakaman, nyatakan saiz rakaman dalam blok.

Cara lain untuk menguruskan blok buruk

Perisian pengaturcara ChipStar menyokong sebarang algoritma pengurusan blok yang buruk NAND menggunakan pemalam luaran. Di hadapan pemalam yang dipasang penerangan kaedah tambahan muncul dalam senarai" Menguruskan blok NAND yang buruk ". Anda boleh mengkonfigurasi parameter kaedah yang dipilih dengan mengklik butang " Pemalam luaran ".

Menggunakan Kod Pembetulan Ralat (ECC)

Penggunaan kod pembetulan ralat membolehkan memulihkan ralat tunggal pada halaman NAND.

Pelbagai algoritma boleh digunakan untuk memulihkan ralat tunggal dalam sektor ini. Bergantung kepada algoritma ECC, boleh dipulihkan kuantiti yang berbeza ralat setiap sektor (512+16 bait). Di bawah istilah " bujang "difahamkan kesilapan hanya dalam satu bit data. Untuk NAND dengan saiz halaman 512+16 bait, konsep " sektor" Dan " muka surat" padankan. Untuk NAND dengan saiz besar Pengaturcara halaman ChipStar menggunakan skema susun atur halaman ke dalam sektor, seperti yang diterangkan. Dalam tetapan rakaman atau pengesahan, anda boleh menentukan bilangan ralat setiap sektor yang boleh dibetulkan oleh algoritma yang digunakan dalam peranti anda. Sehubungan itu, litar mikro dengan bilangan ralat yang boleh diterima tidak akan ditolak; maklumat tentang bilangan ralat boleh diperbetulkan dipaparkan dalam tetingkap statistik:

Maklumat tentang bilangan ralat yang dibenarkan bagi setiap sektor untuk setiap cip tertentu boleh didapati dalam dokumentasi setiap cip. Semua cip NAND yang baru ditambah dimasukkan ke dalam pangkalan data pengaturcara, dengan mengambil kira bilangan ralat yang dibenarkan.

Apabila menambah secara bebas litar mikro:

  • Jika ONFI disokong, maka bilangan ralat yang dibenarkan bagi setiap sektor membaca daripada jadual parameter litar mikro dan dipasang kepada nilai yang dikehendaki.
  • jika litar mikro tidak menyokong ONFI, pengguna kena tetapkan nilai sendiri, menggunakan dokumentasi untuk cip.

Untuk litar mikro baharu NAND pengeluaran Samsung nilai bilangan ralat yang dibenarkan bagi setiap sektor dikodkan sebagai sebahagian daripada pengecam cip. Oleh itu, untuk litar mikro sedemikian bilangan ralat yang dibenarkan bagi setiap sektor juga akan ditetapkan dengan betul.

Apabila membaca kandungan litar mikro untuk tujuan menyimpan atau menyalinnya lagi, ralat tunggal tidak dapat dikesan dengan pasti. Imej yang terhasil kemudiannya boleh dianalisis secara berasingan untuk ralat dengan mengira kod semakan ECC aplikasi luaran, dengan syarat betul-betul algoritma yang digunakan dan susun atur halaman diketahui .

Perisian pengaturcara ChipStar menawarkan secara tidak langsung kaedah statistik mengenal pasti dan menghapuskan kesilapan tunggal. Kaedah ini membolehkan untuk mengenal pasti sahaja tidak stabil kesilapan dengan tidak dijamin kebolehpercayaan. Untuk melaksanakan pembacaan dengan pengesanan ralat, anda perlu memilih " Bacaan terpilih" dan pada tab "NAND", tandai kotak " Dayakan mod pembetulan ralat"

Anda boleh mengkonfigurasi bilangan percubaan baca semula untuk perbandingan dan jumlah bilangan percubaan baca semula apabila ralat berlaku. Perlu diingat bahawa penggunaan kaedah ini makhluk itu memperlahankan proses membaca.

Algoritma pengesanan ralat statistik berfungsi seperti berikut:

  1. Halaman NAND dibaca beberapa kali berturut-turut (sekurang-kurangnya tiga).
  2. Data baca dibandingkan bait demi bait.
  3. Jika tiada ralat perbandingan dikesan, halaman tersebut dianggap bebas ralat.
  4. Jika ralat dikesan semasa perbandingan, halaman dibaca beberapa kali lagi.
  5. Untuk setiap ralat, bilangan bacaan dikira. unit Dan sifar.
  6. Nilai yang betul (“0” atau “1”) dianggap sebagai nilai yang lebih banyak.

Algoritma berfungsi dengan baik jika kebarangkalian ralat dalam bit tertentu litar mikro adalah kurang daripada 0.5. Apabila membaca litar mikro, ralat "diperbetulkan" dan kebarangkalian bacaan yang betul dikira.

2.6. Menukar imej binari kepada imej NAND

Semua yang diterangkan di atas lebih kepada penyalinan NAND dan rakaman berdasarkan model litar mikro, tetapi ia selalunya diperlukan tulis imej binari asal program ke cip bersih. Anda perlu menukar sebelum merakam imej binari pada imej NAND, menambah pada setiap halaman kawasan ganti dan mengisinya dengan betul. Untuk melakukan ini, buka anda fail binari, pilih item menu " ". Dialog akan muncul:

Tetapkan mod penukaran NAND: " Imej binari... ", nyatakan halaman dan saiz blok NAND atau pilih cip yang diperlukan. Pilih format kawasan ganti. Pengaturcara menyokong pengisian mudah kawasan dengan nilai FF ​​​​dengan alatan terbina dalam dan kaedah lain menggunakan pemalam. A pemalam dibekalkan dengan pengaturcara yang melaksanakan tugasan kawasan ganti yang disyorkan oleh Samsung.

Jika anda perlu melaksanakan mana-mana pilihan pengedaran yang berbeza - beritahu kami dan kami akan menyediakan pemalam yang sesuai, atau anda boleh melaksanakan pemalam yang diperlukan sendiri.

2.7. Serasi dengan imej NAND yang dibaca oleh pengaturcara lain

jika anda mempunyai imej NAND, dibaca oleh pengaturcara lain atau diterima daripada sumber lain, ia mestilah menukar ke dalam format yang sesuai untuk rakaman Pengaturcara ChipStar.

Untuk melakukan ini, ikuti langkah berikut:

  • Buka fail anda, pilih item menu " Edit|Togol mod editor NAND ". Dialog akan muncul seperti yang ditunjukkan di atas.
  • Tetapkan mod penukaran kepada format NAND: "Imej itu sudah menjadi NAND... ", menunjukkan saiz halaman Dan blok NAND atau pilih cip yang diperlukan. klik " teruskan".
  • Tab akan muncul dalam editor " NAND " dan imej akan mula mengimbas blok buruk.
  • Fail yang terhasil boleh disimpan dalam format NAND, fail akan menerima sambungan .nbin lalai.

Untuk kerja yang berjaya dengan litar mikro NAND FLASH(nand flash) anda memerlukan sekurang-kurangnya:

    Mempunyai idea tentang struktur NAND FLASH (nand flash), kaedah sedia ada dan algoritma untuk menggunakan maklumat yang disimpan dalam ingatan tersebut.

    Mempunyai pengaturcara yang menyokong kerja dengan memori NAND Flash dengan betul, i.e. membolehkan anda memilih dan melaksanakan parameter dan algoritma pemprosesan yang diperlukan.

Pengaturcara NAND FLASH mestilah sangat pantas. Pengaturcaraan atau membaca litar mikro dengan volum beberapa Gbit pada pengaturcara konvensional mengambil masa beberapa jam. Jelas sekali, untuk lebih kurang pengaturcaraan biasa NAND Flash, anda memerlukan pengaturcara pantas khusus yang disesuaikan untuk bekerja dengan MS. ketumpatan tinggi. Hari ini, pengaturcara Flash NAND terpantas ialah ChipProg-481.

Memprogramkan NAND FLASH pada pengaturcara ChipProg

Apabila bekerja dengan NAND Flash, pengaturcara menyediakan pelbagai pilihan untuk memilih/mengonfigurasi kaedah dan parameter pengaturcaraan. Semua parameter yang mempengaruhi algoritma operasi pengaturcara dengan litar mikro dipaparkan dalam tetingkap "Editor parameter litar mikro dan algoritma pengaturcaraan". Jika perlu, mana-mana parameter ini boleh diubah supaya tindakan yang dipilih (pengaturcaraan, perbandingan, membaca, memadam) dijalankan mengikut algoritma kepada pengguna yang diperlukan pengaturcara

Tetingkap "Editor parameter cip dan algoritma pengaturcaraan" dalam antara muka pengaturcara apabila memprogramkan NAND Flash.

Sebilangan besar parameter boleh disesuaikan yang membentuk algoritma pengendalian pengaturcara NAND Flash didorong oleh keinginan untuk menyediakan alat universal, membolehkan pengguna menyedari sepenuhnya semua ciri yang wujud dalam struktur NAND Flash. Untuk menjadikan hidup lebih mudah, pengaturcara ChipProg-481 menyediakan pilihan berikut apabila memilih mana-mana cip NAND Flash:

  • Semua parameter mengambil nilai yang ditetapkan dalam sesi pengaturcaraan sebelumnya (sesi) NAND Flash yang dipilih. (bilangan sesi yang disimpan adalah tidak terhad).
  • Semua parameter mengambil nilai yang ditentukan untuk NAND Flash tertentu dalam "projek" (bilangan "projek" tidak terhad)
  • Semua parameter secara automatik mengambil nilai yang diperlukan selepas menjalankan "skrip". "Skrip" ditulis dalam bahasa seperti C yang dibina ke dalam shell pengaturcara.
  • Semua (atau dipilih) parameter menggunakan nilai lalai.
  • Nilai semua parameter tersedia untuk diedit antara muka grafik pengaturcara

Mari kita lihat mod pengaturcaraan dan parameter yang dilaksanakan dalam pengaturcara.

Mod pengaturcaraan.

  1. Pengurusan Blok Tidak Sah
  2. Penggunaan Kawasan Ganti
  3. Kawasan Pepejal Pengawal
  4. Ciri Pengesahan Bertolak ansur
  5. Pilihan Petunjuk Blok Tidak Sah

1. Berurusan dengan blok buruk.

Sebelum memprogramkan NAND Flash, anda boleh/harus memilih salah satu kaedah untuk bekerja dengan blok buruk.

2. Menggunakan Kawasan Ganti.

Jangan guna

Kawasan Ganti tidak digunakan dalam cip. Halaman memori diprogramkan dalam litar mikro tanpa mengambil kira Kawasan Ganti.

Data pengguna

Kawasan Ganti digunakan sebagai ingatan pengguna. Dalam kes ini, apabila memprogramkan litar mikro, maklumat daripada penimbal diletakkan dahulu di halaman utama litar mikro, dan kemudian di Kawasan Ganti tambahan. Dalam kes ini, penimbal pengaturcara kelihatan seperti aliran berterusan halaman utama cip dan Kawasan Ganti berlabuh padanya.

Data Pengguna dengan Maklumat IB Dipaksa

Kawasan Ganti ditafsirkan sama dengan kes sebelumnya, kecuali penanda blok buruk ditulis dan bukannya maklumat pengguna.

3. Kawasan Pepejal Pengawal

Cara penggunaan kawasan khas tiada blok buruk. Biasanya, kawasan tersebut digunakan sebagai pemuat but mikropemproses. Penggunaan blok buruk tidak dibenarkan di kawasan ini.
Pilihan ini digunakan bersama dengan parameter berikut:

  • Kawasan Pepejal - Blok Mula - blok awal kawasan tanpa blok buruk.
  • - bilangan blok di kawasan ini.

Jika dalam julat yang ditetapkan Kawasan Pepejal Jika anda menghadapi blok buruk, pengaturcara akan menghasilkan ralat.

4. Tidak sensitif terhadap ralat perbandingan.

Pilihan ini membolehkan anda mendayakan mod yang tidak sensitif kepada ralat perbandingan.
Biasanya, pilihan ini masuk akal untuk digunakan jika peranti pengguna menggunakan algoritma kawalan ralat dan pembetulan (ECC). Dalam kes ini, bilangan ralat tertentu dibenarkan untuk saiz tatasusunan data tertentu. Parameter ini ditunjukkan dalam parameter algoritma pengaturcaraan NAND Flash:

  • Saiz Bingkai ECC (bait) - saiz tatasusunan data.
  • Bilangan ralat yang boleh diterima - bilangan ralat satu bit yang dibenarkan.

5. Pilihan Petunjuk Blok Tidak Sah.

Pilihan ini memilih maklumat yang digunakan sebagai penanda blok buruk. Anda boleh memilih sama ada nilai 00j atau 0F0j.

  • Nilai Petunjuk IB~00 atau F0

Pilihan pengaturcaraan.

  1. Kawasan Pengguna
  2. Kawasan Pepejal
  3. Kawasan RBA
  4. Saiz bingkai ECC
  5. Bilangan ralat yang boleh diterima

a.Kawasan pengguna.

Kawasan pengguna ialah kawasan cip yang dengannya prosedur Pengaturcaraan, Pembacaan dan Perbandingan berfungsi.
Prosedur Kawalan Padam dan Kebersihan berfungsi dengan keseluruhan tatasusunan cip.

Pengguna perlu menetapkan parameter berikut:

  • Kawasan Pengguna - Blok Mula - blok awal kawasan pengguna.
  • Kawasan Pengguna - Bilangan Blok - bilangan blok dalam kawasan pengguna.

b. Kawasan bebas ralat.

Kawal parameter mod Kawasan Pepejal.

  • Kawasan Pepejal - Blok Mula - blok awal kawasan tanpa blok buruk.
  • Luas Pepejal - Bilangan Blok - bilangan blok di kawasan ini.

c. Kawasan penempatan RBA.

  • Kawasan RBA - Blok Mula - blok awal jadual RBA.
  • Kawasan RBA - Bilangan Blok - bilangan blok dalam jadual RBA.

d.Saiz Bingkai ECC .

  • Saiz Bingkai ECC- parameter yang menentukan saiz tatasusunan data di mana ralat bit tunggal dibenarkan.

e. Bilangan ralat yang dibenarkan.

  • Bilangan ralat yang boleh diterima - parameter menentukan bilangan ralat satu bit yang dibenarkan dalam tatasusunan, saiznya ditentukan oleh parameter saiz Bingkai ECC.

Peta Blok Buruk

Peta blok buruk dibuat dalam sublapisan Peta Blok Tidak Sah. Peta blok diwakili sebagai tatasusunan bit yang bersebelahan. Blok yang baik diwakili oleh nilai 0, blok buruk dengan nilai 1.

Sebagai contoh, nilai 02h pada alamat sifar menunjukkan bahawa blok 0,2,3,4,5,6,7 adalah baik, blok 1 adalah buruk. Nilai 01h pada alamat pertama menunjukkan bahawa hanya blok ke-8 adalah buruk daripada kumpulan blok 8..15.

Menyalin NAND Flash

Untuk menggambarkan kepentingan pemilihan mod dan parameter "rabun" semasa memprogramkan NAND Flash dalam pengaturcara, pertimbangkan situasi di mana sesetengah pengaturcara menghadapi masalah. Selalunya, ini adalah pengganti NAND Flash dalam "peranti" yang telah berhenti berfungsi. Pendekatan standard- dengan analogi dengan menggantikan cip memori konvensional:

  1. Dapatkan perisian tegar litar mikro yang berfungsi. Sebagai peraturan, untuk tujuan ini kandungan dibaca dari litar mikro asal.
  2. Kilat litar mikro serupa baharu.
  3. Bandingkan kandungan ms yang telah diprogramkan. dengan perisian tegar "asal". Jika perbandingan berlalu, litar mikro - salinan sudah sedia.

Dalam kes apabila anda perlu memprogramkan NAND Flash, tidak semuanya begitu mudah dan tidak jelas.

  1. Perisian tegar Nand Flash, diperoleh apabila pengaturcara membacanya daripada "asal", dengan ketara bergantung pada mod dan parameter yang dipasang dalam pengaturcara.
  2. Untuk memprogramkan NAND Flash baharu dengan betul dan dapatkan salinan penuh, sebelum pengaturcaraan, adalah perlu untuk menetapkan mod dan parameter dalam pengaturcara yang sepadan dengan perisian tegar "asal". Pada masa yang sama, adalah perlu untuk mengambil kira kemungkinan kewujudan blok buruk.

Untuk mendapatkan cip salinan yang perisian tegar NAND Flashnya adalah sama dengan sampel, anda mesti meneruskan seperti berikut.

Bersedia untuk menyalin.

Untuk menyalin, anda memerlukan cip asal dan cip salinan (litar mikro di mana imej asal sepatutnya ditulis). Keperluan wajib:

  1. Kedua-dua cip NAND Flash, yang asal dan salinan, mestilah daripada jenis yang sama.
  2. Cip salinan tidak sepatutnya mempunyai blok yang buruk.

Untuk menentukan sama ada cip salinan mempunyai blok buruk, anda perlu memasang cip dalam pengaturcara, dan dalam tetingkap "Editor Parameter Cip", tetapkan parameter cip lalai - butang "Semua Lalai".

Prosedur kawalan pemadaman bermula (untuk menjimatkan masa, anda boleh membatalkan prosedur ini serta-merta; peta blok buruk dibaca pada awal-awal lagi). Dalam tetingkap "Pengaturcaraan" antara muka pengaturcara, maklumat tentang blok buruk muncul dalam medan "Maklumat Operasi".


Menyalin.

Sebelum menyalin cip NAND Flash ke dalam pengaturcara, tetapan parameter berikut mesti dibuat dalam tetingkap "Editor Parameter Cip":

Pengurusan Blok(IB) tidak sah

JANGAN GUNA

Penggunaan Kawasan Ganti

Data pengguna

Kawasan Pengguna – Bilangan Blok

Nilai maksimum blok dalam cip

Sampel NAND Flash dipasang dalam pengaturcara dan dibaca. Kemudian cip salinan dipasang dalam pengaturcara, dipadamkan, ditulis dan dibandingkan. Jika ketiga-tiga prosedur berjaya diselesaikan, NAND Flash yang diprogramkan ternyata salinan lengkap asal.

Struktur memori NAND Flash.

NAND Memori kilat * dibahagikan kepada blok memori, yang seterusnya dibahagikan kepada halaman. Halaman boleh menjadi besar (halaman besar) atau kecil (halaman kecil). Saiz halaman bergantung pada saiz keseluruhan litar mikro. Untuk halaman kecil, cip dengan kapasiti 128Kbit hingga 512Kbit biasanya tipikal. Litar mikro dengan saiz halaman yang besar mempunyai kapasiti dari 256Kbit hingga 32Gbit dan ke atas. Saiz halaman kecil ialah 512 bait untuk cip berasaskan bait dan 256 perkataan untuk cip berasaskan perkataan. Halaman besar mempunyai saiz 2048 bait untuk cip bait dan 1024 untuk cip perkataan. DALAM Kebelakangan ini cip dengan saiz halaman yang lebih besar muncul. Ia sudah 4096 bait untuk cip bait.

Struktur memori litar mikro NAND Flash dengan saiz halaman kecil daripada STMicroelectronics.

Struktur memori litar mikro dengan saiz halaman besar daripada STMicroelectronics.

Blok NAND Flash yang buruk

Ciri ciri litar mikro NAND Flash ialah kehadiran blok buruk (cacat) (Blok buruk) dalam kedua-dua litar mikro baharu dan rupa blok tersebut semasa operasi. Untuk menandakan blok buruk, serta untuk menyimpan maklumat perkhidmatan tambahan atau kod pembetulan, seni bina NAND Flash menyediakan kawasan Ganti tambahan sebagai tambahan kepada setiap halaman memori data. Untuk cip halaman kecil, kawasan ini ialah 16 bait/8 ​​perkataan. Untuk kerepek dengan halaman besar- 64 bait / 32 perkataan.

Biasanya, pengeluar cip menjamin bahawa bilangan blok buruk tidak akan melebihi saiz tertentu. Maklumat tentang blok buruk dibekalkan oleh pengeluar cip di lokasi tertentu dalam Kawasan Ganti tambahan.

Menanda blok buruk masuk Cip NAND Flash biasanya dilakukan dengan menulis nilai 0 ke alamat tertentu dalam Kawasan Ganti halaman sifar blok buruk. Penanda blok buruk terletak di alamat tertentu Kawasan Ganti.

Organisasi ingatan

Alamat penanda blok buruk di Kawasan Ganti

Organisasi bait, saiz halaman - 512 bait.

Organisasi perkataan, saiz halaman - 256 perkataan.

Organisasi bait, saiz halaman - 2048 bait atau lebih.

Organisasi perkataan, saiz halaman - 1024 perkataan atau lebih.

Anda perlu ingat bahawa penanda blok buruk diletakkan di dalam sel biasa Memori kilat Kawasan Ganti, yang dipadamkan apabila memadamkan keseluruhan blok memori. Oleh itu, untuk menyimpan maklumat tentang blok buruk, sebelum memadam adalah perlu untuk menyimpan maklumat ini, dan selepas memadamkannya, memulihkannya.
Dalam pengaturcara ChipProg, apabila memasang pilihan InvalidBlockManagement kepada sebarang nilai kecuali Jangan guna Menyimpan dan memulihkan maklumat tentang blok buruk berlaku secara automatik.

Terdapat tiga cara paling biasa untuk mengendalikan blok buruk:

  1. Langkau Blok Buruk(Langkau blok buruk . )
  2. Kawasan Blok Terpelihara(Sekat tempahan)
  3. Semakan Ralat dan Pembetulan(Kawalan dan pembetulan ralat . )

1. Langkau blok buruk.

Algoritma untuk melangkau blok buruk ialah apabila menulis pada cip, ia menganalisis blok yang sedang ditulis. Sekiranya terdapat blok yang tidak baik, penulisan ke blok ini tidak dilakukan, blok yang tidak baik dilangkau, penulisan dilakukan ke blok seterusnya selepas yang buruk.

2. Sekat tempahan.

Dalam kaedah ini, ingatan keseluruhan litar mikro dibahagikan kepada tiga kawasan: Kawasan Blok Pengguna (UBA) - kawasan pengguna, Takungan Blok - kawasan rizab serta-merta mengikut kawasan pengguna, dan jadual untuk memadankan blok buruk dengan yang baik ( Kawasan Blok Terpelihara - RBA).

Algoritma untuk menggantikan blok buruk dalam kaedah ini adalah seperti berikut: apabila blok buruk dikenal pasti dari kawasan UBA, blok itu dipindahkan ke kawasan Takungan Blok, dan kemasukan penggantian blok yang sepadan dibuat dalam jadual RBA.

Format jadual RBA:

2 bait Kawasan RBA mengandungi dua jadual dalam dua blok. Jadual dalam blok kedua digunakan sebagai jadual sandaran sekiranya maklumat dalam blok pertama ternyata tidak boleh dipercayai.

3. Kawalan ralat dan pembetulan.

Untuk meningkatkan kebolehpercayaan data, algoritma semakan dan pembetulan ralat (ECC) boleh digunakan. ini Maklumat tambahan boleh muat ruang kosong Kawasan Ganti.

*) Nota: NAND ~ Tidak DAN - dalam matematik Boolean menandakan penafian "DAN"

Hai semua! Baru hari lepas saya jumpa kawan lama saya. Kami perlu bercakap, dan dia, dengan perkataan "Lihat telefon yang saya jalan-jalan sekarang!", menunjukkan lamanya. butang tekan Nokia. Ternyata firmware pada iPhonenya sentiasa ranap - dia terpaksa memberikan telefon pintar itu Pusat servis. Ia akan kelihatan seperti perkara biasa...

Walau bagaimanapun, senarai kerja yang akan dijalankan oleh perkhidmatan itu ternyata luar biasa untuk rakan saya. Diagnostik penuh, kemas kini perisian (jika perlu) dan "perkara biasa" lain - semuanya adalah standard dan jelas di sini. Persoalan utama dibangkitkan oleh frasa ini dari tuan - "kemungkinan besar, anda perlu berguling Nand Flash».

Sudah tentu, saya tidak menunjukkan dalam perkhidmatan bahawa saya tidak faham apa yang mereka bincangkan - mereka mengatakan saya sudah tahu segala-galanya tanpa anda. Perkara utama adalah untuk melakukannya. Tetapi saya pulang ke rumah dan segera pergi ke Google - apakah ini, Nand Flash? Mengapa perlu bersusah payah menggulungnya di suatu tempat di dalam iPhone?

Kami ketawa dengannya, berpisah, dan saya fikir - mengapa tidak menulis nota ringkas mengenai topik ini? Ia tidak akan mengambil banyak masa, dan bagi orang yang menghadapi masalah yang sama seperti rakan saya, ia akan menjadi lebih jelas sedikit perkara yang berlaku dengan telefon pintar mereka. Saya fikir - saya melakukannya. Pergi! :)

Apakah Nand Flash dalam iPhone?

ini ingatan dalaman peranti. Ya, ya, perkara yang sama yang sering hilang pemilik iPhone pada 16 GB.

Secara kasarnya, Nand Flash dalam iPhone 7 32 GB adalah memori dalaman 32 GB yang sama.

Memori terletak di bahagian utama papan sistem peranti dan tidak menonjol dalam apa jua cara - cip yang paling biasa.

Sememangnya, ini bukan pemacu denyar sama sekali - anda tidak boleh membuka iPhone, dengan mudah memutuskan sambungan Nand Flash, pasang satu lagi dan fikir semuanya akan "OK". Tidak akan. Walaupun, perlu disebutkan bahawa dalam beberapa kes ini masih mungkin. Tetapi lebih lanjut tentang itu sedikit lebih jauh. Sementara itu, mari kita teruskan kepada masalah...

Punca kerosakan

Tidak banyak pilihan, dan semuanya biasanya "standard":

  1. Peranti jatuh.
  2. Kerosakan fizikal lain.
  3. Kemasukan cecair.
  4. Perkahwinan.
  5. Jailbreak.

Tiada apa yang istimewa untuk diterangkan di sini - jelas bahawa jika peranti itu dibuang dan diisi dengan air, ini akan menjejaskan prestasinya.

Walaupun, saya masih akan perhatikan secara berasingan titik seperti kecacatan pembuatan - ini juga sangat mungkin. Saya menyaksikan situasi yang sama - saya baru membeli iPhone, tetapi ia tidak benar-benar berfungsi - ia but semula, menunjukkan ralat semasa memulihkan, dan secara amnya berkelakuan pelik. Kami menghantarnya ke perkhidmatan, akibatnya - memori Nand Flash rosak dan penggantian peranti seterusnya.

Gejala Kegagalan Memori Flash iPhone

Kerosakan ini tidak mempunyai sebarang gejala yang jelas dan khusus (mesej tidak muncul pada skrin - peranti anda mempunyai masalah ingatan), jadi semua ini hanya boleh diteka dengan tanda tidak langsung:


Bercakap tentang kesilapan...

Ralat iTunes Menunjukkan Kegagalan Nand Flash

Paling cara yang betul memerangi pelbagai masalah dengan peranti. Walau bagaimanapun, jika iPhone mempunyai masalah dengan memori Nand Flash, proses pemulihan mungkin terganggu dan disertai dengan ralat ciri berikut:


Tetapi, adalah penting untuk diingati ini - iTunes direka sedemikian rupa sehingga nombor ralat yang sama boleh mempunyai beberapa sebab.

Sebagai contoh, ralat 4013 boleh menandakan kedua-dua masalah dengan cip itu sendiri dan penggunaan wayar yang tidak asli untuk menyambung ke PC.

Seperti yang anda lihat, hamparannya sangat besar - daripada wayar mudah kepada pembaikan yang sangat kompleks. Oleh itu, anda boleh menggunakan senarai ralat ini untuk analisis awal keadaan, tetapi anda tidak boleh mempercayainya secara membuta tuli.

Membaiki memori Nand Flash - adakah mungkin?

Mungkin. Tetapi, sudah tentu, bukan "di rumah." Selain itu, tidak semua pusat servis dapat melakukan operasi ini. Sebagai contoh, "dalam khemah di pasar" kemungkinan besar mereka tidak akan dapat membantu anda - tidak akan ada peralatan yang diperlukan di sana. Ya, dan mesti ada beberapa jenis kemahiran.

Sekali lagi saya akan ambil perhatian secara berasingan - jika iPhone anda belum habis tempoh jaminan(), maka tidak perlu mencipta apa-apa - . Terdapat kebarangkalian tinggi bahawa anda akan menerima peranti baharu sebagai balasan.

Jika jaminan "gagal", tetapi pembaikan memori Nand Flash masih diperlukan, maka pusat servis mempunyai dua pilihan untuk membetulkan keadaan:


Dengan cara ini, jika kita bercakap tentang peralatan untuk firmware Nand Flash, maka pengaturcara sedemikian agak pelbagai, tetapi satu perkara masih menyatukan mereka - harga. Mereka semua berdiri wang yang layak- tidak semua orang mampu membeli barang sedemikian.

Apakah kesimpulan yang boleh dibuat daripada semua ini? Masalah dengan Memori iPhone- Ini adalah kerosakan yang agak serius yang sangat sukar untuk diperbaiki sendiri. Tetapi keadaan itu tidak boleh dipanggil putus asa. Perkara utama ialah mencari pusat perkhidmatan yang baik dengan pakar yang cekap dan peralatan yang diperlukan. Dan kemudian iPhone lagi akan menggembirakan anda dengan kerjanya untuk masa yang lama!

P.S. Ya, ia tidak berjaya sebagai nota ringkas :) Walau bagaimanapun, apa yang ada ialah apa yang ada - jangan padamkannya sekarang. Dan maklumat itu berguna - ia akan berguna kepada seseorang. Adakah anda bersetuju? Letakkan "suka" dan klik pada butang rangkaian sosial- sokong penulis! Dia cuba, jujur. Terima kasih!

P.S.S. Adakah anda mempunyai sebarang soalan? Adakah anda mempunyai apa-apa untuk ditambahkan pada artikel atau adakah anda ingin menceritakan kisah anda? Terdapat ulasan untuk ini - jangan ragu untuk menulis!