Програмування nand flash

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

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

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

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

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

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

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

Типові розміри сторінок NAND (в байтах):

Розмір основної області

Розмір запасний області

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

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

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

Використання запасний області
для мікросхем з розміром сторінки 512 + 16 байт:

Логічний номер сектора

Маркер поганого блоку

ECC код для основної області сторінки

ECC код для логічного номера сектора

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

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

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

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

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

Якщо ваш випадок - перший, і ви - розробник, то ви напевно маєте всю необхідну інформацію. Перед записом потрібно перетворити вихідний двійковий файл в образ NAND. Дивіться розділ "Перетворення двійкового способу в образ NAND"

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

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. Однак коротко нагадаємо їх суть:

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

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

2. ПРАКТИКА

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

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

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

Програмування nand flash

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

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

Програмування nand flash

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

Програмування nand flash

2.3.Стіраніе NAND

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

Програмування nand flash

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

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

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

Програмування nand flash

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

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

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

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

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

мікросхема
(вихідний стан)

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

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

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

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

Програмування nand flash

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

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

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

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

Програмування nand flash

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

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

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

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

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

Таким же чином потрібно перетворити файли, створені програмним забезпеченням ChipStar версій раніше 3.5.1.0