Андрей Смирнов
Время чтения: ~16 мин.
Просмотров: 13

Прошивка BIOS через SPI интерфейс

Инженерам-электронщикам, радиолюбителям, — каждому, кто занимается эксплуатацией, обслуживанием, ремонтом электроники, необходим программатор в принципе. Починка телевизоров, компьютеров, спутниковых ресиверов и многой другой аппаратуры, как правило, требует прошить микросхему памяти без выпаивания из платы. Так вот для этих целей разработан программатор CH341A микросхем памяти универсальный. Небольшой по размерам электронный прибор подключается к порту USB компьютера и позволяет быстро программировать микросхемы памяти 24хх, 25хх серий и аналогичных. Рассмотрим это устройство для лучшего представления, понимания, применения на практике.

Программатор микросхем памяти еепром/флеш — CH341A

Напомним: микросхемы памяти серий 24хх (eeprom), 25хх (serial flash) используются в схемах электронной техники достаточно часто. Такого рода чипы присутствуют в составе практически любой конструкции современной бытовой / промышленной аппаратуры, управляемой через микроконтроллеры.

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

Полное представления на программатор CH341A даёт описание (datasheet),  дополненное стандартными техническими характеристиками. Тем не менее, рассмотрим девайс электронщика глазами обывателя, что часто воспринимается потенциальным пользователем проще и легче официальных документов.

universalnii-programmator-ch341a.jpg
Универсальный программатор CH341A для работы с широко распространёнными микросхемами памяти типа EEPROM и FLASH. Обзавестись таким девайсом обязан каждый уважающий себя электронщик

Сборка устройства выполнена на базе микроконтроллера «USB Bus Convert Chip» серии CH341A. Программатор рассчитан на физическое подключение к порту USB компьютеров, работающих под управлением современных ОС Windows. Модуль программирования микросхем памяти собран на печатной плате размерами 45х25 мм (см. картинку ниже).

programmator-ch341a-mikroshem-pamyati.jpg
Внешний вид монтажной платы программатора с нижней стороны. На площади размерами 45х25 мм расположился сам микропроцессор и сопутствующая обвязка электронными микроэлементами

На одной стороне печатной платы размещены электронные компоненты программатора CH341A. На второй стороне электронной платы установлена механическая панель (ZIF) под временное крепление программируемых микросхем. ZIF-панель поддерживает чипы в корпусах DIP, обеспечивает удобства работы пользователя, когда выполняется считывание или «прошивка» чипов памяти.

Универсальный программатор CH341A — применение в работе

Подключение микросхем флэш-памяти 25хх серии с корпусным исполнением SOP8/SOP16 на программаторе осуществляется через соответствующие контактные площадки. Две таких площадки располагаются непосредственно на монтажной плате программатора CH341A рядом с ZIF-панелью.

ch341a-v-komplekte.jpg
Программатор универсальный CH431A и комплект дополнительных элементов. Миниатюрная плата с отверстиями для штырьков, на обратной стороне имеет площадки под чипы SOP

Также в комплекте с программатором CH341A поставляется дополнительная монтажная печатная плата. Этот аксессуар применяется на случай программирования микросхем памяти с архитектурным исполнением корпусов SOP8/SOP16.

Под внутрисхемное программирование на печатной плате программатора CH341A выведены контакт питания под напряжение 3.3 вольта и соответствующие контакты ISP интерфейса:

  • MOSI;
  • MISO;
  • CLK;
  • CS;
  • GND.

Вместе с тем есть возможность работать с периферией по интерфейсу RS232 (выводы на плате RX, TX, GND). Схема программатора CH341A рассчитана под питание постоянным напряжением 5 вольт от внешнего источника. Это напряжение, при подключении программатора к персональному компьютеру, поступает по шине USB.

Подключенный к USB порту компьютера программатор CH341A для микросхем памяти . Свечение красного индикатора свидетельствует о наличии питания в схеме устройства

На печатной плате программатора встроен индикатор наличия питания – светодиод красного цвета. Режим внешнего или внутреннего программирования включается съёмом или установкой перемычки на контактах S/P (serial/parallel), также внедрённых в схему программатора CH341A. По умолчанию перемычка установлена.

Положению установленной перемычки на контактах S/P (serial/parallel) программатора CH341A соответствует режим внутреннего программирования. В этом случае:

  • чтение,
  • верификация,
  • запись чипов памяти,

осуществляются непосредственно через ZIF-панель программатора CH341A. Между тем на плате программатора универсального CH341A перемычка может быть снята с контактов S/P (serial/parallel). Программирование в таком режиме допускает непосредственное подключение к программируемой микросхеме памяти без выпаивания из платы.

Программатор CH341A — программное обеспечение прошивки/считывания

Действие универсального физического модуля CH341A на программном уровне поддерживается «родительским» программным обеспечением — «CH341A Programmer». Софт свободно (бесплатно) распространяется по сети Интернет (можно скачать здесь).

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

Таким выглядит окно программного обеспечения для программатора CH341A. Удобный лёгкий для восприятия и понимания интерфейс, поддерживающий обозначения на русском языке

Конечно же, чтобы программное обеспечение удачно состыковать с устройством, корректно и эффективно программировать, требуется установка системных драйверов. Это компоненты, дополняющие ПО, как правило, включены в установочный пакет программного софта.

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

Тонкости программирования микросхем памяти через интерфейс CH341A

Логичный вопрос начинающих электронщиков: как прошить микросхему памяти eeprom в корпусе DIP с помощью этого устройства? Так вот, работа с чипами памяти EEPROM (24хх, 25хх) в корпусном исполнении DIP, осуществляется, примерно, следующим образом:

  1. На ZIF-панели рукоятку установить перпендикулярно корпусу.
  2. Вставить микросхему в ячейку согласно обозначению на плате 24хх или 25хх (1 ножка ближе к рукоятке).
  3. Опустить рукоятку в положение параллельно корпусу панели.
  4. Подключить программатор CH341A на USB порт.
  5. Запустить Programmer и выполнить требуемые действия (считывание, прошивка, сравнение контрольных сумм и т.д.).

Программирование чипов из серии флэш-памяти 25хх с корпусным исполнением SOP делается несколько иначе. Контактная ZIF-панель в этом случае может также использоваться, но при условии, если микросхема монтируется на дополнительной печатной плате.

Верхний — рабочий вид программатора, где расположена ZIF-панель. Указанное положение вставленной микросхемы неверное. Ключ микросхемы должен располагаться ближе к рукоятке. К тому же серия памяти 93C не поддерживается программатором CH341A

Дополнительную печатную плату необходимо оснастить контактными электродами, впаяв электроды в соответствующие отверстия платы. Операционную (программируемую) микросхему также придётся подпаивать на контактные площадки.

Между тем существует упрощённый способ коммуникации. На основной плате программатора CH341A имеются площадки под конфигурацию SOP. На такую площадку аккуратно накладывают программируемый чип с тем расчётом, чтобы ножки микросхемы точно попадали на контактные дорожки.

Контактные площадки под размещение микросхем памяти в корпусном исполнении типа SOP. Две площадки под серию 25хх и одна под серию 24хх

Следует проконтролировать соответствие расположения микросхемы по ключу на корпусе и на плате. Там есть указатель контакта первой ножки чипа. Затем чип аккуратно прижимают миниатюрной прищепкой. Дальше всё делается стандартным образом – подключение к порту компьютера и программирование микросхемы.

Программатор CH341A: где купить и какая цена

Купить устройство выгоднее на известном портале Aliexpress. Цена, заявленная китайскими продавцами, чисто символическая (не более 200 руб. вместе с пересылкой). Быстрее и проще покупка производится через федеральный Маркет Яндекса. Предложения ниже:

Единственное неудобство для покупателя в случае запроса через китайский shop-портал AliExpress – приходится ожидать прибытия посылки в Россию примерно месяц-полтора. Но если учитывать открывающиеся возможности с приобретением этого товара, можно подождать и 3 месяца.

Страница одного из продавцов Aliexpress, предлагающего программатор CH341A купить за 112 руб. Это предложение проверено — можно смело покупать, к примеру, за яндекс-деньги

Читать и «шить» программатором CH341A доступно чипы памяти следующих производителей:

  • Atmel;
  • Amic;
  • EON;
  • ST;
  • Excel Semiconductor Inc;
  • NexFlash;
  • MXIC;
  • Chingis Technology Corporation;
  • WINBOND;
  • Saifun Semiconductors.

Таблица поддерживаемых микросхем программатором CH341A

ATMEL AT25DF041A, AT25DF321, AT25F004, AT25F512A, AT25F2048, AT25F4096, AT25F1024A, AT25FS010, AT25FS040, AT26DF081A,AT26DF161A, AT26DF321, AT26F004
AMIC A25L05P, A25L10P, A25L20P, A25L40P, A25L80P, A25L16P
EON EN25B05, EN25P05, EN25B10, EN25P10, EN25BF20, EN25P20, EN25F20, EN25B40, EN25P40, EN25F40, EN25B80, EN25P80, EN25F80, EN25T80, EN25B16, EN25P16, EN25B32, EN25P32, EN25B64, EN25P64
ST M25P05A, M25P10A, M25P20, M25P40, M25P80, M25P16, M25P32, M25P64, M25PE10, M25PE20, M25PE40, M25PE80, M25PE16, M25PE32, M45PE10, M45PE20, M45PE40, M45PE80, M45PE16, M45PE32
EXCEL SEMICONDUCTOR INC ES25P10, ES25P20, ES25P40, ES25P80, ES25P16, ES25P32
NEXFLASH NX25P80, NX25P16, NX25P32
MXIC MX25L512, MX25L1005, MX25L2005, MX25L4005, MX25L8005, MX25L1605, MX25L3205, MX25L6405, MX25L6445, MX25L6405
CHINGIS TECHNOLOGY CORPORATION Pm25LV512, Pm25LV010, Pm25LV020, Pm25LV040, Pm25LV080, Pm25LV016, Pm25LV032, Pm25LV064
WINBOND W25P10, W25X10, W25Q10, W25P20, W25X20, W25Q20, W25P40, W25X40, W25Q40, W25P80, W25X80, W25Q80, W25P16, W25X16, W25Q16, W25P32, W25X32, W25Q32, W25P64, W25X64, W25Q64
SAIFUN SA25F005, SA25F010, SA25F020, SA25F040, SA25F080, SA25F160, SA25F320

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

После чтения содержимого чипа устройством, программа сохраняет файлы в указанную папку с присвоением расширения *.bin (бинарный). Этот момент процесса программирования нужно учитывать. Например, когда для новой прошивки микросхемы используются файлы дампов, полученные из других источников, наделённые другими типами расширения. Перед загрузкой программатором таким файлам нужно заменить расширение на используемое по умолчанию (*.bin).

Как прошить микросхему памяти без выпаивания

Программатор микросхем памяти проверялся на чтении дампа eeprom-памяти контроллера Pixel (2 шт. ATMLH132). Результат впечатляющий. Работа на чтение информации, которую не удавалось сделать с помощью других конструкций программаторов, потребовала не более 3-4 секунд времени. При этом читаемые микросхемы памяти из платы контроллера не выпаивались.

На интерфейс программатора CH341A подключался непосредственно модуль памяти контроллера Pixel, состоящий из двух чипов памяти 24 серии. Подключение производилось через стандартный 4-контактный разъём.  Опыт — как читать дамп с микросхемы серии 24С04 без выпаивания чипа из платы, описан далее.

Чтение дампа микросхем памяти программатором CH341A 

Чтобы иметь возможность подключаться к микросхемам в DIP корпусах непосредственно на плате, нужно обзавестись контактной «прищепкой». Этот инструмент также можно купить недорого на упомянутом ранее сайте.

Набор аксессуаров для программатора, куда входит прищепка-контактор под микросхемы в корпусе DIP и переходная плата, с помощью которой осуществляется контакт с ZIF-панелью

Прищепка устанавливается на корпус микросхемы с таким расчётом, чтобы все контакты точно «сели» на ножки программируемого чипа. Первая контактная ножка рабочей микросхемы должна соответствовать контакту «прищепки» с подведённым красным проводом.

Следует помнить: плата с рабочим чипом, на который пишется или с которого снимается дамп, должна отключаться от любых источников питания, включая литий-ионные батареи (актуально для компьютерных материнских плат). На программаторе CH341A перемычка на контактах «S/P» снимается.

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

Ответный конец кабеля с «прищепкой» подключается на переходник (мини-плата) через штыревое соединение, и далее к ZIF-панели программатора CH341A. В зависимости от типа программируемой микросхемы, плата-переходник устанавливается в контактные гнёзда для чипов серии 24хх или 25хх.

Дальше останется только включить программатор CH341A в USB порт, запустить сопровождающую программу на компьютере и можно начинать работать с дампом микросхем памяти. К примеру, для указанной серии микросхем 24С04 потребовалось времени на считывание дампа не более 3 секунд:

Результат работы с микросхемой памяти в условиях её полного контакта с платой устройства. Съём дампа осуществлялся без выпаивания микросхемы из платы устройства

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

Причина отсутствия чтения/записи на программаторе CH341A

Объясняется причина отсутствия рабочего эффекта просто: по умолчанию схемой программатора CH341A используется рабочее напряжение (стабилизированное от USB) равное 3.3 вольтам. При таком малом уровне напряжения и токе не превышающем 500 мА, некоторые серии чипов попросту «не входят» в режим программирования.

Принципиальная схема программатора CH341A, предназначенного для программирования микросхем памяти серий 24хх (eeprom) и 25хх (флеш память)

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

Соответственно, устранение причины – подача напряжения программирования непосредственно от более мощного внешнего источника питания. Для этого используется 7-контактный разъём, присутствующий на плате программатора CH341A. Обозначение контактов разъёма есть на принципиальной схеме (см. выше).

Программирование микросхем памяти: видеоролик-инструкция

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

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

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

Материнская плата 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 интерфейсом! Ничего сложного, минимум компонентов.

Технически это очень простой способ, и требует лишь базового понимания схемотехники, умения припаять пару проводков и воспользоваться командной строкой (cmd). Но если вы не уверены в своих силах, лучше не рискуйте. Кроме того, всегда можно попросить друга, дружащего с паяльником.

Сборка устройства

Для сборки нам понадобится:

  • 1 разъем DB25P, можно отрезать от ненужного шнура от принтера
  • 4 шт. резисторы по 150 Ом
  • 1 любой электролитический конденсатор емкостью 100 мкФ или более и рабочим напряжением на 6.3 В или больше (нужен при запитке от БП)
  • Кусок плоского шлейфа с IDC разъемом на 10 контактов (он идеален при наличии SPI разъема на плате)
  • Штекер molex (как на жестких дисках ATA), либо гнездо для батарейки CR2032

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

Схема с сайта автора, при подключении непосредственно к чипу (для флеш-памяти с рабочим напряжением 3 вольта):

Программатор SPIPGM может использоваться и для микросхем флеш-памяти с рабочим напряжением 1.8 Вольт. Автор применяет для этого дополнительный модуль (своего рода переходник), который подключается к основному модулю и состоит из дополнительных резисторов для гашения напряжения и каскада усиления на транзисторах BC547 для выходного сигнала чипа (схемы на сайты автора по ссылке выше). Ниже приводится адаптация схемы подключения, сразу предназначенная для работы с чипами на 1.8В. Для получения напряжения питания в 1.8 Вольта применен делитель напряжения (на схеме серые резисторы, желательно 1/4 Ватт), делитель при желании может быть пересчитан на другие номиналы (я указываю варианты 10 и 12 Ом, или 100 и 120 Ом), а еще лучше заменен подходящим DC-DC преобразователем (например, TLV70018). Диоды любые, нужны они для минимизации ошибок и, в принципе, можно обойтись без них.

Мы же будем подключать программатор не к чипу, а к разъему SPI_J1.

Если разъем 7 контактный, то подключается к нему следующим образом:

1. -> питание +3.3v 2. -> земля от питания и вывод 18 на LPT 3. -> резистор -> LPT 7 4. -> резистор -> LPT 8 5. -> резистор -> LPT 10 6. -> резистор -> LPT 9

Так же, на некоторых материнских платах бывают 9 контактные разъемы, там схема подключения немного отличается:

Разъем DB25P хорош тем, что внутри него можно разместить все необходимые детали. Желательно использовать максимально короткую длину кабеля, иначе будут ошибки записи. Неплохо было бы закрыть провода экраном, либо от антенного кабеля, либо просто обмотав фольгой от шоколадки, не забыв подсоединить экран к земле (GND).

При питании от батарейки конденсатор можно исключить. Лично я брал с +5 шины блока питания (

красный

провод), подключив к нему через разъем molex и погасив напряжение диодами до ~3.3v (двух-трех диодов будет достаточно).Блок питания все же надежней батарейки. Имея отдельный БП можно запитать напрямую от шины +3.3 (

оранжевый

провод ATX разъема). Чтобы запустить блок питания без компьютера нужно замкнуть

зеленый

и черный провода.

Девайс в сборе:

Программа SPIPGM

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

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

Скачать SPIPGM(Версия 2.28, 123 KB, Скачан 16747)

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

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

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

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

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

Синтаксис: spipgmw /<команда> [имя файла] [адрес] [размер] [/l=адрес] [/d=задержка]

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

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 разъем, либо напрямую, любой поддерживаемой микросхемы.Используемые источники:

  • https://zetsila.ru/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b0%d1%82%d0%be%d1%80-%d0%bc%d0%b8%d0%ba%d1%80%d0%be%d1%81%d1%85%d0%b5%d0%bc-%d0%bf%d0%b0%d0%bc%d1%8f%d1%82%d0%b8/
  • https://www.toolgir.ru/proshivka-bios-cherez-spi-interface/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации