Универсальный программатор nand flash. Делаем JTAG программатор для прошивки флеш-памяти спутниковых тюнеров и не только. Запись готового образа в микросхему

2019-12-30 Дата последнего обновления программы: 2019-12-30

Двуликий Янус

Мы решили назвать этот программатор "Янус ".

Почему так? Потому что в римской мифологии Янус - это двуликий бог дверей, входов и выходов, а также начала и конца. Какая связь? Почему наш программатор ChipStar-Janus двуликий ?

А вот почему:

  • C одной стороны , этот программатор - простой. Распространяется как бесплатный проект , его можно легко изготовить самому .
  • C другой стороны , он разработан фирмой, длительное время профессионально занимающейся разработкой и производством различной радиоэлектронной аппаратуры, в том числе программаторами.
  • C одной стороны , этот программатор - простой, с первого взгляда имеет не сильно впечатляющие характеристики.
  • C другой стороны , работает совместно с профессиональной программой (кстати, точно такой же, как и остальные профессиональные программаторы ChipStar).
  • C одной стороны , мы предлагаем этот программатор для свободной бесплатной сборки.
  • C одной стороны , мы его продаем и в готовом виде, как обычный бюджетный продукт.
  • C одной стороны , на самодельный программатор не распространяется гарантия (что естественно).
  • C одной стороны , если вы его смогли собрать, то и отремонтировать сможете, да и программатор настолько простой, что ломаться, собственно, нечему.
  • C одной стороны , это простой внутрисхемный программатор.
  • C одной стороны , через простые адаптеры расширения он поддерживает программирование NAND FLASH и других микросхем уже "в панельке".

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

Что нас побудило разработать этот программатор.

Есть великое множество простых специализированных программаторов, пригодных для самостоятельного изготовления .

Есть множество дешевых китайских программаторов в уже готовом виде.

Есть немало любительских разработок , часто по качеству превосходящих последние.

Казалось бы, в чем смысл очередной поделки?

Мы длительное время занимаемся разработкой производством и поддержкой универсальных программаторов , в основном назначения. У нас богатый опыт работы с самыми разными микросхемами. Часто к нам обращаются люди уже собравшие, а часто и купившие, какой-нибудь из выше названных "изделий". Нашим специалистам часто без смеха/слез/ужаса (нужное подчеркнуть) невозможно смотреть на схемные решения, качество сборки и, особенно, на программное обеспечение этих приборов. Ладно когда программатор стоит "три копейки", купил, что-то работает, что-то не работает, зато деньги не большие. Но часто соотношение цена/возможности таких приборов у нас вызывают, мягко говоря, удивление. Хочется воскликнуть: это столько не стоит!

Кроме всего выше названного есть особая категория программаторов, пригодных для самостоятельного изготовления - это программаторы (точнее, схемы программаторов и программное обеспечение), разработанные специалистами фирм производящих микросхемы (в основном микроконтроллеры). Такие программаторы спроектированы вполне профессионально, в их схемотехнике нет "ляпов". Они поддерживают все заявленные микросхемы. Но есть два "маленьких" недостатка: перечень программируемых микросхем весьма ограничен (что вполне понятно) и программное обеспечение весьма спартанское - никаких лишних функций, как правило - только стереть , записать , верифицировать . Часто даже функции чтения микросхемы нет.

Итак, программатор ChipStar-Janus в начальной конфигурации - это внутрисхемный программатор. В таком режиме он поддерживает микроконтроллеры PIC и AVR фирмы Microchip , некоторые микроконтроллеры архитектуры MCS51 , микроконтроллеры фирмы STMicroelectronics и еще ряд других, а также микросхемы последовательной памяти с интерфейсом I2C (в основном серия 24 ). К разъему расширения программатора можно подключить простейшие адаптеры и начать программировать микросхемы памяти "в панельке".

Сейчас реализовано программирование "в панельке":

  1. EPROM ) с интерфейсом I2C (серия 24xx );
  2. микросхемы последовательной флэш памяти (Serial FLASH ) с интерфейсом SPI (SPI Flash );
  3. микросхемы последовательной памяти (Serial EPROM ) с интерфейсом MW (серия 93xx );
  4. микросхемы NAND FLASH ;

Программатор и программное обеспечение поддерживает технологию самостоятельного добавления микросхем в три клика. Пока реализовано добавление микросхем NAND и I2C . В самое ближайшее время планируется реализовать эту технологию для микросхем MW (серия 93xx ) и AVR . Таким образом, вы получаете не просто программатор, а мощный инструмент для самостоятельной работы .

Три способа получить программатор ChipStar-Janus

1-й способ:
Собрать программатор самому полностью

Способ подходит тем, у кого есть время, опыт и желание, но ограничены финансовые возможности. Или просто интересно.

Алгоритм действий:

2-й способ:
Собрать программатор самому, купив готовую печатную плату и прошитый микроконтроллер

Способ аналогичен предыдущему, только вы избавите себя от самых трудноосуществимых операций: изготовления печатных плат и прошивки микроконтроллера без программатора.

Алгоритм действий:

  1. Прочитать условия использования самостоятельно собираемого программатора.
  2. Прочитать инструкцию по сборке программатора.
  3. Скачать полную документацию на программатор.
  4. Купить набор для сборки (готовую печатную плату и микроконтроллер с уже записанной прошивкой).
  5. Закупить необходимую комплектацию для сборки программатора согласно

Это универсальное устройство, для программирования очень широкого ассортимента микросхем, начиная от банальных I2c и MicroWire чипов до многоногих Nand Flash.
За многие годы радиолюбительства и увлечения электроникой у меня накопилось достаточно большое количество таких самодельных устройств, собираемых под конкретные задачи и просто ради самого процесса. С появлением все большего ассортимента микросхем и увеличением их емкости, пришлось обзавестись и заводским устройством, широко известным MiniPro TL-866.
Девайс и правда, очень симпатичный, служит верой и правдой уже который год, но отсутствие контроля контактов, аппаратные ограничения и вследствие - невозможность работы современными чипами, заставили меня обратить взор на более дорогие и функциональные устройства. Беглый обзор рынка подобных устройств привел к осознанию того, что моим потребностям наиболее четко соответствуют два девайса: российский ChipProg-48(1) и иранский TNM5000. Второй оказался более чем в 2 раза дешевле при сопоставимом функционале, и после недолгих уговоров моя жабба, потерявшая бдительность в процессе выбора подарка себе любимому на день рождения, не смогла аргументировано возразить.
На странице официального продавца на Aliexpress был сделан заказ, выбрана доставка Singapore Post и произведена оплата. В процессе дальнейшей переписки с продавцом, кстати, очень общительным, выяснилось, что он предпочтительнее всего, шлет курьерской SPSR. Так быстрее, но требуются дополнительные паспортные данные для таможни, что вызывало некоторые опасения, т.к. посылку встречал не гражданин РФ. Сговорились на обычную russian air, разницу в доставке продавец скомпенсировал не сильно ходовым переходником SSOP34.
Несмотря на все опасения, доставка была быстрой и беспроблемной.
Итак, иранский программатор из Китая, был выслан в Россию и передан в Беларусь специально обученным резидентом в Москве, гражданином РБ с временной регистрацией. Столь сложная схема помогла избежать уплаты пошлин на почтовые вложения стоимостью более 20 евро, для товаров, пересекающих таможенную границу РБ.


На фото сам программатор, USB кабель для подключения к компьютеру, вакуумная присоска для переноса мелких чипов, кабель для внутрисхемного программирования, бонусный чип NAND Flash K9GAG08U0E-SCB0, и переходник SSOP34, довольно качественный. CD диск с ПО и инструкциями на фото не попали, забыл в коробке.


Коробка оказалась неожиданно больше, чем я себе представлял, содержимое соответствовало описанию.
Для сравнения, фото с популярным TL-866.








К слову, у продавца ценник на переходники просто конский, я купил требуемый мне переходник TSOP48-DIP48 у другого продавца в разы дешевле, просто отличного качества и панель вроде даже японская YAMAICHI.




Корпус программатора выполнен из довольно качественного пластика темного цвета, без заусенцев, облоя и других атрибутов полуподвальной сборки. С одной стороны корпуса, разъем внутрисхемного программирования на 10 контактов, это стандартный IDC10. Сверху, 48-пиновый DIP-сокет фирмы ARIES. Любопытно, что в отличии от других сокетов, он в открытое состояние приводится с усилием, а в состояние «вставлен чип, зажат и готов к работе» приводится сам собой, это его дефолтное состояние. На верхней части корпуса также есть индикатор активности и наклейка с моделью программатора.


С другой стороны - стандартный USB-B для подключения к ПК и разъем для дополнительного питания, неизвестной мне конструкции, заботливо прикрытый предупреждающим стикером.


Снизу корпуса - наклейка с информацией, гарантийный стикер на шурупе и резиновые ножки.


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






Вот и описание программатора на русском, тоже немного поплагиачу:

Дополнительная информация

Flash-память (Parallel / Nand / Serial), EPROM, EEPROM, Serial EEPROM, микроконтроллеры, энергонезависимое ОЗУ, FRAM, CPLD, PLD, FPGA).
Высококачественная 48pin ZIF панель и 10pin ISP / JTAG разъем.
USB 2.0 High Speed
Программирование 1 Гбит Nand Flash менее 50 сек
Анализ NAND микросхем на наличие BAD блоков, умеет пропускать их при записи, при чтении.
Автоматическое обнаружение всех flash-память / микроконтроллеров с Device ID.
Удобное программное обеспечение для WIndows XP/VISTA/7/8 (32,64 бит).
Функция тестирования контактов поставленной микросхемы (Pin Test)!
Если вы плохо вставили ИС в колодку, или она имеет загрязненные выводы, софт программатора сообщим об этом и укажет номер этого контакта!
Низкая стоимость основного блока и бюджетные адаптеры.
Один адаптер 32/40/48 TSOP для всех flash-память.
Один TSOP56 адаптер на все 56pin flash-памяти.
Специальные возможности, значительно расширяющие возможности программатора, мы получаем несколько программаторов в одном:
Полноценная эмуляция Altera USB-Blaster для Quartus-II Software.
Полноценный Serial Port Emulation.
Vehicle ECU, Immoblizer & Dashboard microcontroller Support.
TopJTAG Flash Programmer, TopJTAG Probe.
Сердцем программатора TNM 5000 является 500.0000 Gate FPGA with a designed CPU core with 96MHz Clock для быстрого программирования микросхем.
Работа с OTP областью микросхем EN25F16, EN25F80, EN25Q16, EN25Q32, EN25Q64… Считывание… сохранение… редактирование… программирование OTP области микросхем.
Параллельные flash до 56pin:
Он поддерживает различные виды корпусов (PLCC, TSOP1, TSOP2, VSOP &…). Все flash могут быть автоматически обнаружены с помощью программного обеспечения. Используя один адаптер для всех 32-48 pin TSOP flash, пользователю нужен только 1 адаптер для более чем 2000 flash-чипов.
NAND Flash Memories:
Программатор имеет дополнительное программное обеспечение Nand +, специально предназначенное для NAND Flash. Nand + программное обеспечение имеет один из самых полных списков NAND Flash Memories с алгоритмом коррекции плохих данных в MLC NAND. TNM5000 является одним из самых быстрых Nand программаторов в мире со скоростью чтения и записи до 8 мегабайт в секунду. Все Nand могут быть автоматически обнаружены с помощью программного обеспечения.
Serial flash-memories:
Все 8-16 Pins serial SPI flash поддерживаются программатором. Все flash SPI могут определяться автоматически с помощью программного обеспечения. Он читает и программирует SPI flash с максимальной безопасной скоростью 6-7 Мбит / с. Также снимает защиту, с защитой записи мигает, прежде чем писать данные.
Микроконтроллеры:
ATMEL: Все AVR 8 бит чипы (ATMEGA/ATTINY/AT90S) поддерживаются на ZIF Scocket & ISP кабелем. Поддерживается программирование AVR до 64 pin. Поддерживаются недавно введенные серии ATXMEGA и PDI и JTAG метод. Старые серии C51 & новые single cycle C51 серии полностью поддерживаются. Все серии могут быть обнаружены автоматически. ARM7 поддерживается программирование по JTAG.
Microchip PIC:
Один из наиболее полный список устройств для Microchip PIC микроконтроллеров включая все PIC12F / PIC12C / PIC16C / PIC16F / PIC18F / DPIC33F / J & K Series. Устройства до 40 Pins может быть запрограммирован на ZIF Scocket, все PIC могут быть обнаружены автоматически и программируются ISP кабелем.
Дополнительно:
Программирует MIO KB9012, ST, SST, Philips (NXP), Motorola, Syncmos, Silicon Lab, ICSI, Infineon, Intel, Winbond &…
Автомобильные микроконтроллеры:
Поддержка ST10F & TMS370 серий ISP кабелем для многих BOSCH / VALEO / SAGEM ECUs (полная поддержка ST10F из списке устройств XPROG- м программатора). Поддержка Siemense & Infineon SAK - C167, подключенного к 44 или 48 pins flash (Siemense / BOSCH / SAGEM S2000 ECU), like HSE FlasHit Programmer. Поддержка NEC & Motorola устройств для Dashboards. Поддерживает Motorola / FreeScale MC68HC11KA4 / MC68HC11A8. Поддерживает MC68HC908 series OTP fuse added. Infineon Tricore family Audo-NG (Next Generation) TC1796 TC1766 with support of External 32-bit Flash (S29CD032 - S29CD016) in new Bosch ECUs. Motorola MPC562 MPC561 BDM programming for External Flash & External EEPROM in EDC ECUs (Bosch & Sim2K). Motorola HC9S12DG64 / HC9S12DG128 / HC9S12DG256 / HC9S12DG512 series with security bypass feature.
PLD / CPLD / FPGA:
Поддержка всех ALTERA JTAG устройств через эмуляцию Altera USB Blaster Programmer in Quartus Software. Поддержка Xilinx CPLD / FPGA с jed файл. Быстрое конфигурирование Xilinx FPGA с bit файл. Поддержка GAL / Palce устройств с особым вариантом для Palce разблокировки.
Программное обеспечение с поддержкой нескольких языков (английский / китайский / арабский / французский / фарси / русский). Другие языки и устройства могут быть добавлены по запросу клиента. Вы можете скачать программное обеспечение и запустить его в демонстрационном режиме, чтобы оценить его.


Ну что ж, не терпится испытать аппарат в работе. Аккуратно вкладываем чип в кроватку переходника, сам переходник устанавливаем в универсальный сокет программатора, подключаем программатор к ноутбуку, ноутбук под управлением 32-х разрядной Windows 10 с установленным ПО, заблаговременно скачанным с сайта производителя.




Для работы программатора с NAND FLASH чипами используется один софт, для работы со всем остальным многообразием чипов - другой.
Выбираем из списка наш чип, и…


Девайс заботливо предупреждает о неконтакте конкретных ног чипа. Аккуратно отжимаем панель, шевелим чип - все ок. Для проверки запускаем автодетект - программатор определяет ближайший чип этого семейства, все ОК.


Пишем, читаем, стираем, все ОК, программатор шустро отрабатывает все режимы.
Ну и приступим к основному действу, для которого и покупался программатор. По работе, мы используем много десятков промышленных Wi-Fi точек HP MSM-310R.


Устройство дорогое, но тем не менее, выходящее из строя. Гарантия закончилась, и накопилось их некоторое количество. Внутри, как это любит Hewlett-Packard и прочие белые бренды, выкупленный производитель, канадский Colubris.


Судя по скудной инфе от производителя, и морганиям светодидов, удалось понять, что проблема софтовая. Точка банально не грузилась из за сбоя во внутренней файловой системе или подизношенном чипе флеш-памяти. Что ж, сдуваем феном чип K9F5608UOD с живой точки, считываем, запаиваем обратно. Выясняем где в считанном дампе находятся конфигурационные параметры, описывающие серийник и МАС-адреса устройства. Таких, парукилобайтных блоков, два. Они идентичны друг другу. С дохлой точки тоже сдуваем чип, вычитываем, находим в дампе по тем же адресам идентификационные блоки, вырезаем, сохраняем. Заменяем в прошивке, считанной с живой точки, эти блоки на требуемые с серийниками и МАС-ами дохлой. Прошиваем новый чип, заранее закупленный на Aliexpress, этой комбопрошивкой, запаиваем, и вуаля, точка работает. Мне повезло, приобретенный новый чип оказался очень качественным, и с завода bad блоков не было, поэтому дамп можно было писать один-к-одному, безо всяких сдвигов. Конечно, методически правильнее, было бы подключиться к jtag интерфейсу процессора точки, но на тот момент уж очень руки чесались испробовать неизведанное.
Ну и напоследок, хотелось бы рассказать о мини-соревнованиях некоторых моих программаторов. Я их извлек из закромов, сфотографировал и подготовил к испытаниям.


Знакомьтесь: Bidipro, достаточно популярный в свое время среди радиогубителей самопайный девайс. Но вследствие долгого бездействия где-то закралась аппаратная ошибка в виде непропая или КЗ, вызванного упавшей скупой слезой ностальгирующего электронщика. Да и к тому же управляющий софт требует DOS. Выбывает на старте.


Второй девайс, клон SEEPROG, хороший программатор сериальных чипов, производитель до сих пор обновляет ПО.


Третий участник - Ezoflash, упрощенная версия Willemа, тоже активно использовался до приобретения MiniPro.


Четвертый участник, TL-866, в представлении не нуждается.
Будем читать-стирать-писать кое-какие чипы, если корпуса не DIP, то воспользуемся набором MiniPro-говских переходников. Для Ezoflash - переходники свои, те, которые удалось отыскать среди завалов. Пустые места таблицы означают невозможность работы соответствующего программатора с испытуемым чипом.
Также будем использовать будем другой ПК, обладающий аппаратным LPT портом.
Конфигурация достаточно современная, DualCore Intel Core i3-4170, 3700 MHz, 4Гб ОЗУ, материнская плата Gigabyte GA-H81M-S2PV, SSD диск ADATA SP550, ОС Windows 7 x32.
Результаты исследований оформим в таблицу, время каждого телодвижения указано в секундах.


Налицо преимущество в скорости основных операций Usb программаторов.
Проверку работы программатора в режиме внутрисхемного программирования не проводил - ввиду отсутствия интереса к данным возможностям, программирование микроконтроллеров тоже не проверял, т.к. уверен на все 146% в возможностях девайса.
Подводя итоги, хочется отметить основные
Преимущества данного программатора:
Качество изготовления,
Широкий спектр поддерживаемых микросхем, список постоянно обновляется.
Дешевые переходники pin-2-pin для подавляющего большинства микросхем (кроме чипованного SOP44 - DIP40, оцененного в неприличные почти полсотни уе)
Приемлемая цена, по сравнении с аналогичными устройствами, обладающими схожим функционалом.
Недостатки: пока не нашел.
Всем спасибо, кто дочитал до этого места мое первое крео на муське, заранее извиняюсь за возможную косноязычность, Word не использовал, русский - не мой родной язык.
Да, повторюсь, аппарат был приобретен за свои кровные. Планирую купить +30 Добавить в избранное Обзор понравился +75 +124

Нашел в своем архиве фото, на котором был запечатлен процесс изготовления JTAG-программатора, который понадобился мне, чтобы оживить спутниковый тюнер. Теперь немного подробнее, что за «зверь» такой JTAG:

JTAG (сокращение от англ. Joint Test Action Group ; произносится «джей-тáг») - название рабочей группы по разработке стандарта IEEE 1149. Позднее это сокращение стало прочно ассоциироваться с разработанным этой группой специализированным аппаратным интерфейсом на базе стандарта IEEE 1149.1. Официальное название стандарта Standard Test Access Port and Boundary-Scan Architecture . Интерфейс предназначен для подключения сложных цифровых микросхем или устройств уровня печатной платы к стандартной аппаратуре тестирования и отладки. Кому интересно и дальше, полная статья на википедии .

А теперь вернемся к делу, от знакомых попал ко мне спутниковый тюнер, самый обычный и простой Globo на процессоре Ali M3329B. С такими симптомами, вообще не включался, сначала я грешил на блок питания, но прозвонив все напруги мультиметром оказалось все же с питанием все нормально. Поизучав немного разных статьей по ремонту данных ресиверов, пришел к выводу, что судя по симптомам полностью слетела прошивка, и восстановить его можно прошив через JTAG-программатор. Так же была мысль, что он полностью сгорел и восстановлению не подлежит, но я все-же предпочитал верить, что прошивка через JTAG поможет.

Для изготовления выбрал вот эту схему:

Питание на схему подаётся от ресивера, к которому она подключается. В использовании внешнего источника питания для схемы нет необходимости по двум причинам. Во-первых, потребляемый ток очень мал и не создаёт дополнительной нагрузки на блок питания ресивера, во-вторых, питание от того же источника, что и процессор с флэш-памятью улучшает согласование логических уровней.

74HC244 это не инвертирующий буфер. Микросхема содержит два независимых четырехразрядных буфера. Каждый буфер имеет свой сигнал разрешения выхода (низкий активный уровень). На входах нет триггеров Шмитта. Микросхема выполнена по технологии “быстрый” КМОП, что обеспечивает высокое быстродействие. Мощный токовый выход делает возможным сохранение высокого быстродействия даже при емкостной нагрузке. Быстродействие 74HC244 сравнимо с быстродействием микросхем, основанных на диодах Шоттки, при этом 74HC244 сохраняет достоинства микросхем КМОП, т.е. высокая помехозащищенность и низкая потребляемая мощность. Входы микросхемы защищены от повреждения статическим электричеством при помощи диодов.

Увы 74HC244 в своих запасах я не обнаружил. Нашел только аналог 74F244, который немного отличался напряжением питания Vcc. У 74HC244 рекомендуемое от 2 до 6 В, а у 74F244 — от 4,5 до 5,5 В. Хотя максимальные пределы от -0.5 до +7 В, поэтому решил не заморачиваться, и приступить к изготовлению.

Взяв исходную схему на первом изображении, и перерисовав ее в программе DipTrace получилась вот такая схема:

Все было оттрасировано автоматически, не оттрасировало только одну линию, но это проблема была решена двумя SMD перемычками. На изображении выше — готовая для изготовления печатная плата.

На плате я так же подписал все выводы, но к сожалению с выходные сигналы неправильно подписал, как видно на первоисточнике 1- GND, 2- TCK, 3- TMS, 4- TDO, 5- TDI и 6- RST, у меня же получилось GND, TMS, TCK, TDI, TDO, и RST, ошибся именно когда делал подписи контактам, по схеме все правильно, согласно первоисточнику, т.е. 1- GND, 2- TCK, 3- TMS, 4- TDO, 5- TDI и 6- RST.

Печатная плата с правильными обозначением контактов:

Собственно главное — гетинакс, напильник, небольшая ручная ножовка, наждачная бумага. Отвертка и резак для расслоения гетинакса на 2 части, поскольку у меня кусочек был фольгированный с двух сторон, а плата наша простая, односторонняя.

Проделав всю роботу, выточив гетинакс под размеры платы (примерно 55х50 мм), берем чистящее средство COMET (Комет) в порошке и губку для мытья посуды. Очищаем гетинакс от следов жира и грязи. Лучше не вытирать остатки воды, а дать просохнуть так.

Пока сохнет гетинакс идем за компьютер и печатаем нашу схему на лазерном принтере и фотобумаге в зеркальном отражении указав максимальное качество печати. Важно не забыть поставить зеркальное отражение, иначе в итоге на плате получим все на выворот!

И так, гетинакс готов, печатная плата напечатана, аккуратно подогнав края гетинакса к рисунку печатной платы на фотобумаге крепим ее липкой бумажной лентой к гетинаксу, берем утюг и ставим его на максимальную температуру.

Естественно фольгированной стороной гетинакса к рисунку печатной платы.

Когда утюг нагрелся, плотно прижимая, начинаем гладить — равномерно прогревая гетинакс со стороны бумаги. Плату такого размера греем не более 30-60 сек, иначе тонер расползется. Рекомендую поставить таймер на телефоне, чтобы время было рядом, перед глазами. Когда все сделано, даем время плате остыть.

Отдираем фотобумагу от платы, перед нами готовая плата, которую остается вытравить в хлорном железе FeCl₃, если есть не большие огрехи, перед травление, поправляем дорожки скальпелем и тонким маркером для дисков.

В процессе травления хлорным железом необходимо непрерывно перемешивать раствор, например покачиванием посуды. Если размер платы не очень большой, можно плату класть на поверхность раствора рисунком вниз — не нужно покачивать, но трудно отследить окончание процесса травления. Время травления хлорным железом составляет от 5 до 50 минут и зависит от температуры, концентрации раствора и его загрязнённости медью, толщины медной фольги. После травления плату нужно промыть проточной водой и высушить.

В итоге получаем вот такую печатную плату

Тонер так же очищаем порошком «Комет», он держится достаточно хорошо, и чтоб не повредить дорожки платы очищаем его не спеша.

После очистки от тонера видим аккуратную, красивую печатную плату


Теперь приступаем к пайке элементов:

2017-05-25 Дата последнего изменения: 2018-10-10

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

CОДЕРЖАНИЕ:

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 for NAND Flash using 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 . Однако коротко напомним их суть:

Пропуск плохих блоков:
Если текущий блок оказался сбойным он пропускается и информация пишется в следующий свободный блок. Эта схема универсальна, проста в реализации, однако несколько проблематична для случаев, когда плохие блоки появляются в процессе эксплуатации. Для полноценной работы этой схемы логический номер блока должен хранится внутри блока (стандарт назначения запасной области от Самсунг, собственно это и предполагает). При работе по этой схеме контроллер должен где-то хранить таблицу соответствия логических номеров блоков их физическим номерам иначе доступ к памяти будет сильно замедлен.

Поэтому логическим развитием является схема использования запасной области :
По этому методу весь объем памяти разбивается на две части: основная и резервная. При появлении сбойного блока в основной памяти он заменяется блоком из запасной памяти, а в таблице переназначения блоков делается соответствующая запись. Таблица переназначения хранится или в гарантировано бессбойном блоке или в нескольких экземплярах. Формат таблицы разный, хранится она в разных местах. Опять таки Самсунг описывает стандарт на формат и расположение таблицы, но ему мало кто следует.

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 встроенными средствами и другие способы при помощи плагинов. Вместе с программатором поставляется плагин, реализующий назначения запасной области, рекомендованный Самсунг.

Если вам необходимо реализовать какой-либо иной вариант распределения - сообщите нам, и мы подготовим соответствующий плагин, либо вы можете реализовать необходимый плагин самостоятельно.

2.7. Совместимость с образами NAND, считанными другими программаторами

Если у вас есть образ NAND , считанный другим программатором или полученный из другого источника, его нужно преобразовать в формат, пригодный для записи программатором ChipStar .

Для этого выполните следующие действия:

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