Как прошить телевизор, если он не включается?

Оглавление

Устранение сбоев работы микроконтроллеров

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

  1. При любом сбое вначале проверяют блок питания. Иногда случается так, что источник питания не подходит к программатору и требуется внешний источник питания.
  2. Выбирают правильный последовательный порт в программном обеспечении.
  3. Прежде чем использовать программатор, необходимо установить драйверы, необходимые для его функционирования. Когда подключается программатор в первый раз, он автоматически устанавливает их, если есть соединение с интернетом, иногда потребуется указать расположение драйверов.
  4. Повышение напряжения. Многие микроконтроллеры требуют подтягивания в своей цепи, прежде чем могут быть запрограммированы, так микроконтроллер пикасе требует 10 кОм подтягивающего резистора на последовательном выводе, иначе показывает ошибку.
  5. Программное обеспечение для программирования не обнаруживает микроконтроллер — это опять-таки проблема с блоком питания, проверяют БП снова и подключают программатор к компьютеру.

После выполнения своими руками USB программатора Spi Flash пользователь получит SF, выполненную собственноручно для системного программирования. Она будет легко управляться компьютером через шину USB благодаря удобному интерфейсу и мощным функциями.

1Микросхема флеш-памяти25L8005

Микросхема флеш-памяти (или ПЗУ) 25L8005 изготавливается в разных корпусах. Но как правило, ввиду малого размера, удобнее использовать микросхемы поверхностного монтажа. У меня как раз такая. Она выполнена в корпусе типа SOP 8L.

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

Так выглядит наша микросхема ПЗУ, припаянная к плате-переходнику с DIP-выводами:

Флеш-память припаяна к плате-переходнику

А вот так выглядит микросхема флеш-памяти в ZIF-панели:

Флеш-память в переходной панели с нулевым усилением

И под микроскопом:

Флеш-память в панели с нулевым усилением под микроскопом

Купить ПЗУшку можно, например, в Китае.

Теперь мы можем использовать макетную плату (бредборд) и с лёгкостью подключаться к микросхеме.

Программатор SPIPGM

Этот простой программатор предназначен для программирования микросхем памяти с последовательным доступом (serial flash memory, SPI Flash ROM). К ним относятся несколько семейств 25ХХХХ разных производителей. Может работать под Windows и под DOS. Данный вариант программатора рассчитан на микросхемы в корпусе DIP8 с питанием 3,3 В:

Подключается он к порту LPT. Из порта USB берется питание. Последовательные резисторы в шинах данных необходимы, чтобы не повредить микросхему 5-вольтовыми сигналами из параллельного порта. Малое количество деталей позволяет собрать его в стандартном корпусе разъема LPT:

Детали смонтированы просто на подходящем куске универсальной монтажной платы:

В архиве для скачивания есть вся необходимая информация — схема, программы для работы с ней, список поддерживаемях микросхем.

Скачать пакет файлов для программатора SPIPGM.

источник

4Чтение данных из флеш-памяти с помощью Arduino

Согласно документации, чтение из флешки выполняется посредством такой последовательности: отправка команды на чтение (1 байт), начальный адрес (3 байта), а далее запрашивается столько байтов, сколько хотим прочитать из ПЗУ. Собственно, мы будем передавать в ПЗУ 16 нулей. Так как SPI – синхронный интерфейс, нам в ответ вернутся 16 записанных в ПЗУ байтов. Вот такая диаграмма приводится в описании к микросхеме:

Диаграмма чтения данных из флеш-памяти 25L8005

Напишем скетч для чтения наших заветных 16-ти байт из микросхемы флеш-памяти 25L8005:

#include <SPI.h>

const int SSPin = 10;
const byte READ = 0x03;
const byte ADDR1 = 0;
const byte ADDR2 = 0;
const byte ADDR3 = 0;

void setup() {
  Serial.begin(9600);
  pinMode(SSPin, OUTPUT);
  SPI.begin();  
}

void loop() { 
  SPISettings mySet(100000, MSBFIRST, SPI_MODE0);
  SPI.beginTransaction(mySet);
  digitalWrite(SSPin, LOW);
  SPI.transfer(READ); 
  SPI.transfer(ADDR1);
  SPI.transfer(ADDR2);
  SPI.transfer(ADDR3);
  for (int i=0; i<16; i++) {
    byte data = SPI.transfer(0);
    Serial.print((char)data);
  }
  Serial.println();
  digitalWrite(SSPin, HIGH);
  SPI.endTransaction();
  delay(1000); // повторяем чтение каждую секунду
}

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

Чтение из флеш-памяти с помощью Arduino и вывод в монитор последовательных портов

Вот как выглядит чтение из ПЗУ, если подключиться к линиям SPI логическим анализатором:

Временная диаграмма чтения данных из ПЗУ по SPI

Как видно, байты этого массива соответствуют кодам ASCII строки «HELLO, SOLTAU.RU», которые мы и записали в микросхему памяти 25L8005 🙂

Как выбрать программатор

Покупая программатор, следует учитывать некоторые моменты, которые помогут правильно подобрать устройство:

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

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

DIY: универсальные программы создания

Это лучший для микроконтроллеров PIC и AVR программатор Spi Flash, своими руками, может быть, его создать не получится, но устройство не дорогое, стоит меньше 10 $ и выполняется из легко доступных компонентов.

  1. Бесплатное ПО с открытым исходным кодом.
  2. Нет необходимости устанавливать дополнительные драйверы, использует драйвер H >

Основные три последовательных заголовка (J1, J2 и J3) используются для связи с ведомым устройством микроконтроллера. Использование выводов различно в разных микроконтроллерах. Переключатель сброса добавлен к блоку контроллера для установки сброса программатора. PIC18F2550 мигает с помощью шестнадцатеричного кода прошивки, можно использовать другие последовательные или параллельные программаторы Spi Flash PIC.

Он проверяет связь между микроконтроллером и ПК. Требуется провести тестирование HID-обнаружения (Human Interface Device), которое устранит много ошибок, таких как проблемы с микроконтроллером, кристаллами и USB. Перед началом использования программы убеждаются, что мигает светодиод LED, который затем замедляет процесс мигания. Если программатор не обнаружен, проверяют перекрестные соединения и инструкции. Если он обнаружен, переходят к следующему шагу.

Программа SPIPGM

Теперь можно переходить к программному обеспечению.

Программа поддерживает большое количество чипов (полный список в файле Readme.txt) и по заявлению автора работает быстрей аналогов. Скачать свежую версию можно , либо отсюда:

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

В архиве следующие файлы:

SPIPGM – исполняемый файл для Linux
SPIPGM.EXE – исполняемый файл для DOS/Win9x
SPIPGMW.EXE – исполняемый файл для Win9x/NT/2k/XP/Vista/7 (только х32, поддержки х64 нет)
IOPERM.DLL – библиотека для низкоуровневого доступа в Win9x/NT/2k/XP/Vista/7(без UAC)

Надежней всего прошивать из DOS, загрузившись с Hiren или любого другого подходящего загрузочного CD/Flash. Но можно и из Windows.

Синтаксис и основные команды:

Синтаксис: spipgmw /<команда>

Основные команды:

i – идентификация флеш памяти
d имя файла – считать содержимое флеш памяти в файл
p имя файла – записать флеш память из файла прошивки (без стирания)
v имя файла – сравнить содержимое флеш памяти с файлом прошивки
e – полное стирание флеш памяти
b – проверка стирания флеш памяти
u – разблокировать защиту от записи (зависит от сигнала WP#)

Имя файла — полное имя файла, например: file.bin, file.rom и т.п. Расширение роли не играет, главное чтобы это был корректный файл образа и правильно указано имя.

Прошивка BIOS через SPI:

spipgmw /i – идентификация чипа. Для проверки все ли правильно подключено, программа должна определить тип установленной памяти. Если этого не происходит, проверьте правильность подключения и поддержку чипа программой.

spipgmw /d BIOS.bak – если нужно сохранить резервную копию имеющегося BIOS.

spipgmw /u – разрешение записи.

spipgmw /e – стирание.

spipgmw /p FILE.rom – запись прошивки («FILE.rom» – имя файла прошивки, нужно чтобы файл находился в одной папке с программой)

…ждем процесс записи…

spipgmw /v FILE.rom – сравниваем записанные данные с файлом прошивки. Либо можно сделать дамп spipgmw /d test.rom и сравнить его содержимое с оригинальным файлом прошивки в каком-нибудь Hex-редакторе.

Возможно наличие небольшого количество ошибок. Зависит от длинны кабеля, стабильности питания, типа памяти. Конечно, желательно, чтобы ошибок не было вовсе, но даже с некоторым количеством ошибок компьютер скорей всего запустится, а там уже можно прошить BIOS штатными средствами.

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

1.1. Коротко об SPI NAND FLASH

Микросхемы SPI NAND или Serial NAND являются разновидностью микросхем FLASH памяти типа NAND. Как и у всех подобных микросхем, их отличительными чертами являются:

  • Очень большой объем памяти.
  • Не гарантированное качество записи (возможно наличие ошибок).
  • Микросхемы могут иметь плохие (сбойные) блоки.
  • Размер страницы записи не является степенью 2.
  • Запись в микросхему осуществляется только страницами, стирание — минимум блоками.

Подробно о классификации микросхем NAND, их видах, внутренней логической структуре подробно написано в нашей первой статье о NAND микросхемах. В этой статье мы больше коснемся особенностей SPI NAND (Serial NAND) и практической работы с ними.

Прошивка (чтение) памяти через Raspberry Pi 3 (Pi 2)

Интерфейс GPIO конструктора открывает широкие возможности для контроля и мониторинга периферийных устройств. Соответственно, есть возможность подключаться к электронным схемам, в частности – программировать (читать и прошивать) чипы памяти.

Детский мини компьютер через порт GPIO учит детей управлять светодиодами, запускать миниатюрные двигатели, выполнять многие другие простые действия, характерные для электроники.

Но компьютер конструктор Raspberry Pi 3 – это также реальный инструмент для прошивки BIOS, благодаря интерфейсу GPIO и поддержке технологии SPI.

Модели плат из новой серии детского конструктора  имеют 40-пиновый интерфейс GPIO. Более старые версии оснащены 26-пиновым разъёмом.

Разобранный планшет Lenovo ThinkPad X60, извлечённая материнская плата и заветный ПЗУ, который теперь нужно через подключение «прищепкой» прочитать и затем прошить новым содержимым

На материнской плате планшета Lenovo модели T60 чип памяти находится под опорной панелью и закреплён дюралюминиевой рамкой. Крепёж нужно снять, рамку демонтировать.

На следующем этапе подключение микросхемы памяти к интерфейсу GPIO мини компьютера конструктора Raspberry Pi 3.

Чип подключается, оставаясь непосредственно на плате, без выпаивания, через пружинный контактор (прищепка). Соединения проводников следует выполнять согласно раскладке:

Подключение MX25L1605 на 8 ножек: 1 ножка (CS) — 24 контакт; 2 ножка (MISO) — 21 контакт; 3 ножка — не используется; 4 ножка (GND) — 25 контакт; 5 ножка (MOSI) — 19 контакт; 6 ножка (CLK) — 23 контакт; 7 ножка — не используется; 8 ножка (3.3В) — 17 контакт

Питание на микросхему можно подать одним из двух способов:

  1. Через адаптер ноутбука, подключив низковольтный разъём адаптера к материнской плате, а его сетевой разъём в розетку 220В.
  2. От внешнего источника питания на 3.3В, плюсовой шиной на 8 ножку, минусовой на 4 ножку, соответственно.

Чтение подключенного ПЗУ MX25L1605

Рекомендуется точно определить производителя чипа BIOS, прежде чем пытаться начинать процедуру чтения содержимого.

Затем необходимо загрузить на компьютер Raspberry Pi и скомпилировать утилиту Flashrom. Делается это посредством следующего кода:

Кодовая комбинация 1

Далее для ПЗУ производства SST, выполнить команду:

Кодовая комбинация 2

Для ПЗУ производства Macronix выполнить последовательность:

Проверить контрольную сумму командой:

Кодовая комбинация 3

Повторно запустить утилиту Flashrom командой проверки контрольной суммы и следом выполнить команду на тест содержимого BIOS:

Кодовая комбинация 4Кодовая комбинация 5

Если в результате выполненных операций контрольная сумма совпадает, это свидетельствует о точном прочтении дампа утилитой Flashrom.

Прошивка микросхемы flash серии 25хх

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

Для ПЗУ производства SST нужна команда:

Кодовая комбинация 6

Для ПЗУ производства Macronix нужна команда:

Кодовая комбинация 7

При этом путь к файлу «.rom» следует указывать по существу. То есть, если дамп прошивки лежит по пути: «/bin/x60/libreboot_usqwerty.rom», значит так и нужно указывать вместо строки: «/path/to/libreboot.rom».

После успешно завершённой операции, утилита выдаёт последовательность сообщений:

  1. Чтение старого содержимого чипа…успешно.
  2. Очистка и запись в чип…успешно.
  3. Проверка флеш…проверено.

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

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

3Очистка флеш-памяти с помощью Arduino

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

Диаграмма очистки одного сектора флеш-памяти 25L8005

Именно это и делает приведённый ниже скетч:

#include <SPI.h>

const int SSPin = 10;
const byte WREN = 0x06;
const byte WRDI = 0x04;
const byte SER = 0x20;
const byte ADDR1 = 0;
const byte ADDR2 = 0;
const byte ADDR3 = 0;

void setup() {
  pinMode(SSPin, OUTPUT);
  SPI.begin();

  SPISettings mySet(100000, MSBFIRST, SPI_MODE0);
  
  // Выставление разрешения записи:
  SPI.beginTransaction(mySet);
  digitalWrite(SSPin, LOW);
  SPI.transfer(WREN);
  digitalWrite(SSPin, HIGH);
  SPI.endTransaction();

  // Очистка сектора:
  SPI.beginTransaction(mySet);
  digitalWrite(SSPin, LOW);
  SPI.transfer(SER);
  SPI.transfer(ADDR1);
  SPI.transfer(ADDR2);
  SPI.transfer(ADDR3);
  digitalWrite(SSPin, HIGH);
  SPI.endTransaction();
 
  // Выставление запрета записи:
  SPI.beginTransaction(mySet);
  digitalWrite(SSPin, LOW);
  SPI.transfer(WRDI);
  digitalWrite(SSPin, HIGH);
  SPI.endTransaction();
}

void loop() {
  // ничего не делаем в цикле
}

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

Дизайн печатной платы

Эта печатная плата разработана в Eagle 7.2. Размер пластины 7,5 х 7 см, она выполнена на автоматическом травильном станке. Печатная плата также может быть изготовлена с помощью химического травления в домашних условиях.

Компоненты JA, JB, JC являются перемычками. По схеме тщательно проверяют это и сначала, во время сборки компонентов, устанавливают перемычки. Для обеспечения безопасности PIC18F2550 во время пайки используют 28-контактное основание IC.

Плата расширения связывает программатор с микроконтроллером. Различные серии микроконтроллеров имеют разные контакты и конфигурацию для программирования. Это дает пользователям преимущество в простоте программирования микроконтроллера.

Плата расширения может быть легко сделана с использованием перфорированной доски или в специальных заготовок для плат, приобретенных в торговой сети. Для серий микроконтроллеров используется разные платы расширений. Для LVICP от 5 В до 3,3 В необходим регулятор напряжения, такой как LM1117 или аналогичный ему.

Устройство 3.3 В должно быть запрограммировано только с использованием платы расширения 3.3 В, в противном случае может произойти необратимое повреждение. Некоторые из плат имеют вариант 5 В. Если нужно запрограммировать на 5 В, можно выбрать опцию «Не требовать платы низкого напряжения». Также не рекомендуется размещать 24F-33F в гнездо 30F, которое работает при 5 В.

2Подключение Arduino к микросхеме flash-памяти 25L8005

Назначение выводов микросхемы ПЗУ, приведённое в техническом описании на микросхему (datasheet), следующее:

Назначение выводов микросхемы флеш-памяти 25L8005

Кстати, datasheet на микросхему флеш-памяти 25L8005 можно скачать в конце статьи.

Будем использовать для программирования флэш-памяти интерфейс SPI, поэтому подключимся к стандартным SPI выводам Arduino:

Вывод микросхемы флеш-памяти Вывод платы Arduino
CS# цифровой пин 10
SI цифровой пин 11
SO цифровой пин 12
SCLK цифровой пин 13
WP# 3V3
HOLD# 3V3
VCC 3V3
GND GND

Здесь символом решётки # отмечены выводы, которые активируются логическим нулём.

Соберём электрическую схему подключения микросхемы флеш-памяти MX25L8005 к Arduino.

Схема подключения микросхемы флеш-памяти 25L8005 к Arduino

У меня ПЗУ на монтажной плате и подключённое к Arduino выглядит вот так:

Флеш-память на ZIF-панели, подключённая к ArduinoФлеш-память на ZIF-панели, подключённая к Arduino

Утилита для идентификации

Flashrom — это утилита для идентификации, чтения, записи, проверки и удаления флеш-чипов. Она предназначена для прошивки образов BIOS/EFI/coreboot/firmware/optionROM на материнских платах, картах контроллера сети/графики/хранения и на различных других устройствах программирования. Функциональные возможности:

  1. Поддерживает более 476 чипов флэш-памяти, 291 наборов микросхем, 500 материнских плат, 79 устройств PCI, 17 устройств USB и различные программаторы Spi Flash на основе параллельных/последовательных портов.
  2. Поддерживает параллельные интерфейсы, интерфейсы флэш-памяти LPC, FWH и SPI и различные пакеты микросхем (DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40, TSOP48, BGA и другие).
  3. Физический доступ не требуется, root-доступ достаточен или вообще не требуется для некоторых программаторов.
  4. Не требуется загрузочная дискета, CD-ROM или другой носитель.
  5. Клавиатура и мониторы не требуются, просто перепрошиваются удаленно через SSH.
  6. Не требуется мгновенная перезагрузка.
  7. Переписывают чип в работающей системе и проверяют его, новая прошивка будет работать при следующей загрузке.
  8. Доступна частичная поддержка Windows.

USB- накопитель EEPROM

Программатор Spi Flash EEPROM серии 25 с программным обеспечением и поддержкой драйверов и 25-SPI флэш-память 8-контактный/16-контактный имеет следующие функциональные возможности:

  1. Автоматическая идентификация модели чипа 25 серия.
  2. Поддержка USB в TTL.
  3. Автоматическое определение чипа серии 25.
  4. Поддержка загрузки STC серии.
  5. Процедура однокристального микроконтроллера STC программатора Spi Flash ch341a поддерживает полный спектр загрузки программ для разнообразного ПО: резервного копирования, стирания, программирования, калибровки и других перемещений.
  6. Обеспечивает выход питания 5 В — 3,3 В.
  7. Размер: 70 мм х 27 мм
  8. CH341SER.EXE — самостоятельная установка архива с USB на последовательный драйвер.

Периферийные устройства ESP32

К периферийным устройствам ESP32 относятся:

  • 18 Каналов аналого-цифрового преобразователя (АЦП )
  • 3 Интерфейса SPI3
  • Интерфейс UART2
  • Интерфейс I2C16
  • Выходные каналы ШИМ
  • 2 Цифро-аналоговых преобразователя (ЦАП)
  • 2 Интерфейса I2S10
  • Емкостные считывающие GPIO

Функции АЦП (аналого-цифровой преобразователь) и ЦАП (цифро-аналоговый преобразователь) назначены строго определённым пинам. Тем не менее, вы сами решаете, какие контакты будут отведены под интерфейсы UART, I2C, SPI, PWM и т. д. — они определяются в коде прошивки. Это возможно благодаря функции мультиплексирования чипа ESP32.

2.2. Считывание образа SPI NAND

Считывание SPI NAND происходит абсолютно идентично чтению любых других микросхем. После начала чтения сразу открывается окно редактора:

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

Как уже мы писали выше, у разных микросхем spare области имеют разный формат.

Выделение другим цветом части резервной области, предназначенной для записи ECC, существенно облегчает просмотр дампа.

2.5. Чтение информации ONFI

SPI NAND, как и параллельные (обычные) микросхемы NAND, поддерживают считывание таблиц конфигурации устройства в соответствии со спецификацией ONFI (Open Nand Flash Interface):

В отличие от паралельных NAND у SPI NAND с поддержкой ONFI дела обстоят значительно лучше. Все известные нам микросхемы поддерживают ONFI.

На рисунке выше значение «ширина шины данных» (data bus) в отчете ONFI указывается как 8 бит, хотя, как известно, SPI интерфейс однобитный. В этом нет ничего странного: здесь имеется в виду организация памяти по восемь бит. Также в отчете ONFI указано требование к внешнему алгоритму ECC исправлять 0 ошибок (исправлять не требуется). Однако внутренний алгоритм исправляет до 8 ошибок, поэтому при выключенном внутреннем ECC внешний алгоритм просто обязан исправлять те же восемь ошибок. Поэтому в базе данных программатора прописано именно «8» и это не является ошибкой.

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

Хочу выразить благодарность некто ckoba за отличнейшую и подробнейшую статью с картинками и ссылками, рекомендую — статья о прошивке флешек с spi интерфейсом через lpt

Не без моего вмешательства подох биос в ноутбуке, сервис озвучил цену в 400 грн, я мягко говоря прихуел, и решил попробовать все сделать сам, микросхемку выпаять оказалось несложно, хотя она размерами 5 на 5 мм и с 8 ножкаме, поддеваем ножку швейной иглой, тыкаем паяльником и давим на иглу в направлении от микросхемы наружу, главное сильно не греть, и не давить, а то или ногу микросхеме оторвете или дорожку на плате. И вообще луче это делать паяльной станцией. Отпаять микросхему не перегрев это только треть дела. В общем отпаял я ее от платы, сунул в спичечный коробок, и потащил на работу, а по дороге заехал на радиорынок и купил запчастей, надо 4 резистора на 150 ом, один конденсатор на 1 мкФ, разъем типа папа для LPT порта, по умному он называется DB-25, еще можно купить батарейку на 3 вольта, а можно взять 3,3 вольта из компа.

Для проводков я разрезал кусок старого IDE шлейфа, у него как раз подходящий шаг, снимаем немного изоляции, буквально 3-4 мм, залуживаем, и остается только совместить микросхему и провод и слегка поработать паяльником

Паяйте осторожно везде пишут что флешки от перегрева дохнут

ДЛя батарейки нашлась кроватка от старой матери, удобно же. Резисторы и кондер я припаял прямо к разъему.

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

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

И еще иногда нужно подпаять минус не только к ножке разъема а и к его корпусу.

В статье ссылка на программу не работает уже, сайт переехал на другой адрес, вот правильная ссылка на прошивальщик флешек spi через LPT , так же не забывайте в биосе настроить работу LPT порта в двустороннем режиме epp+ecp.

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

2Подключение Arduino к микросхеме flash-памяти 25L8005

Назначение выводов микросхемы ПЗУ, приведённое в техническом описании на микросхему (datasheet), следующее:

Назначение выводов микросхемы флеш-памяти 25L8005

Кстати, datasheet на микросхему флеш-памяти 25L8005 можно скачать в конце статьи.

Будем использовать для программирования флэш-памяти интерфейс SPI, поэтому подключимся к стандартным SPI выводам Arduino:

Вывод микросхемы флеш-памяти Вывод платы Arduino
CS# цифровой пин 10
SI цифровой пин 11
SO цифровой пин 12
SCLK цифровой пин 13
WP# 3V3
HOLD# 3V3
VCC 3V3
GND GND

Здесь символом решётки # отмечены выводы, которые активируются логическим нулём.

Соберём электрическую схему подключения микросхемы флеш-памяти MX25L8005 к Arduino.

Схема подключения микросхемы флеш-памяти 25L8005 к Arduino

У меня ПЗУ на монтажной плате и подключённое к Arduino выглядит вот так:

Флеш-память на ZIF-панели, подключённая к ArduinoФлеш-память на ZIF-панели, подключённая к Arduino

Немного предыстории:

Материнская плата ASUS Commando, без, модного нынче, Dual BIOS. Только Boot Block – небольшая область BIOS, не затрагиваемая записью, которая позволяет, в случае необходимости, инициализировать минимальный набор компонентов, необходимых для включения компьютера, произвести поиск BIOS на съемных носителях. Обычно подходят Floppy или флешка с файлом прошивки, переименованным в AMIBOOT.ROM (зависит от BIOS и материнской платы, точнее написано в инструкции к плате), либо CD с драйверами из комплекта поставки. Обнаружив подходящий файл, boot block запишет его в BIOS и, если все прошло правильно, компьютер после перезагрузки оживет. Неплохая фишка, несколько раз выручала, но в данном случае она не сработала, видимо, оказался поврежден и boot block.

Пришлось искать другие решения. Так как в своем арсенале инструмента у меня не было паяльной станции и стационарного программатора для разных eeprom’ок, пришлось искать более доступные решения. Рассматривая плату, я обнаружил на ней небольшой разъем SPI_J1, а микросхема флеш памяти как раз с SPI интерфейсом. Поиск в Интернет показал, что существуют вполне приличные заводские девайсы и немало самоделок для прошивки SPI микросхем через USB (об универсальных программаторах с поддержкой SPI даже не говорю, это само собой). Правда, поиск по местным магазинам, СЦ и форумам в отличии от Google ничего не дал, а заказывать и ждать месяц очень не хотелось.

Еще немного поиска, и вот оно, решение – статья чешского комрада (на чешском) о предельно простом программаторе и софтине к нему для прошивки микросхем флеш памяти с SPI интерфейсом! Ничего сложного, минимум компонентов.

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

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

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

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

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

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

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

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

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

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

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