Nand Flash iPhone - що це, помилки та як їх виправити? Програмування NAND FLASH

2017-05-25 Дата останньої зміни: 2018-10-10

У статті розглядаються: Особливості застосування мікросхем NAND FLASH, методи розмітки сторінок та управління поганими блоками Рекомендації щодо програмування на програматорах.

ЗМІСТ:

1. ТЕОРІЯ

1.1. Відмінність мікросхем NAND FLASH від звичайних мікросхем

Якщо не вникати в тонкощі технологій, то відмінність мікросхем NANDвід інших мікросхем пам'яті полягає в наступному:

  • Мікросхеми NANDмають дуже великий обсяг.
  • Мікросхеми NANDможуть мати погані (збійні) блоки.
  • Розмір сторінкизаписи не є ступенем 2 .
  • Запис до мікросхемиздійснюється тільки сторінками , стирання - мінімум блоками .

Є ще кілька відмінностей, але перші дві особливості ключові. Найбільше проблем завдає наявність поганих блоків.

1.2. Організація мікросхем NAND FLASH

Докладніше про організацію та структуру мікросхем NANDможна прочитати у спеціальній літературі, ми ж зазначимо, що:

  • Мікросхеми NANDорганізовані в сторінки (pages), сторінки в блоки (bloks), блоки в логічні модулі (lun).
  • Розмір сторінки NAND не кратен ступеня 2.
  • Сторінка складається з Основнийі запасний (spare) областей.

За задумом розробників NAND восновний областіповинні перебувають самі дані, а у запасній (резервній) області - маркери поганих блоків, контрольні суми основна область, інша службова інформація.

Якщо говорять про розмірі сторінкимікросхеми NAND 512 байт або байт, то мова йдео розмірі основної областісторінки, без урахування запасний.

1.3. Способи використання запасної області сторінки

Ще раз нагадаємо, що за задумом розробників NAND мікросхем у запасній області повиннізнаходиться: маркери поганих блоків, контрольні сумиосновний області даних, іншаслужбова інформація.

Більшість розробників описує лише місце розташуваннямаркерів поганих блоківв мікросхемах, що поставляються. За іншими аспектами використання запасної області даються загальні рекомендаціїта алгоритм обчислення ЄСС, зазвичай за Хемінгом. Samsung йдуть трохи далі, розробивши рекомендації під назвою " Запасна область флеш-пам'яті NAND. Стандарт призначення ("NAND Flash Spare Area. Assignment Standard", 27. April. 2005, Memory Division, Samsung Electronics Co., Ltd).

Отже, цей стандарт передбачає наступне використаннязапасний області:

Для мікросхем з розміром сторінки 2048+64 байтт основна та запасна область сторінки розбивається на 4 фрагменти (сектори) кожна:

ОбластьРозмір (байт)Фрагмент
Основна512 Сектор 1
512 Сектор 2
512 Сектор 3
512 Сектор 4
Запасна16 Сектор 1
16 Сектор 2
16 Сектор 3
16 Сектор 4

Кожному фрагментуїх основний області ставиться у відповідність фрагмент запасної області.

Використання запасної області (для кожного з чотирьох фрагментів)
у мікросхем з розміром сторінки 2048+64 байт:
Зміщення
(Байт)
Розмір
(Байт)
ПризначенняОпис
Маркер поганого блоку
Зарезервовано
Логічний номер сектора
Зарезервовано для номера сектора
Зарезервовано
ECC код для основної області сторінки
ECC код для логічного номера сектора
Зарезервовано

Але це не єдиний стандарт для розподілу пам'яті сторінок, тільки нам відомі їх кілька десятків, наприклад:

  • "NAND FLASH management under WinCE 5.0 ", NXP;
  • "Bad Block Management для NAND Flash використання NX2LP ", December 15, 2006, Cypress Semiconductor;
  • "OLPC NAND Bad Block Management ", OLPC.

1.4. Образ NAND та двійковий образ

Ви можете зіткнутися з двома варіантамиобразу для запису:

  1. Двійковий файл не розбитийна сторінки та без запасний області.
    Такий варіант можливий якщо ви – розробник пристрою з використанням NANDабо отримали файл від розробника. Такий образ підходить для запису в мікросхеми зі сторінками будь-якого обсягу та будь-яким розподілом запасної області, тільки потрібно знати яким методом буде формуватися запасна область.
  2. Образ, зчитаний з іншої мікросхеми (зразка), що містить запасну область з розміткою поганих блоків, службовою інформацією та контрольними кодами.
    Такий образ можна записати тількив мікросхему з точно такими ж розмірамисторінок та блоків.

Ті спеціалісти, які займаються ремонтом різної апаратури, частіше стикаються з другим випадком. У такому випадку часто буває важко визначити використаний спосіб розподілу запасної області та метод управління поганими блоками.

1.5. Заводське маркування поганих блоків

Єдине, що більш-менш стандартизоване, так це заводське маркування поганих блоків.

  • Погані блоки маркуютьсяна 0-й або 1-й сторінцідля мікросхем із розміром сторінки менше 4К.
  • Для сторінок 4К и більше, маркування може перебувати на останній сторінці блоку.
  • Сам маркер поганих блоківрозташовується в запасний області сторінки в 5-му байті для маленьких сторінок (512 байт) і в 0-му байті для великих (2K).
  • Маркер поганого блокуможе мати значення 0x00або 0xF0 для маленьких сторінокі 0x00 для більшоїх.
  • Хороші блоки завжди маркуються 0xFF.
  • У будь-якому випадку значення відмінне від 0xFFпрограматор сприймає як маркер поганого блоку.
  • Як правило, у сучасних NAND поганий блок повністю заповнений значенням 0x00.

Є одна проблема: поганий блок можна стерти. У такий спосіб можна втратити інформацію про погані блоки мікросхеми.

Однак, якщо мікросхема вже працювала у пристрої, далеко не завжди використовується така методика маркування поганих блоків. Іноді навіть інформація про погані блоки не зберігається у пам'яті NAND. Але найчастіше, якщо навіть розробник програмного забезпеченняУстрою використовує іншу схему управління поганими блоками, заводську розмітку воліє не прати.

1.6. Управління поганими блоками

Розробники NANDмікросхем пропонують використовувати такі схеми управління поганими блоками:

  • Перепусткапоганих блоків
  • Використання запаснийобласті

Також до методів керування поганими блоками іноді відносять використання корекції помилок(ECC). Необхідно відзначити, що використання корекції одиночних помилок не позбавляє багатьох помилок і все одно змушує використовувати одну з наведених вище схем. Крім цього, більшість NANDмікросхеми мають гарантовано беззбійну область, в якій не з'являються погані блоки. Беззбійна область, як правило, розташовується на початку мікросхеми.

Зазначені методи управління поганими блоками добре описані в технічної документаціївиробників NANDта широко обговорені в літературі з використання NAND. Однак коротко нагадаємо їхню суть:

Пропуск поганих блоків:
Якщо поточний блок виявився збійним він пропускається та інформація пишеться до наступного вільного блоку. Ця схема універсальна, проста в реалізації, проте дещо проблематична для випадків, коли погані блоки з'являються в процесі експлуатації. Для повноцінної роботицієї схеми логічний номер блоку повинен зберігатися всередині блоку (стандарт призначення запасної області від Samsung, що це і передбачає). При роботі за цією схемою контролер повинен десь зберігати таблицю відповідності логічних номерів їх блоків фізичним номерамінакше доступ до пам'яті буде дуже сповільнений.

Тому логічним розвитком є ​​схема використання запасної області:
За цим методом весь обсяг пам'яті розбивається на дві частини: основна та резервна. При появі збійного блоку в основній пам'яті він замінюється блоком із запасної пам'яті, а таблиці перепризначення блоків робиться відповідний запис. Таблиця перепризначення зберігається або у гарантовано беззбійному блоці або у кількох примірниках. Формат таблиці різний, зберігається вона в різних місцях. Знову ж таки Samsung описує стандарт на формат та розташування таблиці, але йому мало хто слідує.

2. ПРАКТИКА

2.1. Сканування поганих блоків мікросхем NAND

Програматор ChipStarдозволяє швидко сканувати мікросхему NANDна наявність поганих блоків відповідно до заводського маркування поганих блоків.

Виберіть пункт меню " Мікросхема | Шукати погані блоки мікросхема буде перевірена на наявність поганих блоків. Результат показаний у вигляді таблиці.

Цю дію необхідно виконати лише у тому випадку, якщо ви хочете просто переглянути список поганих блоків. В інших випадках пошук поганих блоків виконується автоматично, коли це необхідно.

2.2. Погані блоки в образі NAND

При зчитуванні образу мікросхеми NAND програматор додатково зберігає інформацію про розмір сторінки та блок мікросхеми. Інформація зберігається в окремому файлі. Так якщо ви рахували і зберегли образ мікросхеми у файлі <имя_файла>.nbin програма створить ще один файл: <имя_файла>.cfs . При відкритті файлу <имя_файла>.nbin файл <имя_файла>.cfs так само буде раховано. У файлі <имя_файла>.cfs записується інформація про розмір сторінки та блоку мікросхеми. Після зчитування мікросхеми або відкриття файлу типу .nbin , Виконується фонове сканування образу на наявність поганих блоків виходячи з інформації про розмір сторінки та блоку.

Параметри NANDта інформацію про погані блоки можна переглянути в закладці NANDредактора програматора:

Двійковий образ NANDможна переглядати в закладці " Основна пам'ять ":

У режимі редактора NANDзапасна область сторінки виділяється більш тьмяним кольором, так само стають доступні кнопки переміщення сторінками, блоками і швидкого переходуна початок запасної області поточної сторінки. У рядку статусу редактора, крім адреси курсора, додатково відображається номер сторінкиі номер блокуу яких знаходиться курсор. Все це дозволяє зручніше переглянути вміст мікросхеми.

2.3.Стирання NAND

За замовчуванням програматор не стираєпогані блоки, але якщо відключити опцію " Перевірка та пропуск поганих блоків погані блоки можуть бути стерті і розмітка поганих блоків може бути втрачена. Вимикати цю опцію потрібно тільки в разі потреби.

Пропускаються лише погані блоки помічені відповідно до заводського маркування. Якщо у пристрої використовується інше маркування поганих блоків, вони будуть стерті, оскільки програмне забезпечення програматора їх не побачить. Для роботи з нестандартними розмітками поганих блоків програматор може використовувати зовнішні плагіни.

2.4. Тестування мікросхеми на відсутність запису

За промовчанням програматор ігнорує всі погані блоки під час перевірки, але якщо відключити опцію " Сканування та пропуск поганих блоків Погані блоки будуть перевірені що, природно, призведе до помилок тестування.

2.5. Запис готового образу у мікросхему

Запис образу NANDу мікросхему дещо відрізняється від звичайних FLASHмікросхем. Насамперед повинні збігатися розміри сторінокобразу та цільової мікросхеми. Якщо використовується керування поганими блоками повинні збігатися розміри блоківобразу та мікросхеми.

Програмне забезпечення всіх програматорів ChipStarпідтримує три методи управління поганими блокамивбудованими засобами та необмежену кількість за допомогою плагінів. Крім того, можна задати кількість блоків, що записуються на початку мікросхеми, що фактично є четвертимспособом керування поганими блоками.

Спосіб 1: ігнорування поганих блоків

Просте копіювання з ігноруванням поганих блоків (погані блоки пишуться так само, як і нормальні).

Вихідний образ Мікросхема
(вихідний стан)
Мікросхема
(Результат)
Блок 0
гарний
Блок
чистий
Блок 0
гарний
Блок 1
поганий
Блок
чистий
Блок 1
хибний
Блок 2
гарний
Блок
чистий
Блок 2
гарний
Блок 3
гарний
Блок
поганий
Блок 3
збійний
Блок 4
гарний
Блок
чистий
Блок 4
гарний
Кордон запису
Блок 5
гарний
Блок
чистий
Блок
чистий

Найбільш добре підходить для копіювання мікросхем NAND, не вникаючи в неї внутрішню структуру, за умови, що записана мікросхема не містить поганих блоків . Якщо у вихідному образі були погані блоки , в результаті утворюються помилкові погані блоки . Поява помилкових поганих блоків не позначиться на функціонуванні пристрою. Однак, якщо мікросхема містить погані блоки, при спробі запису в таку мікросхему з'являться збійні блокиз непередбачуваними наслідками. Порада: можна спробувати повністю стерти мікросхему, включаючи погані блоки, потім виконати копіювання. Якщо запис у поганий блок завершиться успішно (таке часто буває), ваш пристрій функціонуватиме правильно, надалі програмне забезпечення пристрою виявить поганий блок і замінить його хорошим відповідно до свого алгоритму роботи.

Спосіб 2: обхід поганих блоків

Вихідний образ Мікросхема
(вихідний стан)
Мікросхема
(Результат)
Блок 0
гарний
Блок
чистий
Блок 0
гарний
Блок 1
поганий
Блок
чистий
Блок
чистий
Блок 2
гарний
Блок
чистий
Блок 2
гарний
Блок 3
гарний
Блок
поганий
Блок
поганий
Блок 4
гарний
Блок
чистий
Блок 4
гарний
Кордон запису
Блок 5
гарний
Блок
чистий
Блок
чистий

При обході поганих блоків не записуються погані блоки з вихідного образу і не пишеться інформація в погані блоки мікросхеми. Це не найкраща політика копіювання, але вона безпечна щодо поганих блоків мікросхеми: не втрачається інформаціяпро погані блоки мікросхеми та не з'являються помилкові погані блоки. У ряді випадків така політика копіювання допоможе відновити працездатність невідомого пристрою.

Спосіб 3: пропуск поганих блоків

Вихідний образ Мікросхема
(вихідний стан)
Мікросхема
(Результат)
Блок 0
гарний
Блок
чистий
Блок 0
гарний
Блок 1
поганий

Блок
чистий
Блок 2
гарний
Блок 2
гарний
Блок
чистий
Блок 3
гарний
Блок 3
гарний
Блок
поганий
Блок
поганий
Блок 4
гарний
Блок
чистий
Блок 4
гарний
Кордон запису
Блок 5
гарний
Блок
чистий
Блок
чистий

Запис із пропуском поганих блоківпередбачає що у пристрої використовується саме такий алгоритм управління поганими блоками, а чи не якийсь інший. За цих умов гарантовано правильне копіювання інформації.

Спосіб 4: запис тільки гарантовано беззбійної області

Вихідний образ Мікросхема
(вихідний стан)
Мікросхема
(Результат)
Блок 0
гарний
Блок
чистий
Блок 0
гарний
Блок 2
гарний
Блок
чистий
Блок 1
гарний
Кордон запису
Блок
поганий
Блок
чистий
Блок
чистий
Блок 3
гарний
Блок
поганий
Блок
поганий
Блок 4
гарний
Блок
чистий
Блок
чистий
Блок 5
гарний

Блок
чистий

Блок
чистий

У більшості сучасних NANDмікросхеми перші блоки (як мінімум один) гарантовано не мають збоїв. У багатьох пристроях на початку мікросхеми розташовується код завантажувача та операційної системипристрої. Часто досить копіювання лише цих областей.

У діалозі параметрів режимів запису вкажіть розмір, що записується в блоках.

Інші способи керування поганими блоками

Програмне забезпечення програматорів ChipStarпідтримує будь-які алгоритми керування поганими блоками NANDза допомогою зовнішніх плагінів. При наявності встановлених плагінівописи додаткових методівз'являються у списку " Управління поганими блоками NAND ". Налаштувати параметри вибраного методу можна натиснувши кнопку " Зовнішній плагін ".

Використання кодів, що виправляють помилки (ECC)

Використання кодів, що виправляють помилки, дозволяє відновлювати поодинокі помилкина сторінці NAND.

Можуть бути використані різні алгоритми, що відновлюють поодинокі помилки у секторі. Залежно від алгоритму ECC, може бути відновлено різна кількістьпомилок на сектор (512+16 байт). Під терміном " одиночні " розуміється помилка тільки в одному битіданих. Для NAND з розміром сторінки 512+16 байт поняття " сектор" та " сторінка" збігаються. Для NAND з великим розміромсторінок програматор ChipStar використовує схему розмітки сторінки на сектори, як описано . В установках запису або верифікації можна вказати, скільки помилок на сектор може виправляти алгоритм, що використовується у вашому пристрої. Відповідно, мікросхеми з допустимою кількістю помилок не будуть забраковані, інформація про кількість помилок, що виправляються, виводиться у вікні статистики:

Інформацію про кількість припустимих помилок на сектор для кожної конкретної мікросхеми можна уточнити у документаціїна мікросхему. Всі мікросхеми NAND, що знову додаються, вносяться в базу даних програматора з урахуванням кількості припустимих помилок.

При самостійному додаваннімікросхем:

  • якщо підтримується ONFI, то припустима кількість помилок на сектор зчитуєтьсяз таблиці параметрів мікросхеми та встановлюєтьсяу потрібне значення.
  • якщо мікросхема не підтримує ONFI, користувач має встановити значення самостійно, використовуючи документацію на мікросхеми.

Для нових мікросхем NANDвиробництва Samsungзначення припустимої кількості помилок на сектор закодовано у складі ідентифікатора мікросхеми. Тому для таких мікросхем припустиму кількість помилок на сектор також буде встановлено правильно.

При зчитуванні вмісту мікросхеми з метою його подальшого збереження чи копіювання, поодинокі помилки не можуть бути достовірно виявлені. Отриманий образ може бути окремо підданий аналізу на помилки шляхом обчислення перевірочних кодів ECC зовнішнім додатком, за умови, що точно відомий алгоритм і розмітка сторінки .

Програмне забезпечення програматора ChipStar пропонує непрямий статистичний спосібвиявлення та усунення одиночних помилок. Спосіб дозволяє виявити тільки нестійкіпомилки з не гарантованоюдостовірністю. Для читання з виявленням помилок потрібно вибрати режим " Вибіркове читання" і на закладці "NAND" відзначити прапорець " Увімкнути режим виправлення помилок"

Можна налаштувати кількість повторів читання для порівняння та загальну кількість повторів читання за помилки. Слід мати на увазі, що використання даного способуістота уповільнює процес читання.

Статистичний алгоритм виявлення помилок працює так:

  1. Сторінка NAND зчитується кілька разів поспіль (не менше трьох).
  2. Лічені дані побайтно порівнюються.
  3. Якщо помилок порівняння не виявлено, передбачається, що сторінка не містить помилок.
  4. Якщо виявлено помилки під час порівняння, сторінка зчитується ще кілька разів.
  5. За кожною помилкою підраховується кількість лічених одиницьі нулів.
  6. Правильним значенням ("0" або "1") вважається те, яких виявилося більше.

Алгоритм добре працює у тому випадку, якщо ймовірність помилки у конкретному биті мікросхеми менше 0.5. Під час читання мікросхеми ведеться підрахунок "виправлених" помилок та ймовірності правильного читання.

2.6. Перетворення двійкового образу на образ NAND

Все описане вище більше стосувалося копіювання NANDта записи за зразком мікросхеми, проте часто буває потрібно записати вихідний бінарний образ програми у чисту мікросхему. Перед записом потрібно перетворити двійковий образв образ NAND, додавши до кожної сторінки запасну областьта правильно заповнивши її. Для цього відкрийте ваш двійковий файл, виберіть пункт меню " ". З'явиться діалог:

Вкажіть режим перетворення у формат NAND: " Образ двійковий... ", вкажіть розмір сторінки та блоку NAND або виберіть необхідну мікросхему. Виберіть формат запасний області. Програматор підтримує просте заповнення області значеннями FF вбудованими засобами та інші способи за допомогою плагінів. Разом із програматором постачається плагін, що реалізує призначення запасної області, рекомендований Samsung.

Якщо вам необхідно реалізувати будь-який інший варіант розподілу - повідомте нам, і ми підготуємо відповідний плагін або ви можете реалізувати необхідний плагін самостійно.

2.7. Сумісність із образами NAND, ліченими іншими програматорами

Якщо у вас є образ NAND, лічений іншим програматором або отриманий з іншого джерела, його потрібно перетворитиу формат, придатний для запису програматором ChipStar.

Для цього виконайте такі дії:

  • Відкрийте файл, виберіть пункт меню " Правка|Переключити режим NAND редактора З'явиться діалог, як показано вище.
  • Вкажіть режим перетворення на формат NAND: "Образ уже NAND... ", вкажіть розмір сторінкиі блоку NANDабо виберіть потрібну мікросхему. Натисніть " Продовжити".
  • У редакторі з'явиться закладка NAND і почнеться сканування образу на погані блоки.
  • Отриманий файл можна зберегти у форматі NAND, файл отримає розширення .nbin за замовчуванням.

Для успішної роботиз мікросхемами NAND FLASH(нанд флеш) необхідно, як мінімум:

    Мати уявлення про структуру NAND FLASH (нанд флеш), існуючих способахта алгоритми використання інформації, що зберігається в такій пам'яті.

    Мати програматор, який коректно підтримує роботи з пам'яттю NAND Flash тобто. дозволяє вибрати та реалізувати необхідні параметри та алгоритми обробки.

Програматор для NAND FLASH має бути дуже швидким. Програмування чи читання мікросхеми об'ємом у кілька Гбіт на звичайному програматорі за часом займає кілька годин. Очевидно, що для більш менш регулярного програмування NAND Flash потрібен спеціалізований швидкий програматор, адаптований для роботи з мс. високої щільності. На сьогоднішній день найшвидший програматор Flash NAND - ChipProg-481.

Програмування NAND FLASH на програматорах ChipProg

При роботі з NAND Flash програматор надає широкий спектр можливостей щодо вибору/налаштування способів та параметрів програмування. Усі параметри, що впливають на алгоритм роботи програматора з мікросхемою, виводяться у вікно "Редактор параметрів мікросхеми та алгоритму програмування". При необхідності, будь-який з цих параметрів може бути змінений, щоб обрана дія (програмування, порівняння, читання, стирання) - проводилося за алгоритмом необхідному користувачевіпрограматора.

Вікно "Редактор параметрів мікросхеми та алгоритму програмування" в інтерфейсі програматора під час програмування NAND Flash.

Велика кількість настроюваних параметрів, що формують алгоритм роботи програматора NAND Flash продиктовано бажанням надати універсальний інструмент, що дозволяє користувачеві максимально повно реалізувати всі особливості властиві структурі NAND Flash. Для полегшення життя програматори ChipProg-481 надають наступні можливості при виборі будь-якої мікросхеми NAND Flash:

  • Усі параметри приймають значення, задані в попередньому сеансі (сесії) програмування вибраної NAND Flash . (кількість збережених сесій необмежена).
  • Всі параметри приймають значення, задані для даної NAND Flash в рамках "проекту" (кількість "проектів" необмежена)
  • Усі параметри автоматично набувають необхідних значень після запуску "скрипта". "Скрипти" пишуться на вбудованому в оболонку програматора C подібною мовою.
  • Усі (або вибірково) параметри набирають значення за замовчуванням.
  • Значення всіх параметрів доступні для редагування в графічний інтерфейспрограматора.

Розглянемо режими та параметри програмування реалізовані у програматорі.

Режими програмування.

  1. Invalid Block Management
  2. Spare Area Usage
  3. Guard Solid Area
  4. Tolerant Verify Feature
  5. Invalid Block Indication Option

1. Робота з поганими блоками.

Перед програмуванням NAND Flash можна/потрібно вибрати один із способів роботи з поганими блоками.

2. Використання області Spare Area.

Do Not Use

Spare Area у мікросхемі не використовується. У мікросхемі програмуються сторінки пам'яті без урахування Spare Area.

User Data

Spare Area використовується як користувальницька пам'ять. У цьому випадку при програмуванні мікросхеми інформація з буфера поміщається спочатку в основну сторінку мікросхеми, а потім додаткову область Spare Area. У цьому випадку буфер програматора виглядає як безперервний потік основних сторінок мікросхеми та пристикованих до них областей Spare Area.

User Data with IB Info Forced

Spare Area інтерпретується аналогічно попередньому випадку за винятком того, що маркери поганих блоків прописуються замість інформації користувача.

3. Guard Solid Area

Режим використання спеціальної областібез поганих блоків. Зазвичай такі області використовуються як завантажувач мікропроцесорів. У цій галузі неприпустимо використання поганих блоків.
Опція використовується разом із параметрами:

  • Solid Area - Start Block - Початковий блок області без поганих блоків.
  • - кількість блоків у цій галузі.

У випадку, якщо всередині заданого діапазону Solid Areaтрапиться поганий блок, програматор видасть помилку.

4. Чи не чутливість до помилок порівняння.

Ця опція дозволяє увімкнути режим нечутливості до помилок порівняння.
Зазвичай, цю опцію можна використовувати, якщо у пристрої користувача застосовуються алгоритми контролю та корекції помилок (ECC). У цих випадках допускається наявність певної кількості помилок на розмір масиву даних. Ці параметри і вказуються в параметрах алгоритму програмування NAND Flash:

  • ECC Frame size (bytes) - Розмір масиву даних.
  • Acceptable number of errors - допустима кількість однобітних помилок.

5. Invalid Block Indication Option.

У цій опції вибирається інформація, яка використовується як маркер поганих блоків. Допускається вибрати значення 00h, або 0F0h.

  • IB Indication Value~ 00 або F0

Параметри програмування.

  1. User Area
  2. Solid Area
  3. RBA Area
  4. ECC Frame size
  5. Acceptable number of errors

a.Користувальницька область.

Користувацька область - це область мікросхеми, з якою працюють процедури Програмування, Читання та Порівняння.
Процедури Стирання та Контролю на чистоту працюють з усім масивом мікросхеми.

Користувачеві необхідно встановити параметри:

  • User Area - Start Block - Початковий блок користувальницької області.
  • User Area - Number of Blocks - кількість блоків в області користувача.

b. Область без помилок.

Установки режиму Guard Solid Area.

  • Solid Area - Start Block - Початковий блок області без поганих блоків.
  • Solid Area - Номер блоків - кількість блоків у цій галузі.

c. Область розміщення RBA.

  • RBA Area - Start Block - початковий блоктаблиці RBA.
  • RBA Area - Number of Blocks - Кількість блоків у таблиці RBA.

d.Розмір кадру ECC .

  • ECC Frame Size- Параметр визначальний розмір масиву даних, у якому допускаються однобітні помилки.

e. Допустима кількість помилок.

  • Acceptable number of errors - параметр визначає кількість однобітних помилок, допустимих у масиві, розмір якого визначається параметром ECC Frame size.

Карта поганих блоків

Карта поганих блоків створюється у підшарі Invalid Block Map. Карта блоків представляється як безперервний масив біт. Хороші блоки є значенням 0, погані блоки - 1.

Наприклад, значення 02h за нульовою адресою говорить про те, що 0,2,3,4,5,6,7 блоки є відмінними, перший блок є нехорошим. Значення 01h на першу адресу свідчить, що тільки восьмий блок є поганим із групи блоків 8..15.

Копіювання NAND Flash

Як ілюстрацію важливості "видучого" вибору режимів і параметрів при програмуванні NAND Flash в програматорі, розглянемо ситуацію, коли у деяких програмістів виникають проблеми. Найчастіше це заміна NAND Flash в "пристрої", який перестав працювати. Стандартний підхід- за аналогією із заміною звичайної мікросхеми пам'яті:

  1. Отримати прошивку працюючої мікросхеми. Як правило, для цього зчитується вміст мікросхеми-оригіналу.
  2. Прошити нову аналогічну мікросхему.
  3. Порівняти вміст запрограмованої мс. з прошивкою "оригіналу". Якщо порівняння минуло, мікросхема – копія готова.

Якщо потрібно програмувати NAND Flash, не все так просто і однозначно.

  1. Прошивка Nand Flash, отримана при зчитуванні програматором з "оригіналу" - істотно залежить від встановлених у програматорі режимів та параметрів.
  2. Для того, щоб коректно запрограмувати нову NAND Flash і отримати повну копію, необхідно перед програмуванням встановити в програматорі режими та параметри, що відповідають прошивці "оригіналу". При цьому необхідно враховувати можливість існування поганих блоків.

Для отримання мікросхеми-копії, у якої прошивка NAND Flash ідентична зразку, необхідно надходити в такий спосіб.

Підготовка до копіювання.

Для копіювання необхідні мікросхема-оригінал та мікросхема-копія (мс. в яку передбачається записати образ оригіналу). Обов'язкові вимоги:

  1. Обидві мікросхеми NAND Flash та оригінал та копія повинні бути одного типу.
  2. Мікросхема-копія повинна мати поганих блоків.

Щоб визначити, чи має мікросхема-копія погані блоки, необхідно встановити мікросхему програматор, і у вікні “Редактор параметрів мікросхеми” задати параметри мікросхеми за замовчуванням - кнопка "All Default".

Запускається процедура контролю на стертість (для економії часу можна відразу скасувати цю процедуру, зчитування карти поганих блоків здійснюється на самому початку). У вікні "Програмування" інтерфейсу програматора, у полі "Інформація про операції" з'являється інформація про погані блоки.


Копіювання.

Перед копіюванням мікросхеми NAND Flash у програматорі обов'язково мають бути зроблені наступні налаштування параметрів у вікні "Редактор параметрів мікросхеми":

Invalid Block(IB) Management

Do NOT USE

Spare Area Usage

User Data

User Area – Number of Blocks

Максимальне значення блоків у мікросхемі

У програматор встановлюється NAND Flash зразок та зчитується. Потім програматор встановлюється мікросхема-копія, стирається, записується і порівнюється. У разі успішного проходження всіх трьох процедур, запрограмована NAND Flash виявляється повною копією оригіналу.

Структура пам'яті NAND Flash.

NAND Flash пам'ять підрозділяється на блоки (Block) пам'яті, які у свою чергу діляться на сторінки (Page). Сторінки бувають великі (large page) та маленькі (small page). Розмір сторінки залежить від загального розмірумікросхеми. Для маленької сторінки зазвичай характерні мікросхеми об'ємом від 128 Кбіт до 512 Кбіт. Мікросхеми з великим розміром сторінки мають об'єм від 256Кбіт до 32Гбіт та вище. Невеликий розмір сторінки дорівнює 512 байтам для мікросхем з байтовою організацією і 256 слів для мікросхем зі слів організацій шини даних. Велика сторінкамає розмір 2048 байт для байтних мікросхем та 1024 для слів. У Останнім часомз'являються мікросхеми з більшим розміром сторінки. Вона вже становить 4096 байт для байтних мікросхем.

Структура пам'яті мікросхем NAND Flash із малим розміром сторінки фірми STMicroelectronics.

Структура пам'яті мікросхем із великим розміром сторінки фірми STMicroelectronics.

Погані блоки NAND Flash

Характерною особливістю мікросхем NAND Flash є наявність поганих (дефектних) блоків (Bad blocks) як у нових мікросхемах, так і поява таких блоків у процесі експлуатації. Для маркування поганих блоків, а також для збереження додаткової службової інформації або корекційних кодів, в архітектурі NAND Flash в додатку до кожної сторінки пам'яті даних передбачена додаткова область Spare area. Для мікросхем з малою сторінкою ця область має розмір 16 байт/8 слів. Для мікросхем з великою сторінкою- 64 байти / 32 слова.

Зазвичай виробник мікросхем гарантує кількість поганих блоків, що не перевищує певного розміру. Інформація про погані блоки поставляється виробником мікросхем у певному місці додаткової області Spare Area.

Маркування поганих блоків у мікросхем NAND Flash здійснюється записом зазвичай значення 0 за певною адресою області Spare Area нульової сторінки поганого блока. Маркери поганих блоків лежать у певних адресахобласті Spare Area.

Організація пам'яті

Адреса маркерів поганих блоків у Spare Area

Байтна організація, розмір сторінки – 512 байт.

Словна організація, розмір сторінки – 256 слів.

Байтна організація, розмір сторінки – 2048 байт і більше.

Словна організація, розмір сторінки – 1024 слів і більше.

Потрібно мати на увазі, що маркери поганих блоків поміщаються у звичайні осередки Flash пам'яті Spare Area, які стираються при стиранні всього блоку пам'яті. Тому для збереження інформації про погані блоки перед стиранням обов'язково потрібно зберегти цю інформацію, а після стирання її відновити.
У програматорах ChipProg під час встановлення опції Уvalidlocklock Managementу будь-яке значення крім Do Not Useзбереження та відновлення інформації про погані блоки відбувається автоматично.

Існує три найбільш поширені способи обробки поганих блоків:

  1. Skip Bad Blocks(Пропуск поганих блоків . )
  2. Reserved Block Area(Резервування блоків)
  3. Error Checking and Correction(Контроль та корекція помилок . )

1. Пропуск поганих блоків.

Алгоритм пропуску поганих блоків полягає в тому, що при записі в мікросхему аналізується який блок здійснюється запис. У разі наявності поганого блоку запис у цей блок не здійснюється, поганий блок пропускається, запис здійснюється в блок наступний після поганого.

2. Резервування блоків.

У цьому методі пам'ять всієї мікрохеми ділиться на три області: User Block Area (UBA) - користувальницька область, Block Reservoir - резервна область, що йде відразу за областю користувача, і таблицю відповідності поганих блоків хорошим (Reserved Block Area - RBA).

Алгоритм заміни поганих блоків у цьому методі такий: при виявленні поганого блоку області UBA блок переноситься в область Block Reservoir, при цьому в таблиці RBA робиться відповідний запис заміни блоку.

Формат таблиці RBA:

2 байти В області RBA знаходяться дві таблиці у двох блоках. Таблиця у другому блоці використовується як резервна на випадок, якщо інформація у першій виявиться недостовірною.

3. Контроль та корекція помилок.

Для збільшення достовірності даних можна використовувати алгоритми контролю та корекції помилок (Error Checking and Correction - ECC). Ця додаткова інформаціяможе поміщатися в вільний простір Spare Area.

*) Примітка: NAND ~ Not AND - у булевій математиці позначає заперечення «І»

Всім привіт! Буквально днями зустрів свого давнього приятеля. Ми розмовляли, і він, зі словами «Дивися з яким телефоном я зараз ходжу!», продемонстрував свою стареньку кнопкову Nokia. З'ясувалося, що на його iPhone стала постійно «злітати» прошивка – довелося віддати смартфон у сервісний центр. Здавалося б, звичайна справа...

Проте, для приятеля виявився незвичайним той перелік робіт, які проводитиме сервіс. Повна діагностика, оновлення програмного забезпечення (за потреби) та інші «звичайні штуки» - тут все стандартно і зрозуміло. Головне ж питання викликала така фраза майстра - «швидше за все, треба перекочувати Nand Flash».

Я, звичайно, в сервісі не показав, що не розумію про що мова - мовляв і так все знаю без вас. Ви головне – робіть. Але прийшов додому і одразу поліз «гуглити» – а що це взагалі таке, Nand Flash? І на фіга його кудись катати всередині iPhone?

Посміялися з ним, розійшлися, а я подумав - чому б не написати коротеньку нотатку на цю тему? Багато часу це не займе, а людям, які зіткнулися з тією ж проблемою, що й мій знайомий, стане трохи зрозумілішим, що взагалі відбувається з їхнім смартфоном. Подумав – зробив. Поїхали!:)

Що таке Nand Flash у iPhone?

Це внутрішня пам'ятьпристрої. Так, так, те саме і якого часто не вистачає власникам iPhoneна 16 Гб.

Грубо кажучи, Nand Flash в iPhone 7 32 GB це і є ті самі 32 GB внутрішньої пам'яті.

Розташована пам'ять на основній системній платіпристрої і ні чим примітним не виділяється - звичайнісінький чіп.

Звичайно, це ніяка не флешка - не можна розібрати iPhone, легко від'єднати Nand Flash, поставити іншу і думати, що все буде «ОК». Не буде. Хоча варто обмовитися, що в деяких випадках це все-таки можливо. Але про це трохи далі. А поки що переходимо до неполадок...

Причини несправності

Варіантів не дуже багато, і всі вони, як правило, «стандартні»:

  1. Падіння пристрою.
  2. Інші фізичні ушкодження.
  3. Попадання рідини.
  4. Шлюб.
  5. Джейлбрейк.

Тут особливо й розписувати нема чого - ясна річ, що якщо пристрій кидати і заливати водою, то це позначиться на його працездатності.

Хоча, окремо все-таки відзначу такий пункт, як заводський шлюб - таке теж дуже можливе. Я був свідком подібної ситуації - iPhone щойно куплений, а працювати до ладу не працює - перезавантажується, при відновленні показує помилки і взагалі веде себе дивно. Віддали в сервіс, як результат - шлюб Nand Flash пам'яті та наступна заміна пристрою.

Симптоми несправності Flash пам'яті iPhone

Якихось чітких і певних симптомів у цієї несправності немає (на екрані не вискакує напис - у вашого пристрою проблеми з пам'яттю), тому про все це можна здогадатися лише за непрямими ознаками:


До речі, про помилки...

Помилки iTunes, що вказують на несправність Nand Flash

Самий вірний спосібборотьби з різними неполадками у роботі пристрою. Однак, якщо iPhone має проблеми з Nand Flash пам'яттю, то процес відновлення може перериватися і супроводжуватися наступними характерними помилками:


Але важливо пам'ятати ось про що - iTunes влаштований таким чином, що одна і та ж цифра помилки може мати кілька причин.

Наприклад, помилка 4013 може сигналізувати як про проблеми з мікросхемою, так і про неоригінальність використання дроту для підключення до ПК.

Як бачите, розкид дуже великий - від простого дроту до дуже складного ремонту. Тому використовувати цей перелік помилок для попереднього аналізу ситуації можна, а от сліпо довіряти - не можна.

Ремонт Nand Flash пам'яті - чи це можливо?

Можливо. Але, звичайно, не «в домашніх умовах». Понад те, далеко ще не всі сервісні центри вміють робити цю операцію. Наприклад, «в наметі на ринку» вам з великою ймовірністю допомогти не зможуть - там просто не буде необхідного обладнання. Та й навик, який, має бути.

Вкотре окремо зауважу – якщо у вашого iPhone не закінчився гарантійний термін(), то нічого вигадувати не потрібно. З великою ймовірністю ви отримаєте натомість новий пристрій.

Якщо з гарантією «проліт», а ремонт Nand Flash пам'яті все-таки необхідний, то сервісний центр має два варіанти виправлення ситуації:


До речі, якщо говорити про обладнання для прошивки Nand Flash, то подібні програматори досить різноманітні, але одна річ їх об'єднує - ціна. Усі вони стоять пристойних грошей- далеко не кожен може дозволити собі таку штуку.

Який висновок можна зробити з цього? Проблеми з пам'яттю iPhone- Це досить серйозна поломка, яку дуже важко виправити самостійно. Але й безнадійну ситуацію назвати не можна. Головне - знайти хороший сервісний центр з грамотними фахівцями та необхідним обладнанням. І тоді iPhone щедовго радуватиме вас своєю роботою!

P.S. Так, короткої нотатки не вийшло :) Втім, що є, тобто - не видаляти ж тепер. Та й інформація корисна - комусь стане в пригоді. Чи згодні? Ставте "лайки", тисніть на кнопки соціальних мереж- Підтримайте автора! Він старався чесно. Дякую!

P.S.S. Залишились якісь питання? Чи є чим доповнити статтю чи хочеться розповісти свою історію? Для цього існують коментарі – пишіть сміливо!