Программатор bios на ардуино

Программирование SPI Flash с помощью Arduino и SD-карты

Предыстория

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

  • материнская плата — ASRock B75 Pro 3
  • процессор — Intel Core i5-3570
  • блок питания — Corsair CX750M

После включения системник начал издавать пять противных писков, что вроде как соответствует неисправности процессора. Процессор, судя по Яндекс.Маркету, на данный момент стоит от 11000 руб. Покупать довольно накладно, а недорогой, но слабенький не хочется. В общем, немного испугался…

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

В первую очередь подключил другой старенький БП — комп не запускается.

Для дальнейших проверок принес домой автомобильный комп. Состав:

  • материнская плата — ASRock B75M-ITX
  • процессор — Intel Pentium G640T

Как хорошо, что компоненты оказались взаимозаменяемыми.

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

Далее домашний процессор вставил в автомобильный комп — комп заработал. Следовательно, процессор живой, а проблема в материнке. Начал грешить на BIOS (Winbond 25Q64BVAIG).

Собственно, программирование

Хорошо, что микросхема BIOS не впаяна, а на обычной панельке DIP-8. Программатора у меня нет, заказывать в Китае и ждать месяц — не выход. Решил сделать программатор из ноутбука жены и имеющейся в наличии Arduino Nano. Покопался в интернете… Везде в основном прошивка заливается через COM-порт, я же решил прошивать с карты памяти (так вроде гораздо быстрее).

Набросал схему подключения:

Собрал все на макетной плате:

Тип и объем карты памяти, способ ее форматирования, имя файла должны соответствовать требованиям библиотеки SD Arduino.

Для начала набросал скетч, который считывает содержимое SPI Flash и записывает его в файл на карту памяти, попутно вычисляя контрольную сумму по методу Checksum-32, т.е. простым суммированием.

Запустил скетч, получившийся файл сравнил с оригинальным BIOS — получилось около 140000 несовпадающих байт.

Далее написал скетч, который читает файл с карты памяти и записывает его на SPI Flash, предварительно стирая чип.

Запустил, подождал, скетч вывел контрольную сумму, она совпала с контрольной суммой оригинального файла. Но это контрольная сумма файла на карте памяти, мне же нужна контрольная сумма содержимого SPI Flash.

Можно было использовать первый скетч, но написал третий, который только считает контрольную сумму содержимого SPI Flash по тому же алгоритму.

Контрольная сумма SPI Flash совпала с контрольной суммой оригинального файла.

После вставки прошитой микросхемы BIOS в домашний комп — он благополучно заработал.

В среде Arduino IDE необходимо установить библиотеку SPIFlash через управление библиотеками.

Контрольную сумму вычислял с помощью HEX-редактора HxD.

PS: Первоначально в качестве SD-модуля использовал вот такой:

Но с ним были частые глюки, не инициализировалась SD-карта. Помогало «горячее» переподключение самой SD-карты при подключенной к компу Arduino.

PPS: Вместо резисторов пробовал подключить двунаправленный конвертер сигналов:

Но с ним схема не заработала.

Источник

Программатор BIOS на CH341A как программатор для Arduino pro mini 5v

Покупалась за совсем дешево $1.60 (что по сравнению с официальной версией совсем халява ). Были и подешевле, за 1.40, но этот продавец качественно упаковывает, все модули что заказывал имеют хорошую пайку и главное быстро отправляет. кому интересно вот ссылка на эту штукенцию того продавца -ТЫК-

Но у этой штуки нет USB разъема для заливки скетчей (программы контроллера). соответственно ей нужен программатор ВОТ ТАКОЙ, который тоже был заказан.

Как то давно был куплен программатор микросхем БИОС для материнок на чипах 24 25 серии. наверно с год назад, причем самый дешевый из возможных. Вот он на картинке:


И лежал он без дела, пока не появилась Arduino pro mini 5v на 328 чипе. хоть и заказал я для нее специальный USB-UART программатор, но он чет долго идет, а тут вспомнил про старый. А вспомнил то вот почему.. Когда я его подключал к компу для прошивки микрух один раз случайно слетел с него джампер и у меня он не шил микрухи. Полез я в диспетчер устройств и обнаружил что пропал мой USBчето-там, но появился com7 CH341A. Джампер то я вернул на место и все опять заработало как надо. Но когда стал пользоваться китайским ардуино уно r3, то он тоже определялся как com1 CH341A. Ну и соответственно когда пришло про мини меня то и осенило, названия похожи, значит должно заработать, т.е. прошиваться.
взял я программер и стал крутить. но как оказалось на нем есть только 3 ножки, причем без подписи. хотя было сразу предположено что 2 из них это RX TX точно. Погуглив по чипу нашел вот такое:

Прочитав даташит и поглядев на плату было установленно, что мой это первый вариант на картинке. Прозвонив ноги выяснил где что и как подключено. как и оказалось 3 штырька это RX TX GND. Но нам же еще нужно питалово 5в и DTR. прозвонкой выяснил что DTR соответствует 9 контакту зажима с защелкой. а вот питания у чипа 3,3 а надо 5. на плате при детальном рассмотрении видно что от 5в УСБ линия идет на сопротивление 430 Ом поэтому недолго думая решил сделать отдельный штырек. подрезав немного справа от разъема решил сделать площадку для штырька. но увидел что 5в усб довольно толстая ножка. Согнув штырек припаял прямо к ноге.

Осталось это дело подключить к ардуино и затестить.
Схема подключения такая:

ARDUINO PRO MINI >> CH341A Progammer
DTR >> DTR
TXO >> RX
RXI >> TX
VCC >> 5v USB
GND >> GND

В итоге получилось вот такое чудо:

Многократно протестировано. Все отлично работает.

Источник

Технохрень

Опросы

Рубрики

Еще по теме

Программатор SPI Flash своими руками

В общем это нужно чтобы перепрошивать 8 ножные SPI флешки. А это в свою очередь нужно чтобы восстанавливать роутеры, сбрасывать пароли на биосы и восстанавливать их, и много чего еще.

Будем делать за 10 минут самый простой программатор своими руками на Ардуино 🙂 Понадобится Arduino Pro Micro ну или любая другая (будет отличаться только распиновка на ардуино). Собираем эту сложную схему:

Пофиг что 5 вольт, еще ничего не сгорело ни разу. Но только выпаивать флешки надо из платы, так как другие элементы могут быть не такими устойчивыми))))

Вот прошивка (скетч) для ардуины:

Ничего сложного и главное нет лишних деталей в схеме))) Главное правильные библиотеки — скачать их вместе с прошивкой тут: spi-eeprom-fw2.zip

Пробовал на флешках 25Q128FVSG, 25L3206E, еще какая-то роутерная безымянная.

Как выяснилось программатор может иногда не работать 🙂 Вариантов несколько:
— либо слишком длинные провода к флешке (нормально см 8-15)
— либо слишком китайская ардуина (например нано в3)
— либо дохлая флешка

159 Comments

Здравствуйте! А как с Вами можно связаться? Вопросик по этой программке появился

admin

Александр

Приветствую.
Попробовал собрать данный прибор на UNO и на MEGA, работает на простых SPI 25-йсерии.
Могу я вас попросить доработать устройство для работы с Flash AT45DB161 — Atmel ?
Очень интересная микруха, а как правильно читать-записывать никак не разберусь.
Спасибо.

admin

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

Мансур

Здравствуйте! Я всё скачал. прошил ардуину вашим скетчем. Но до меня не доходит как залить прошивку в флешь. Нету кнопки залить или закачать. Только сохранить получается. Подскажите пожалуйста. Очень надо прошить тв с 8 мегабайтной spi. Мой прогер только до 2-х мега берёт. И ещё не понял в архиве 3 файла. 1 то понятно скетч а 2 других куда?

admin

Здравствуйте! Ставите курсор в начало флеша (на нулевую позицию) и нажимаете «вставить файл в текущую позицию», затем выбираете файл прошивки и ждете ))

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

Здравствуйте! А можно этим программатором шить флешки биосов материнок , если да а как туда залить (в прогу) прошивку для биоса?

admin

Да наверно, надо только проверить что флешки именно с SPI интерфейсом и ее нужно все ж выпаять из материнки. Чтобы точно сказать напишите модель флешки.

А чтобы прошить надо сначала сделать бекап (скачать фулфлеш). Потом поставить курсор на самый первый байт в редакторе и нажать «Вставить файл в текущую позицию»

Filin

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

admin

Для общего развития если просто посмотреть — можно декомпилировать без проблем)) а что Вы бы улучшили? Есть предложения? Я готов работать над программой.

Filin

Декомпилировать — это для меня слишком круто 🙂 Я пока только начинаю интересоваться этой темой. Ну нет так нет, не критично. В любом случае спасибо за статью, для начинающего самое то — коротко и по делу.

admin

Вот исходники консольной версии http://skproj.ru/wp-content/uploads/2016/05/SpiEepromCon.zip
Если допилите, пожалуйста, поделитесь)) Внесу изменения в основную версию

URAsikkk

Добавьте кнопку стереть флеш в 00000.Записывать биос нужно на чистую флеш(так работают все програматоры). И добавте кнопку «Определить размер флеш памяти», а так же кнопку «проверка памяти на битые сектора»…

Виктор

А если я буду использовать аналог Меги2560 — что нужно изменить? Хочу попробовать прошить флэш мульта ноутбука. Еще есть у мня USB-TTL и COM-TTL переходники. Может как-то с их помощью можно прошить?

admin

Думаю с мегой2560 проблем не возникнет, номера ног для MOSI, MISO и SCK немного другие, но они должны быть соседние.
Насчет USB-TTL и COM-TTL не знаю, мне кажется есть какие-нибудь программаторы, которые работают через эти переходники, но я не встречал

Виктор

я так понял -= у вас 2-й пин это SDA. 15й — SCL, 14- MISO 16 — MOSI. это аппаратная распиновка предусмотренная изготовителем контроллера?

тогда на Mega2560 20й пин — SDA, 21й — SCL, 50 — miso, 51 — mosi. Так и подпаивать к флэшке?

SDA — нога 1
MISO — нога 2
VCC — нога 3, 7, 8
GND — нога 4
MOSI — нога 5
SCL — нога 6

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

admin

Немного не так, CS нога флешки должна идти к D2 (Digital 2). Еще SCL на меге2560 52 пин. MISO и MOSI правильно. Вот тут таблица есть https://www.arduino.cc/en/Reference/SPI

Виктор

Смотрел по схеме. да, 52 пин это SCK. Просто у меня на плате есть надписи где 21 — SCL.

А вообще я ступил, тут же прям посередине платы есть 6-пиновый разъем ICSP — буду от туда подключатся. там и MISO и MOSI и SCK и Vcc и GND. А 2-й пин значит задается в скетче в начале?

По поводу переходников — они наверное в другой ситуации используются, там интерфейс UART, т.е. по Rx и Tx данные передаются.

admin

Я чет не уверен что тот 6 пиновый разъем по середине — то что надо. Все ж лучше по таблице делать https://www.arduino.cc/en/Reference/SPI
Хотя проверить не мешает, может правда просто продублировали ноги в другое место

admin

а 2 пин да, задается в начале. Можно любой использовать какой нравится)

uraasikkk

у ардуино Уно например 2 пин не работает-софт спифлешер виснет.Работает только на 10 пине(проверено лично) Как видим по распиновке на https://www.arduino.cc/en/Reference/SPI указан имено 10 пин)

Виктор

Да. и на 2560 есть 2 питания 3,3v и 5v, какое надежнее использовать?

admin

Я все делал на 5 вольтах, хотя по документации надо 3.3. попробуйте 3.3 — если не заработает тогда 5 🙂

Виктор

а какой размер выставлять? в даташите есть такая инфа:

Pm25LD010: 128K x 8 (1 Mbit)

admin

Виктор

Все. Спасибо дружище. Прошил флэху. Ноут сразу запустился. До этого лежал мертвым, даже индикации заряда АКБ небыло.

Александр

Скетч залил на Ардуино Уно. При запуске SpiEepromFlasher выдается сообщение о том, что тот не является приложением WIN32. У меня XP. Нужна WIN7 ?

admin

Нужен .net framework 4.5 и 64 разрядная операционная система

urasikkk

Системные требования не помешают)

Александр

При попытке перезалить скетч выдает : Arduino: 1.6.6 (Windows XP), Плата:»Arduino/Genuino Uno»

avr-g++: error: missing filename after ‘-o’

exit status 1
Ошибка компиляции.

Александр

Установил последнюю версию Arduino IDE, скетч залил без ошибок. Буду искать 64 разрядную ОС.

Александр

Всё прошил на отлично !
Теперь подробнее, возможно кому-то поможет. ОС WIN 7 32-разрядная(достаточно оказалось), на всякий случай поставил последнюю версию Net.framework 4.5.
Плата китайская Ардуино Uno.
Подключение :
Ардуино Микросхема
2 1 D2
12 2 MISO
3.3 v 3, 7, 8 Vcc
GND 4 GND
11 5 MOSI
13 6 SCL
Автору — искренняя благодарность .
P.s. а какие еще типы флешек можно прошивать по Вашей методике ?

admin

Был рад помочь. Только SPI флешки

Виктор

Доброго дня. Сегдня принесли автомобильный видеорегистратор, висит на заставке. Пробую прошить. На офсайте прошивка заливается через SD карту. Результата нет — закачал на Sd, включил — все равно не прошился. Я его разобрал и сразу обратил внимание на SPI память с маркировкой 25L320SE. Я так понял микропрограмма вся хранится на этой флэшке? может также прошить с ардуины? других микросхем памяти я не нашел на плате. файл прошивка в формате BIN.

Виктор

сори 25L3206E. такая как у Вас в инструкции.

Виктор

я вообще на WIN 10 64x шил. все в норме прошло. Воскресил ноутбук) щас буду пробовать регистратор восстановить. А вообще заказал программатор на aliexpress что б не паяться к ножкам. стоит он 200 рублей.

Виктор

Денис

Спасибо автору!
Этим способом удалось прошить SATA контроллер.

Легион

Шил 25032xx Через переходник 5 ->3.3 читает но не пишет. Воткнул напрямую. Шьет. Спасибо.

Metamorf

Распиновка Arduino nano v3.0
1 — d2
2 — 12
3,7,8 — vcc (5v)
4 — GND
5 — 11
6 — 13

Stepik

urasikkk

Буду рад распиновке Arduino-pro-mini.

Андрей

Привет, микросхема 25l8006e со скаллера (после кривой прошивки через усб, была не вовремя прервана). При запуске этого программатора, после выбора нужного ком-порта, открывается окно программы с белым экраном вместо данных и зависает — not responding. Куда копать? Большое Спасибо.

admin

Привет, ну либо провода слишком длинные либо что то с ардуиной не то. попробуйте подключится к ней через монитор порта на скорости 115200 и отправить букву t — если напишет COM ok то проблемы между флешкой и ардуиной или с самой флешкой. Если не напишет COM ok тогда что то не то с ардуиной 🙂
Если с флешкой проблема попробуйте укоротить провода к ней, ну или другую флешку, может какая-то несовместимость 🙂 Еще почему то не всегда программатор с arduino mini работает

Андрей

Получилось с Мегой! С Nano v3 на отрез отказывается работать. Спасибище. 🙂

Сергей

Всё отлично, хороший программатор на скорую руку получается. Автору огромное спасибо. Только вот я его нагуглил, когда хотел прошить 93C56… А такие маленькие он не шьет(

admin

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

Алексей

Спасибо автору! Если внимательно прочитать и сделать как описано, то все получится! Впервые решил перепрошить роутер. Была под рукой запылившаяся Ардуино Нано. Соединил провода. Скачал последний IDE. Прошил успешно.

Павел

Спасибо автору огромное! Очень помогло! Вот только не решил проблему: на меге 2560 первые 128 байт заливаются сплошные FF.

admin

Может флеш не исправна?

Константин

Все собрал. ID читает. После нажатия на считывание фулфлеш программа перестает отвечать. Как с этим бороться? Заранее спасибо

admin

Вариантов несколько:
— либо слишком длинные провода к флешке
— либо слишком китайская ардуина (например нано в3)
— либо дохлая флешка

urasikkk

Как узнаеш что флешка дохлая? Может есть скетч который это проверит?

Огромное спасибо автору! Восстановил камеру Soocoo C30 после неудачной прошивки. Все супер !

Wikly

Автор молодец! Спасибо! Было бы прям совсем отлично, если бы сама прога на ПК была под 32х разрядную систему!

Wikly

И еще, при попытке скачать фулфлеш, почему то сохраняется только 4 КБ из 4096. Хм.
Arduino UNO,
flash: Winbond w25q32bv

Источник

Adblock
detector