Текущее время: 10 фев 2023, 04:36 |
Сообщения без ответов | Активные темы
Модераторы: igils, Rom, Ozzy, ars44, RsM
Страница 1 из 1 [ Сообщений: 11 ] |
Показать сообщения за: Поле сортировки
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Страница 1 из 1 [ Сообщений: 11 ] |
|
||||||||||||||||||||||||||||||||||||||
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |
GOT IT WORKING!!!
Firstly, I would like to thank all of those who helped me fix my problem, especially chef jeff and Jack t.N.
To recap (so that this may help those who get themselves into a similar situation and as payback for those who helped me), I used M-Flash to ?upgrade? my BIOS from version 1.40 to version 1.70. My system was working perfectly well upto that point, but I wanted some features in the newer version. After the automatic reboot which occurs after M-Flash completes, my system would not post. The LED status went to FF immediately and stayed there. I did all the recommended things, like clearing the CMOS, trying to get the system to recover the BIOS from a USB stick, floppy drive and optical drive. Nothing helped. The system did absolutely nothing after turning on. chef jeff suggested that I try flashing the BIOS onto my chip from a different computer. This required either unsoldering the BIOS chip from the mainboard or using the JSPI1 connector to do access the BIOS chip. I chose the latter. So, for those who want to try it, this is what eventually worked:
I used a laptop with a LPT port. I suppose any computer with this port would do. Here I needed to do a number of things. Firstly I needed to get the laptop to boot in DOS mode. I tried the identical recovery through the windows ?DOS? (via cmd) screen, but it did not work. For this I had to change the BIOS to boot from a USB stick and had to create a USB stick that was bootable in DOS. I tried several methods to get this right, and eventually I got a version running with a utility supplied by HP. I am sure you can google this. Once a bootable version of DOS was working, I extracted http://rayer.ic.cz/programm/cwsdpmi6.zip and http://rayer.ic.cz/programm/spipgm.zip onto the USB stick into the same folder. Being in the same folder was important because SPIPGM appeared look (and perhaps run) for CWSDPMI before it would work. I also copied the BIOS I wanted (A7577AMS.160) into this directory. That was it from a software perspective.
From I hardware perspective, things were a little harder, especially with my soldering skills and my knowledge of electrical circuits leaving much to be desired. Regardless, RMA for me looked like a distant dream so I had to pursue this alternative. I had many attempts using different cables, configurations etc, but in the end, the simplest one worked. I plugged in 4 100ohm resistors into my LPT connector into port 7, 8, 9 and 10. I bent the ends double so that they would fit tightly. I then connected these to a strand inside a ~20cm length (try not to go longer as it stops working if the thing gets too long) of CAT5 LAN cable with electrical connectors (things with 2 screws in the top and a path for the cables and electrical current to flow through). I attached a 5th strand of the LAN cable to port 18 and plugged this tight with an end of a paper clip. A 6th strand was used to connect to a 3.33volt power source from my power supply. These strands were then attached to the JSPI1 connector (the JSPI1 connector is unfortunately not the standard size (it is smaller) and MSI do not provide a header for it) using 2 4-pin plugs that I had to butcher to get them to fit. The JSPI1 connector was connected as follows:
#1 to orange cable in 24 pin PSU (3.33 volts)
#2 No attachment (spare vcc)
#3 to LPT #10
#4 to LPT #9
#5 to LPT #7
#6 to LPT #8
#7 to black cable in 24 pin PSU (Ground)
#8 to LPT #18
The PSU was not plugged into the mainboard (I tried to do the whole exercise with the mainboard powered up as well as in standby mode but these options did not work with SPIPGM), so I had to fool it into thinking that there was a mainboard attached so that I could start it. To do this, I ran an on-off switch between the green cable and the black cable next to it on the 24 pin PSU connector. It helped me that the mainboard was by now out of the case and on the carpet.
Everything connected, I turned on the PSU. The fan was spinning and I had 2.6volts between JSPI1 #1 and #8. Who knows where the other 0.7volts went, but this turned out to be sufficient. Booted up the laptop in DOS with the USB stick. Ran CWSDPMI once. Then ran the following sequence:
SPIPGM /i (this returned the manufacturer of the BIOS chip and the model and told me that two of the bits were set to 1 and I had to clear these. The previous times where it did not work, even though it had got the manufacturer and model correct, this did not happen.).
SPIPGM /u
SPIPGM /d oldbios.170 (so that I can try and check out what went wrong in the first place).
SPIPGM /e
SPIPGM /p A7577AMS.160
SPIPGM /r 0x00 0xff (if this just displays FFs, then your flash did not work)
SPIPGM /d newbios.160 (just for the hell of it)
Good luck! By the way, my laptop did not enjoy the voltages I assume it was receiving through the LPT port. It seems fine now, but there was a chance I was going to have 2 broken computers.
всем привет!
Не получается у меня шитье SPI флешей. Я понимаю, тема избитая и оскомина от нее. Но все же. Я уже два программатора спаял по схеме с чешского форума. То есть, на LPTразьеме, через резисторы и питалово 3,3 вольта через регулятор-гребенку напряжения. У флеши на третьем пине WP имеется напряжение 3,3 вольта. Главное он вроде шьет,и дамп сливает, но результата нету. Я сначала пробовал прогер на убитом борте. Потом меня взяли сомнения и я на абсолютно рабочем MSI MS-7350 попробовал понизить версию биоса. После этой попытки MS-7350 убился совсем, только врашает кулерами. Если я правильно понимаю, то у меня не снимается защита от прошивания. И шьется оно или не туда ил просто в режиме эмуляции. Прилагаю копию лога с моими комментариями.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:DOKUME~1Asus>SPIPGMW.EXE /i
SPI FlashROM Programmer 1.9c (C) 2008-2011 by Martin Rehak;
Compiled by GCC 4.4.0 at 23:20:41, Mar 22 2011
(Win9x/NT/2K/XP compatability)
SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us
FlashROM JEDEC ID, type: EF3013h
Winbond W25X40 (512kB)
Status = 00h (SRP, RES, TB , BP2, BP1, BP0, WEL, BSY)
0 0 0 0 0 0 0 0
#########################################################################
тут после команды SPIPGMW.EXE /i нашелся LPT порт и определился тип флеши.
#########################################################################
C:DOKUME~1Asus>SPIPGMW.EXE /u
SPI FlashROM Programmer 1.9c (C) 2008-2011 by Martin Rehak;
Compiled by GCC 4.4.0 at 23:20:41, Mar 22 2011
(Win9x/NT/2K/XP compatability)
SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us
FlashROM JEDEC ID, type: EF3013h
Winbond W25X40 (512kB)
Status = 02h, WE bit is enabled
Unlocking…
Status = 00h, device is unlocked now.
#########################################################################
тут я не совсем понял, после команды SPIPGMW.EXE /u должна сняться зашита от прошивки.
тем не менее, оно пишет WE bit is enabled, если я правильно понял, защита остается вклеченной
########################################################################
C:DOKUME~1Asus>SPIPGMW.EXE /e
SPI FlashROM Programmer 1.9c (C) 2008-2011 by Martin Rehak;
Compiled by GCC 4.4.0 at 23:20:41, Mar 22 2011
(Win9x/NT/2K/XP compatability)
SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us
FlashROM JEDEC ID, type: EF3013h
Winbond W25X40 (512kB)
Status = 02h, WE bit is enabled
Please wait… done.
#########################################################################
тут, если я правильно понял, флешка не стерлась, потому что WE bit is enabled
#########################################################################
C:DOKUME~1Asus>>spipgm.exe /d A7350NMS.270
SPI FlashROM Programmer 1.9c (C) 2008-2011 by Martin Rehak;
Compiled by GCC 4.5.2 at 23:20:30, Mar 22 2011
(DOS/Win9x compatability)
SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us
FlashROM JEDEC ID, type: FFFFFFh — parity error!
Unknown manufacturer
Enter total FlashROM size in kB: 512
Reading sector at: 0007F000h (100%)
#########################################################################
тем не менее, прошивочный файл шьется почти минуту и выполнение доходит до 100 процентов.
#########################################################################
C:DOKUME~1Asus>
Перенес в Прошивку (восстановление) BIOS.
maco
Вложение | Размер |
---|---|
1a2714315bb3.jpg | 17.5 КБ |
Содержание
- Jspi1 на материнской плате подключение
- unixforum.org
- Восстановление BIOS на материнской плате MSI
- Восстановление BIOS на материнской плате MSI
- Прошивка BIOS через SPI интерфейс
- Немного предыстории:
- Сборка устройства
- Для сборки нам понадобится:
- Девайс в сборе:
- Программа SPIPGM
- В архиве следующие файлы:
- Синтаксис и основные команды:
- Прошивка BIOS через SPI:
Jspi1 на материнской плате подключение
Многие из нас обновляли BIOS: кому-то приходилось обновлять BIOS в связи с апгрейдом компьютера; кто-то из-за возможных проблем совместимости, или по иным причинам. Процедура не сложная, и, по большей части, описана в инструкциях на сайте производителя (там же имеются и программы для прошивки). Но зачастую многие также сталкивались с проблемой выхода из строя микросхемы BIOS (сбой по каким-то причинам) или неудачной прошивкой последнего.
Не так давно ко мне попала материнская плата со следующими признаками неисправности: при включении питания (от розетки, не кнопкой на системном блоке) компьютер самопроизвольно стартовал, (вентиляторы крутились, на экран изображение не выводилось, материнская плата не издавала никаких звуковых сигналов).
При нажатии кнопки Power на 5-ть секунд компьютер выключался и
включался привычным для нас способом при повторном нажатии на кнопку Power. При снятии планки памяти материнская плата по-прежнему не издавала никаких звуковых сигналов, были проверены другие комплектующие (процессор, блок питания и т.п.) – все в норме.
К чему я все подвожу: чтобы стало понятней об одной из проблем материнской платы (есть, конечно, и другие) – слетевший BIOS.
Взглянув на материнскую плату, можно обнаружить и саму микросхему BIOS:
Сняв наклейку, только под лупой удалось разглядеть надпись на самой микросхеме (надпись очень мелкая, поэтому трудно рассмотреть): A25L040-f/
Привычный для нас способ прошивки BIOS (с помощью программ от производителей материнской платы и стандартной загрузки:
консоль восстановления или загрузки из-под DOS с указанием программе нашей прошивки – на экране нет изображения) здесь не подойдет (да и dual-bios, как, например, у Gigabyte отсутствует). Способы восстановления BIOS бывают различные (зачастую зависит от производителей материнской платы и иных факторов). Я попытаюсь представить один из способов по восстановлению BIOS. Немного покопавшись в Интернете, нашел схему программатора (программу Spipgm скачать здесь) схема очень простенькая и в комментарии не нуждается, за что и подкупила своей простотой.
Я же все-таки попытаюсь разъяснить некоторые нюансы (хотя нюансы могут возникнуть разные, и обо всех сразу не представляется возможным рассказать, но суть, надеюсь, станет понятней), и показал схему немного в переделанном виде, чтобы наглядно показать, насколько все просто (обозначение ножек BIOS, я взял из мануала).
Для чего нужен разъем JSPI1 (в моем случае он 9-ти контактный, но встречается и 7-ми контактный – все зависит от материнской платы: как правило, он находится в непосредственной близости от микросхемы BIOS)?
Этот разъем служит для прошивки BIOS посредством программатора (собранного по схеме), не выпаивая саму микросхему (при этом необходимо обесточить материнскую плату, в частности, достать батарейку).
Программатор подключается к компьютеру через LPT, а выводы с него, соответственно, к разъему JSPI1 материнской платы, BIOS которой необходимо прошить (либо к самой микросхеме, предварительно выпаяв, навесным монтажом). Выводы программатора, желательно, сделать небольшой длинны, во избежание потери сигнала (на всякий случай), не выяснял зависимость длинны проводов на способность прошить чип, но встречал такие рекомендации. Выводы разъема можно прозвонить тестером в соответствии с выводами на микросхеме BIOS (в моем случае получилось как на рисунке). Питание + 3,3 В можно взять с
разъема блока питания + 3,3В. Напряжение питания (для операций чтения, стирания и программирования) в пределах + 3,6 В, поэтому, я не стал подключать + 3,3 В от блока питания, а решил использовать в качестве питания батарейку на 3 В (напряжение лучше подобрать такое, при котором будет шиться микросхема). Резисторы проверял тестером – показывал 147 Ом. Поэтому у нас есть, по крайней мере, два способа (есть и другие способы, но не в этом обзоре) прошивки BIOS: выпаяв саму микросхему BIOS и прошить через программатор, подключенный к компьютеру посредством LPT; и используя разъем JSPI1 (так называемый SPI-интерфейс), при этом, подключаем программатор не к самой микросхеме, а к разъему JSPI1 (процентов 90 может быть положительный результат, ну а оставшиеся проценты на прочие ситуации, можно так сказать). Я чип вытащил, а проводки подпаивал к панельке). В итоге вот что у меня получилось:
Немного по самой программе. Программа запускается через командную строку (ПУСК – Выполнить – cmd: надеюсь, все знакомы), под Windows XP запускать spipgmw.exe.
Вот что нашел в описании ключей к данной программе:
SPI FlashROM Programmer 1.6 © 2008-2009 by Martin Rehak; rayer@seznam.cz
Compiled by GCC 3.4.5 (mingw-vista special r3) at 22:49:21, Jan 21 2009
(Win9x/NT/2K/XP compatability)
SYNTAX: spipgm /i|r|d|e|p [filename][address][/l=iobase] [/d=delay]
/i — identify SPI FlashROM
/r address size — read & display data block (0x prefix = hexa number)
/d filename — dump entire FlashROM to file
/p filename — program entire FlashROM from file (without erase)
/e — erase entire FlashROM
/u — unlock write protection bits (may depend on WP# level)
/l= LPT port I/O base address (default is 378h — LPT1)
/d= additional delay for SPI clock pulse width [usec](default is 0)
На моем компьютере не было LPT порта (уходит нынче LPT в пользу USВ, поэтому брал старенький компьютер друга с имеющимся LPT портов
Все делал в соответствии с ключами, представленными выше. Качаем BIOS на сайте производителя материнской платы, чтобы залить прошивку, и заливаем с помощью команды с ключом /p. Здесь у меня возникла небольшая проблемка (программа не хотела, почему-то, воспринимать прошивку – не могла прочитать – синтаксис ей не нравился). Поэтому я загрузился с windows PE и попытался прошить из-под нее. Запустил программу с ключом /р и указал файл прошивки из под totalcmd (синтаксис: spipgmw /p A7367AMS.380 (последний, после ключа /р – файл прошивки).
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
Восстановление BIOS на материнской плате MSI
Восстановление BIOS на материнской плате MSI
Сообщение Bizdelnick » 12.09.2017 20:45
Казалось бы, дальше всё должно быть просто, но нет. Как я ни изощрялся, flashrom флешку не видел. Найти в интернете свидетельства успешной прошивки через 11-пиновый JSPI1 мне тоже не удалось, так что я пришёл к выводу, что это невозможно. Хотя нельзя исключать, что я недооцениваю свою криворукость; потому и привожу здесь распиновку разъёма: вдруг она не настолько бесполезна, как мне кажется.
Следующим, уже третьим приобретением у братьев-китайцев была SOIC8-прищепка, с помощью которой я подключил программатор к чипу напрямую (слегка погнув при этом одну ножку расположенного рядом злополучного JSPI1). И тут обнаружилась ещё одна хитрость: flashrom не видит флешку и при таком подключении до тех пор, пока на плату не подано дежурное напряжение. То есть надо подключить к ней блок питания, который в свою очередь подключить к сети, и только после этого флешка обнаруживается.
Вот такие команды нужны для работы с программатором (выполнять следует от рута, потому что flashrom общается с программатором по USB напрямую):
flashrom -VVV -p ch341a_spi -c MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E — поиск флешки (только для проверки работоспособности подключения к оной)
flashrom -V -p ch341a_spi -c MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E -r broken.rom — сохранение содержимого флешки в файл broken.rom (на всякий случай)
flashrom -V -p ch341a_spi -c MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E -w 7846v19/E7846IMS.190 — прошивка содержимого файла 7846v19/E7846IMS.190 на флешку
Поскольку при таком методе содержимое флешки переписывается разом — и UEFI, и ME — можно безбоязненно использовать прошивку от MSI.
P. S. В процессе мытарств обнаружил, что весьма распространено заблуждение, якобы разъём MOSI программатора надо подключать к разъёму MISO флешки, а MISO программатора — к MOSI флешки. Это не так! Правильно — MOSI к MOSI, MISO к MISO. Такие мудрёные (master out slave in и master in slave out) обозначения специально были придуманы, чтобы избежать путаницы, имеющей место у симметричных интерфейсов типа UART, где Tx одной стороны подключается к Rx другой.
Источник
Прошивка BIOS через SPI интерфейс
Не столь давно приключилась со мной одна неприятность. Нужно было обновить 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.32, 129 КБ, Скачан 19015)
Проект, кстати, развивается и по сей день, автор частенько выкладывает обновленные версии программы с информацией о новых чипах, доработками и исправлениями.
В архиве следующие файлы:
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 / [имя файла] [адрес] [размер] [/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 разъем, либо напрямую, любой поддерживаемой микросхемы.
А что делать, если 5 бинов у SPI?
Изучить. Может там земля не выведена. Может это вообще не SPI. Или к чипу напрямую подключаться.
Ох, обещал, заглядывать, ссылку сами найдёте, или подсказать? Райан выпустил в конце мая 2.28.
Спасибо, что напомнили ) Обновил.
Райер выпустил 06.10 2,28 под х64. Что-то у меня не пошло. Он проверял под 10.
У меня тоже не работает на 10 (последнее обновление 1809, на других проверить не могу пока). С десяткой куча танцев с бубном: нужно UAC отключить, проверку цифровой подписи драйверов отключить (для этого может потребоваться Secureboot отключить в UEFI), запускать строго от админской CMD а не с PowerShell. И не факт что еще заработает. Намного проще скачать с интернета загрузочный диск с XP и быстренько сделать дело.
Списался с Мартином, автором. IOPORT.DLL, драйвер грузится динамически, поэтому regserv32 бла-бла не прокатывает. Пришлось воспользоваться, чтобы взвести для Асус бит S9 QuadEnable в регистре статуса. Всё получилось, мать стартанула. Попутно прошил и верифицировал всю прошивку целиком, под ЛОС и WIN x64. Всё на УРА.
Ошибочка, там ЛОС-ДОС. У меня раздел всегда досовский под рукой, я начинал на РК-86 CP/M ставить, электронный диск, магнитофон с контроллерами 580ВВ51, ВИ53, ВК28-38. Сейчас с UEFI BIOS на короткой ноге, с помощью ребят, чего-то достиг. Например, в Асус биос смог запихнуть вместо прошивальщика бестолкового EZ нормальный Shell.efi. Как-то так. Я захожу периодически.
А, микрокоды любые куда угодно ручками вставляю, причём с проверками. Т.е., никаких ошибок. Есть интересная тема, на сокете 1150 поставить с помощью китайских переходников BGA-1150 ноутбучный процессор i7-4980hq. + кеш L4 + разгон по желанию. Из буста сделать постоянную работу. Цена вопроса у парня из Рязани 11.000. С гарантией. Обзор — https://overclockers.ru/blog/ATRChannel/show/22333/crystalwell-bolshoj-faq
Я как-то последнее время отошел от всех этих модификаций, допиливаний, припиливаний. Да и производители материнок не стоят на месте, за последние годы все нормально шьеться через встроенный прошивальщик на любых матерях. Что еще надо ) Ну а вообще поковыряться это всегда прикольная тема.
Добрый день. Спаял, запускаю, определение проходит четко, разблокировка не проходит, стирание тоже, попытка записать и считать выводит только нули. Что может быть? Напряжение 3,5в, чуть поднимал и опускал, ничего не меняется… Что может быть? f:SPIPGMW.EXE -i SPI FlashROM Programmer 2.28 (C) 2008-2018 by Martin Rehak; rayer@seznam.cz Compiled by GCC 8.1.0 at 11:48:02, Oct 6 2018 (Win9x/NT/64 compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: EF4016h Winbond W25Q32BV/FV (4MB) S/N = DE6710659F875821h Status = 3A00h (SUS,CMP,LB3,LB2,LB1,-,QE,SRP1,SRP0,SEC,TBP,BP2,BP1,BP0,WEL,BSY) 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 f:SPIPGMW.EXE -u SPI FlashROM Programmer 2.28 (C) 2008-2018 by Martin Rehak; rayer@seznam.cz Compiled by GCC 8.1.0 at 11:48:02, Oct 6 2018 (Win9x/NT/64 compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: EF4016h Winbond W25Q32BV/FV (4MB) S/N = DE6710659F875821h Status = 3A02h, WE bit is enabled, blocks protection is enabled Unlocking… Status = 3A00h, unlock failed, maybe OTP lock or try to set WP# pin at high level f:SPIPGMW.EXE -e SPI FlashROM Programmer 2.28 (C) 2008-2018 by Martin Rehak; rayer@seznam.cz Compiled by GCC 8.1.0 at 11:48:02, Oct 6 2018 (Win9x/NT/64 compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: EF4016h Winbond W25Q32BV/FV (4MB) S/N = DE6710659F875821h Status = 3A02h, WE bit is enabled, blocks protection is enabled ERROR: FlashROM is locked, run unlock command first! f:SPIPGMW.EXE -p flash1.bin SPI FlashROM Programmer 2.28 (C) 2008-2018 by Martin Rehak; rayer@seznam.cz Compiled by GCC 8.1.0 at 11:48:02, Oct 6 2018 (Win9x/NT/64 compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: EF4016h Winbond W25Q32BV/FV (4MB) S/N = DE6710659F875821h Programming page at: 003FFF00h (100%) f:SPIPGMW.EXE -d flash4.bin SPI FlashROM Programmer 2.28 (C) 2008-2018 by Martin Rehak; rayer@seznam.cz Compiled by GCC 8.1.0 at 11:48:02, Oct 6 2018 (Win9x/NT/64 compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: EF4016h Winbond W25Q32BV/FV (4MB) S/N = DE6710659F875821h Reading sector at: 003FF000h (100%) f:
Здравствуйте. Ответ в этой строке — Status = 3A00h, unlock failed, maybe OTP lock or try to set WP# pin at high level Разблокировка не прошла, соответственно делать с памятью программатор ничего не может. Пишет, что либо пароль на памяти, либо нет напряжения на WP#. Проверьте наличие напряжения 3.3 на 3й ножке. Некоторым помогает подать напряжение на мат.плату.
Спасибо за совет, видимо память сдохла, с неё все и началось, приставка DC1301HD перестала загружаться, первый раз помогло штатное обновление прошивки с флешки, через три месяца все повторилось, только до обновления прошивки уже не дошло, надпись DCOLOR и перезагрузка. Подцепился ком портом, пробовал обновить через командную строку, стереть стерлась(кажется), при заливке новой — failed и failed… В итоге после выключения питания — кирпич. Попытки оживить через другой программатор(чужой самодельный), успеха не принесли, хотя память 24 серии на нем успешно программировалась. В итоге купил новую, два дня на том программаторе успеха не дали, не пишет и не читает. Сегодня подцепил к параллельному порту, вообще не определяет, проверил ножки, мда, пришепка не катит, часть ножек в воздухе. Извратился, добился полного контакта, и о чудо, заработало! Со второй попытки образ записался и прочитался без ошибок! Ура!
Вау )) целый приключенческий рассказ Вот это по-нашему! Все же добиться результата. Рад, что получилось.
Могу ли я заходить без пре- модерации? Расскажу, как ставить WIN с флешки NTFS, а не FAT32. Это для подготовленных
Можно без премодерации, главное имя и имейл чтоб тот же был. А смысл всех этих телодвижений? Есть Rufus — который прекрасно создает загрузочные флешки хоть FAT32, хоть NTFS. В том числе под UEFI (что нынче важно).
Теперь про суть. Первое, списался с Мартином Райером, чехом, автором SPI_Programmer. IOPERM.DLL как бы это комично не выглядело — DLL,дайнемик лодейбл либрери, подгружается ТОЛЬКО динамически, на время работы. regserv32 не прокатывает. Второе. Во всех старых и новых биосах от ВСЕХ производителей лежит драйвер DXE NTFS от AMI. Запускаю UEFI Shell, Команда DIR или LS показывает часть содержимого моего 1 Тб неактивного, незагрузочного. Меняю DXE AMI на GRUB NTFS — вижу всё. Далее, замена драйвера DXE в биос, флешка NTFS, 1903 ставится без проблем. Но. Ссылку могу дать на FFS модуль, замена, боюсь, неподготовленные окирпичат свои ПК. Нужны пояснения, ссылка — непременно отвечу, здесь или в личке. Удачи. На сайте атмосфера доброжелательная.
Я это к чему, миф об обязательной флешке в формате FAT32 меня не устраивает,осталось проверить USB FlashBack с зашитым в биос драйвером DXE GRUB. Похоже, косяк от AMI. Их драйвер кочует до сих пор.
Ну вот нет у меня мамки с FlashBack! Испытатателю вылижу биос. Ещё. Есть драйверы для FAT32 от GRUB. Есть такая вещь,очень тяжело стартует FlashBack, люди подбирают флеш-стик. Может замена драйвера FAT от GRUB изменит ситуацию?
Насчёт FlashBack я погорячился, это работает МЕ, хаб. Всё до вектора старта биос. Ведь без CPU и плашек памяти. Это далее всё выполняется в кеще процессора, до инит памяти. Это PEI модули далее инит продолжают.
Здравствуйте! Очень благодарен вам за подробную и наглядную инструкцию! Спасибо! Сделал программатор под 9тиножечную SPI для прошивки BIOS на мат.плате MSI, но, к сожалению, ничего не получилось, перепаивал провода на более короткие и качественные, но и это не помогло, программа не видит чип: FFFF00FFh — parity error!. Как думаете, если я, всё же некачественно спаял провода, хотя это и маловероятно, но хоть как то программа должна же была определить чип? Или всё же мёртвая флешка? Так хотелось восстановить сложное тех.устройство своими руками, и ничего — 2 дня мучился и одно расстройство
Здравствуйте. Могу посоветовать что-то из этого: 1. попробовать более стабильный источник питания, поиграть с напряжением, если есть возможность. 2. подать напряжение на материнку (просто воткнуть разъемы питания чтобы дежурка пошла) — некоторым это помогает.
Здравствуйте! Не хочет определяться . Флеш выпаял с роутера запаял кроткие провода, игрался с питанием не помогло.Что еще можно попробовать? C:UsersHOME_7>C:SPIPGM/spipgmw /i SPI FlashROM Programmer 2.28 (C) 2008-2018 by Martin Rehak; rayer@seznam.cz Compiled by GCC 6.3.0 at 02:26:30, May 25 2018 (Win9x/NT/2K/XP compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: C00044h — parity error! unknown manufacturer, unknown chip Status = 00h (SRP, AAI, BP3, BP2, BP1, BP0, WEL, BSY) 0 0 0 0 0 0 0 0 C:UsersHOME_7>C:SPIPGM/spipgmw /u SPI FlashROM Programmer 2.28 (C) 2008-2018 by Martin Rehak; rayer@seznam.cz Compiled by GCC 6.3.0 at 02:26:30, May 25 2018 (Win9x/NT/2K/XP compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: C00044h — parity error! unknown manufacturer, unknown chip Status = 00h, WE bit is disabled, blocks protection is disabled ERROR: FlashROM is locked, cannot enable WE!
А что за память то? Есть ли она в списке поддерживаемых чипов (список в ридми)?
SPIPGMW.EXE – исполняемый файл для Win9x/NT/2k/XP/Vista/7 (только х32, поддержки х64 нет) Поддержка x64 есть, я ж на WIN10 x64 PRO запускал и шил, а вот драйвер, динамичиски подгружаемый, IOPERM.DLL, без цифровой подписи MS. Пути обхода этого в тему сейчас не входит. Об этом я с Мартином переписывался.
Поддержку x64 позже добавили. Ну и с драйвером придется повозиться на win 10 — перезагрузка через Восстановление с опцией «отключить проверку цифровой подписи драйверов».
Ой, только сейчас заметил от предыдущего камрада, версия та же, а дату гляньте. SPI FlashROM Programmer 2.28 (C) 2008-2018 by Martin Rehak; rayer@seznam.cz Compiled by GCC 8.1.0 at 11:48:02, Oct 6 2018 (Win9x/NT/64 compatability) ERROR: IOPERM device driver is not digitally signed, turn off the enforcement.
Проблема с питанием, длина проводов, поиграться с напряжением, ёмкости поставить по питанию, электролиты и керамику _вместе. JEDEC код уже неправильно считывается явно. Можно попробовать поиграться с задержками, /d=1, например.
Здравствуйте. Я успешно работал на 7Х32, но сейчвс сменил винду на 7Х64. Не могу запустить програму… Версию обновил, подскажите пойжалуста что еще нужно сделать чтобы заработало
Запускать от админа, разрешить установку неподписанных драйверов
Появилась версия 2.29 октябрьская.
Ага. Но пока оставлю старую проверенную. Кто знает в любом случае скачают с сайта автора.
Вчера на стареньком компе (материнская плата MSI Z77A-G43, память биоса W25Q64FV (64M-bit, 3V, припаяна), JSPI1 коннектор) поcле каких-то глюков испортилась прошивка биос. Возникло зацикливание включения-выключения без вывода на экран. Флэш рекавери не завёлся, хотя без ОЗУ звуковой сигнал был. SPIPGM хорошо сработал в варианте с куском экранированной витой пары длиной 40-45 см, с основным (дежурное питание 5V) и дополнительным (3.3V на JSPI1) блоками питания. В EEPROM, действительно, были участки с мусором. SPIPGM правильно стёр, записал и сверил записанное с первого раза без ошибок. Комп ожил. Спасибо автору программы и автору статьи.
Рад, что статья полезна.
Возможно, усталость флешки. Возможно, сбились ячейки NVAR, переменные. Я с таким не сталкивался, а вот CodeRush, барнаульский немец, сейчас в Купертино у Apple инженер по безопасности, умница, бился и вычислил этот усталый чип. Нужно иметь ввиду, это раньше все переменные хранились в чипе CMOS с батарейкой, сейчас всё на флешку пишется в отдельную область NVAR флешки, причём в двух экземплярах, якобы для восстановления.
Вот, блин, какой молодчага чех Мартин, софт в нашу эпоху CH341 всё равно работает. Кстати, купил в Минске за $5 чёрный CH341, китайцы его подправили электрически, можно шить регистр статуса. Доработка от автора COLIBRI Александра уже не нужна.
Собрал вчера под 1,8в на резистивном делителе от 5 вольт с молекса. Почему автор пересчитал питание на 1,8в с 3,3в так и не понял, тк наиболее удобные молекс и юсб выдают 5в. Логично было бы схемку для 1,8в сразу под запитку от 5в считать. Шить планировал — W25Q128FW с материнки на ам4, те новье. Пол дня не мог добиться определения и анлока в spipgmw.exe. Все как у камрадов выше. Ни укорачивание проводов, ни замена резисторов не дали результата. Думал уже, что дохлая микруха. Как самый последний вариант — создал чистую досовскую флешку, загрузился с неё и из под доса (конечно же, наскочив сперва на Load error: no DPMI — Get csdpmi*b.zip) все определилось и прошилось при тех же самых проводах и номиналах резисторов. В основном ради этого пишу, может кому поможет тк такой рекомендации нигде не встретил. Но, справедливости ради скажу, что ошибок при записи — как грязи. Те мат плата не ожила по причине слишком большого количества ошибок. Попробую на днях добавить диоды по схеме выше, может поможет. ПС. Был бы локально доступный китайский программатор — взял бы, а так приходится мудрить
Таки да, добавил диоды — запись чистая, без единой ошибки.
С программатором, конечно, проще. А вам спасибо за ваш вариант решения, может и правда кому-то пригодится.
Подскажите а где сам биос взять для прошивки?
С официального сайта производителя вашего устройство, естественно.
Таки заглядывайте к Мартину, он клепает новые версии. http://rayer.g6.cz/programm/programe.htm#SPIPGM
Спасибо, обновил. Но каких-то радикальных изменений там нет. А кому очень нужно — везде есть ссылки на сайт автора.
Не фига не шилось пока с матери не сдул, а так с первого раза и без ошибок
Бывает, наверное, и так )
Здравствуйте, у меня возник такой вопрос, подцепил флешку к LPT порту на WinXP всё вроде бы хорошо определилась но сначала было написано вот это до стирания и прошивки C:Documents and SettingsAdmin>spipgmw /i SPI FlashROM Programmer 2.1 (C) 2008-2012 by Martin Rehak; rayer@seznam.cz Compiled by GCC 4.6.2 at 02:07:49, Apr 19 2012 (Win9x/NT/2K/XP compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: EF4016h Winbond W25Q32BV (4MB) Status = 80h (SRP, AAI, BP3, BP2, BP1, BP0, WEL, BSY) 1 0 0 0 0 0 0 0 Status register is protected, you will need to set WP# high ============================================== C:Documents and SettingsAdmin>spipgmw /u SPI FlashROM Programmer 2.1 (C) 2008-2012 by Martin Rehak; rayer@seznam.cz Compiled by GCC 4.6.2 at 02:07:49, Apr 19 2012 (Win9x/NT/2K/XP compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: EF4016h Winbond W25Q32BV (4MB) Status = 82h, WE bit is enabled, blocks protection is disabled Unlocking… Status = 00h, FlashROM is unlocked now. ====================================================== Дамп сохраняет C:Documents and SettingsAdmin>spipgmw /d oldbios.bin SPI FlashROM Programmer 2.1 (C) 2008-2012 by Martin Rehak; rayer@seznam.cz Compiled by GCC 4.6.2 at 02:07:49, Apr 19 2012 (Win9x/NT/2K/XP compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: EF4016h Winbond W25Q32BV (4MB) Reading sector at: 003FF000h (100%) ===================================================== А вот при выборе режима стирания ни чего не происходит C:Documents and SettingsAdmin>spipgmw /e SPI FlashROM Programmer 2.1 (C) 2008-2012 by Martin Rehak; rayer@seznam.cz Compiled by GCC 4.6.2 at 02:07:49, Apr 19 2012 (Win9x/NT/2K/XP compatability) ==================================================== После заливки прошивки C:Documents and SettingsAdmin>spipgmw /i SPI FlashROM Programmer 2.1 (C) 2008-2012 by Martin Rehak; rayer@seznam.cz Compiled by GCC 4.6.2 at 02:07:49, Apr 19 2012 (Win9x/NT/2K/XP compatability) SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us FlashROM JEDEC ID, type: EF4016h Winbond W25Q32BV (4MB) Status = 00h (SRP, AAI, BP3, BP2, BP1, BP0, WEL, BSY) 0 0 0 0 0 0 0 0 Все нули это нормально и что означает единица? и почему статус стирания не отображается, а также перед стиранием слил дамп создал контрольную сумму как с оригинала так и с дампа они получились разные и не совпадают но зато размер прошивки и дампа один в один это нормально или всё таки в дампе есть ошибки точнее в самой памяти.
Размер всегда будет 1 в 1. А вот контрольные суммы зависят от версии прошивки, от ее начинки. Я так полагаю, что вы не ту же самую прошивку прошиваете. Возможно поэтому и контрольные суммы разные. Да, все нули это нормально. Это статусы регистров. В самом начале стоит 1, потому что активна защита от записи, которую вы снимаете командой. Почему после стирания никакой информации — это странно. Должно было выдать, что проходит стирание,….завершено. Возможно связано со статусом защиты от записи. Его надо снимать перед операциями записи, а не перед чтением дампа.
Не мучаемся. Кидаем плюсовую соплю на таблетку, прямо на плате, плюс все равно сверху, минус разведен по всей мамке. Успешно получаем разрешение WP#. Та же плата, шью. на 96 скорость упала, но процесс идет. Удачи, больше не появлюсь.
Приветствую. Скажите, как критичен номинал резисторов? Были на 220 ом. Запаял на резъем 25-штырьковый от com-порта (раньше были такие широкие). Чип 25Q80DVSIG впаян в МП. Разъем JSPI есть, к третьей ноге проводок подпаял. Питание пробовал как внешнее так и дежурное. WinXP, консоль, пробовал на паре компьютеров. Идентификации нет, ничего не видит С буквой D в описании не нашел, но W25q80 там есть.
Можно вообще без резисторов. Скорее всего проблема не в резисторах.
Источник
На чтение 7 мин Просмотров 2к. Обновлено 15.12.2022
Не столь давно приключилась со мной одна неприятность. Нужно было обновить 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.32, 129 КБ, Скачан 19015)
Проект, кстати, развивается и по сей день, автор частенько выкладывает обновленные версии программы с информацией о новых чипах, доработками и исправлениями.
В архиве следующие файлы:
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 /<команда> [имя файла] [адрес] [размер] [/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 разъем, либо напрямую, любой поддерживаемой микросхемы.