Как сделать программатор для прошивки микросхемы BIOS

Давно уже достал вопрос:

-"А как я прошью BIOS,если на экране ничего нет?"...

Ответ:

-"На програматоре."

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

Собственно понадобилось:

LPT шнур.

Четыре резистора по 100 Ом.

Один конденсатор 1uF.

Кроватка для батарейки.

Я ещё сделал клипсу для SOIC-8,но это я уже заморочился...сделана из обычного PCI порта снятого с не рабочей материнской платы,

шаг там как раз совпадает с шагом флешки BIOS.

В моём LPT шнуре провода были припаяны не так как мне надо,поэтому я перепаял их в соответствии с распиновкой указанной на рисунке 1,далее я припаял четыре резистора по 100 Ом на соответствующих проводах и поставил конденсатор между землёй и питанием с батарейки.Я завёл всё это дело в своеобразный кожух как видно первом фото,но Вы можете не заморичиваться.Ну и припаял провода к клипсе SOIC-8,в соответствии с распиновкой флешки BIOS.

Так же я сделал вариант этого же програматора с питанием от USB,Вы можете это видеть на фото 2.Как известно питание на USB +5V,но нам надо +3.3V,как быть?Опять же всё просто,за счёт резистивного делителя получаем нужное напряжение,на рисунке 2 я нарисовал USB разъём и его подключение к схеме.На питание +5V ставим резистор на 6.8 кОм,на землю ставим резистор 15 кОм,вторые выводы резисторов соединяем между собой и получаем между ними деление напряжения,у меня правда 3.4V получилось,но это вполне нормально для корректной работы.Так же важный момент заключается в том чтобы обязательно подключить землю от USB к земле в схеме как указано на рисунке 2.

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

В итоге если схема собрана полностью правильно,то он работает сразу.

Остаётся припаять флешку BIOS в соответствии с распиновкой и можно запускать прошивальщик SPIPGM.

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

САМЫЙ ВАЖНЫЙ МОМЕНТ!
ДЛИНА ПРОВОДОВ НЕ ДОЛЖНА ПРЕВЫШАТЬ 5-6 СМ!

Как что делать:

Распаковываем прикреплённый архив в C:\Documents and Settings\(Ваша учётная запись)в моём случае KOL.

C:\Documents and Settings\KOL

Заходим в диспетчер устройств,вызываем свойства LPT порта,там есть вкладка"Параметры порта",переходим в неё и там выбираем "Использовать

любое прерывание,назначенное порту"->Ok.

Подключаем програматор к LPT порту,вызываем командную строку(Пуск->Выполнить->cmd->ENTER)откроется командная строка,

***Заметка***

Новая прошивка закидывается туда же где лежит программа прошивальщик.

***

далее набираем команды:

spipgmw /i,жмём Enter,флешка определилась.

spipgmw /u,жмём Enter,флешка разблокировалась.

spipgmw /d oldbios.bin,жмём Enter,сохранение старого дампа.

spipgmw /е,жмём Enter,флешка стирается.

spipgmw /p newbios.bin,жмём Enter,запись на флешку рабочего дампа(прошивки).

Далее на скриншотах можете видеть эти команды в действии.

Поддерживаемые типы флеш-памяти

AMIC:
A25L05PU/PT (64kB)
A25L10PU/PT (128kB)
A25L20PU/PT (256kB)
A25L40PU/PT (512kB)
A25L80PU/PT (1MB)
A25L16PU/PT (2MB)
A25L32PU/PT (4MB)
A25L64PU/PT (8MB)
A25L512 (64kB)
A25L010 (128kB)
A25L020 (256kB)
A25L040 (512kB)
A25L080 (1MB) - tested OK

Atmel:
AT25F512B (64kB)
AT25F1024A (128kB) - this chip may be supported but a tester is needed
AT25DF021 (256kB)
AT26DF041 (512kB)
AT25DF041A (512kB)
AT26F004 (512kB) - tested OK
AT26DF081 (1MB)
AT25/26DF081A (1MB)
AT25DF081 (1MB)
AT26DF161 (1MB)
AT26DF161A (2MB)
AT25DF161 (2MB)
AT25DQ161 (2MB)
AT25/26DF321 (4MB)
AT25DF321A (4MB)
AT25DQ321A (4MB)
AT25DF641(A) (8MB)

EON:
EN25B10 (128kB)
EN25B20 (256kB)
EN25B40(T) (512kB)
EN25B80 (1MB)
EN25B16 (2MB)
EN25P32 (4MB)
EN25P64 (8MB)
EN25P128 (16MB)
EN25Q40 (512kB)
EN25Q80 (1MB)
EN25Q16 (2MB)
EN25Q32 (4MB)
EN25Q64 (8MB)
EN25Q128 (16MB)
EN25F10 (128kB)
EN25F20 (256kB)
EN25F40 (512kB)
EN25F80 (1MB) - tested OK
EN25F16 (2MB)
EN25F32 (4MB)
EN25F64 (8MB)
EN25F128 (16MB)
EN25T10 (128kB)
EN25T20 (256kB)
EN25T40 (512kB)
EN25T80 (1MB)
EN25T16 (2MB)
EN25T32 (4MB)
EN25T64 (8MB)
EN25QH16 (2MB)
EN25QH32 (4MB) - tested OK
EN25QH64 (8MB)
EN25QH128 (16MB)
EN25QH256 (32MB)

ESMT:
F25L004A (512kB) - tested OK
F25L008A/08PA (1MB)
F25L016A/16PA (2MB)
F25L32PA (4MB)
F25L64PA (8MB)
F25S04PA (512kB)
F25L08PA (1MB)
F25L16QA (2MB)
F25L32QA (4MB)
F25L64QA (8MB)

GigaDevice:
GD25Q512 (64kB)
GD25Q10 (128kB)
GD25Q20 (256kB)
GD25Q40 (512kB)
GD25Q80 (1MB)
GD25Q16 (2MB) - tested OK
GD25Q32 (4MB) - tested OK
GD25Q64 (8MB)

Intel:
QB25F016S33B8 (2MB)
QB25F032S33B8 (4MB)
QB25F064S33B8 (8MB)

Macronix:
MX25L512E/25V512 (64kB)
MX25L5121E (64kB)
MX25U5121E (64kB)
MX25L1005/1006/1025/1026E/25V1006E (128kB) - tested OK
MX25L1021E (128kB)
MX25U1001E (128kB)
MX25L2005/2006/2025/2026E/25V2006 (256kB)
MX25U2033E (256kB)
MX25L4005/4006/4025/4026/25V4005/4006E (512kB)
MX25U4033/4035/25V4033/4035 (512kB)
MX25L8005/8006/8008/8035/8036/8073/8075E (1MB) - tested OK
MX25U8033/8035E (1MB)
MX25V8035 (1MB)
MX25L1605/1606/1608E (2MB) - tested OK
MX25L1633/1635/1636/1673/1675E (2MB)
MX25L1635/1636E (2MB)
MX25U1635 (2MB)
MX25L3205/3206/3208/3233/3235/3273/3275E (4MB)
MX25U3235/25L3239E (4MB)
MX25L3225/3236/3237D (4MB)
MX25L6405/6406/6408/6435/6436/6445/6465/6473/6475E (8MB) - tested OK
MX25U6435/25L6439E (8MB) - tested OK
MX25L12835/12836/12839/12845/12865/12873/12875F (16MB) - tested OK
MX25U12835F (16MB)
MX25L25635/25639/25735/25835E (32MB)
MX25U25635F (32MB)
MX66L51235F/51245G (64MB)
MX66U51235F (64MB)
MX66L1G45G (128MB)

PMC:
Pm25LD512 (64kB) - tested OK
Pm25LD010 (128kB) - tested OK
Pm25LD020 (256kB)
Pm25LV512(A) (64kB) - tested OK
Pm25LV010(AB) (128kB) - tested OK
Pm25LV020 (256kB)
Pm25LV040 (512kB) - tested OK
Pm25LV080B (1MB)
Pm25LV016B (2MB)
Pm25LV032B (4MB)
Pm25LV064B (8MB)
*Pm25LQ032C (4MB)

Spansion:
S25FL001A (128kB)
S25FL002A (256kB)
S25FL004A (512kB)
S25FL008A (1MB)
S25FL016A (2MB)
S25FL032A/P (4MB) - tested OK
S25FL064A/P (8MB)
S25FL128P/S/129P/S (16MB) - tested OK
S25FL256S (32MB)
S25FL512S (64MB)
S25FL01GS (128MB)

ST Microelectronic/Numonyx:
M25P05 (64kB)
M25P10 (128kB)
M25P10AV (128kB) - tested OK
M25P20 (256kB)
M25P40 (512kB)
M25P80 (1MB)
M25P16 (2MB)
M25P32 (4MB) - tested OK
M25P64 (8MB)
M25P128 (16MB)
M45PE10 (128kB)
M45PE20 (256kB)
M45PE40 (512kB)
M45PE80 (1MB)
M45PE16 (2MB)
M25PX80 (1MB)
M25PX16 (2MB)
M25PX32 (4MB)
M25PX64 (8MB)
N25Q032A13E (4MB)
N25Q032A11E (4MB)
N25Q064A13E (8MB)
N25Q064A11E (8MB)
N25Q128A13E (16MB)
N25Q128A11E (16MB)
N25Q256A13E (32MB)
N25Q256A11E (32MB)
N25Q512A13G (64MB)
N25Q512A11G (64MB)
N25Q00AA13GB (128MB)

SST:
SST25VF512(B) (64kB) - tested OK
SST25VF010(B) (128kB) - tested OK
SST25VF020(B) (256kB)
SST25VF040(B) (512kB)
SST25VF080(B) (1MB) - tested OK
SST25VF016(B) (2MB) - tested OK
SST25VF032(B) (4MB)
SST25VF064C (8MB)
SST25VF128(B) (16MB)
SST26VF016 (2MB)
SST26VF032 (4MB)
SST26VF064 (8MB)

Winbond:
W25Q10B (128kB)
W25Q20BV (256kB)
W25Q40BV (512kB)
W25Q80BV (1MB) - tested OK
W25Q16BV (2MB) - tested OK
W25Q32BV (4MB) - tested OK
W25Q64BV/FV (8MB) - tested OK
W25Q128BV/FV (16MB)
W25Q256FV (32MB)
W25Q16FW 1,8V (2MB)
W25Q32FW 1,8V (4MB)
W25Q64FW 1,8V (8MB)
W25Q128FW 1,8V (16MB)
W25X10 (128kB)
W25X20 (256kB)
W25X40 (512kB)
W25X80 (1MB) - tested OK
W25X16 (2MB)
W25X32 (4MB) - tested OK
W25X64

P.S. Я не создатель данного софта и идея данного програматора не моя.Я просто на практическом примере показал и рассказал,что данный способ програмирования флешек работает и в самой конструкции нет ничего сложного.

Прошивальщик