Воскрешаем Gigabyte GA-965P-DQ6
11.02.2012
Категория : Мастерская

Мануал по прошивке микросхемы БИОСа с выпайкой из материнки

Коротко

Материнская плата - Gigabyte GA-965P-DQ6. Слетели оба БИОСа при перепрошивке на новую версию. Единственный вариант - выпаивать флеш-память и шить самопальным LPT-программатором (или любым SPI).

Длинно

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

Как выяснилось чуть позже - БИОС рухнул во время прошивки на свежую версию. Машина ребутнулась и привет. Странно, что слетело сразу с обеих флех. Одним словом - гигабайт.

И так, что имеем (симптомы):

1. При включении пускается и останавливается кулер проца.

2. По остановке кулера, врубается кулер БП и дует буквально пару секунд.

3. Запускается кулер проца на низких оборотах и так же крутится пару секунд.

4. Все останавливается. Тишина.

5. Еще через 2 секунды цикл повторяется вновь.

Вот так ведет себя мать без БИОСа (со слетевшим)

Наличие периферии тут не причем. Все то же самое можно наблюдать как на полностью снаряженной машине, так и на комплекте мать+камень+бп (без памяти, видюх и т.д.).

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

Пациент на хирургическом столе
Пациент на хирургическом столе
BP_BIOS и MAIN_BIOS - бэкап и основной соответственно
BP_BIOS и MAIN_BIOS - бэкап и основной соответственно
Вот они, 2 брата-акробата в SOIC-8 корпусах
Вот они, 2 брата-акробата в SOIC-8 корпусах

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

Вообще, широким жалом самое милое дело отпаивать подобные микрухи. У меня на все про все ушло около 2-3 секунд времени. Сказка.

Подготовленное к демонтажу жало
Подготовленное к демонтажу жало
MAIN_BIOS демонтирован. Бэкап остался нетронутым.
MAIN_BIOS демонтирован. Бэкап остался нетронутым.
Баг, он и в Африке БАГ !
Баг, он и в Африке БАГ !

Честь и хвала тем людям, которые пишут софт для самопальных программаторов. Вот на этом сайте rayer.ic.cz, товарищ сварганил программатор всего из 4 деталей и главное - написал к нему прошивальщик ! Не смотря на всю простоту конструкции, перечень поддерживаемых флешек внушает (и постоянно пополняется кстати):

SPI FlashROMs supported (new are marked with *)
***********************************************

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)
*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)
EN25F10 (128kB)
EN25F20 (256kB)
EN25F40 (512kB)
EN25F80 (1MB) - tested OK
EN25F16 (2MB)
EN25F32 (4MB)
EN25F64 (8MB)
EN25F128 (16MB)

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

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

Macronix:
*MX25L512E (64kB)
MX25L1005/1006E (128kB)
MX25L2005/2006E (256kB)
MX25L4005/4006E (512kB)
MX25L8005/8006E (1MB) - tested OK
MX25L1605/1606E (2MB) - tested OK
MX25L3205/3206E (4MB)
MX25L6405/6406E (8MB)
*MX25L12835E/12836E (16MB)
*MX25L25635E/25735E/25835E (32MB)

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

Spansion:
S25FL004A (512kB)
S25FL008A (1MB)
S25FL016A (2MB)
S25FL032A (4MB)
S25FL064A (8MB)
S25FL128P/129P (16MB)
*S25FL256S (32MB)
*S25FL512S (64MB)
*S25FL01GS (128MB)

ST Microelectronic/Numonyx:
*M25P05 (64kB)
M25P10 (128kB)
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)
*SST25VF020(B) (256kB)
*SST25VF040(B) (512kB)
*SST25VF080(B) (1MB) - tested OK
*SST25VF016(B) (2MB)
*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)
W25Q64BV (8MB)
W25Q128BV (16MB)
*W25Q256FV (32MB)
W25X10 (128kB)
W25X20 (256kB)
W25X40 (512kB)
W25X80 (1MB) - tested OK
W25X16 (2MB)
W25X32 (4MB) - tested OK
W25X64 (8MB)

В принципе, обойтись можно и без сопротивлений, напрямую припаявшись к микрухе. Запитать прошиваемую флешку можно хоть от USB, поставив соответствующего номинала сопротивление. Я же использовал батарейку с ремонтируемой мамки, благо SST25VF080B (флеш-память) работает от 2.7 до 3.6 вольт по даташиту.

Кстати, прежде чем варганить программатор, сверьтесь с распиновкой вашей флешки.

У выше названной пины выглядят так:

1. CE#

2. SO

3. WP#

4. Vss (-)

5. SI

6. SCK

7. HOLD#

8. Vdd (+)

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

По программатору вроде все.

Примитивный набросок схемы
Примитивный набросок схемы
Программатор с припаянной флешкой. В изоленте - батарейка 3в (CR2032)
Программатор с припаянной флешкой. В изоленте - батарейка 3в (CR2032)
Флешка к верху пузом
Флешка к верху пузом
Шитье

Прошивальщик качаем у автора. Если вдруг файл не доступен, то слить можно у меня, но только помните, что у меня версия не обновляется !

Я не стал экспериментировать с программированием флешки под Win7 x64 Ult, а запустил все это дело под самой обычной Win XP SP3. Все завелось с первого раза без глюков и проблем.

Теперь по поводу самого процесса. Тут схема такая:

- идентифицируем микруху (чтобы быть уверенными, что все "ок" и она правильно распозналась)

- разлочиваем на записать

- стираем

- прошиваем

Команды, необходимые при работе с прошивальщиком:

spipgmw.exe /i

Запрос на идентификацию флеш-памяти. Основное, что интересует - совпадение модели микросхемы с реальностью.

spipgmw.exe /u

Разблокировка флешки для последующей записи.

spipgmw.exe /e

Очистка содержимого флеш-памяти.

spipgmw.exe /p файл_прошивки

Прошивка флешки из файла БИОСа (надеюсь ясно, что сливать его надо с сайта производителя материнки ?)

Поскольку мной двигало любопытство, я решил, прежде чем стереть флешку, посмотреть, что же там в ней содержится. Поэтому вначале сделал дамп (spipgmw.exe /d файл_дампа). Содержимое оказалось простым - первые 65535 байт FF, далее 00 до самого конца. Занятно.

Вообще настоятельно рекомендую, после того, как прошьете микруху, сделайте дамп и сравните с эталонной прошивкой (например, программой MD5 File Checker). Если изменений нет - смело впаиваем назад в мать, а вот если изменения есть, тут уже явно проблемы. Во-первых, флеш может быть тупо битой. От времени, от условий эксплуатации (влажность, температура, мех.нагрузки... все что угодно). Во-вторых, возможно имеет место быть плохой контакт микросхемы с программатором. На этот счет обычно вываливаются ошибки еще во время прошивки, но кто его знает, может все по-тихому шьется. В-третьих - помехи при прошивке, длинный провод программатора и т.п. В общем, вариантов может быть масса. Это первые пришедшие в голову.

Что ж, поехали...

Запрос идентификации флеш-памяти. Все определилось правильно.
Запрос идентификации флеш-памяти. Все определилось правильно.
Дамп памяти с микросхемы. Так, ради любопытства, не более.
Дамп памяти с микросхемы. Так, ради любопытства, не более.
Разлочка микрухи для последующей прошивки
Разлочка микрухи для последующей прошивки
Очистка
Очистка
Прошивка. 965PDQ6.F13 - это файл прошивки.
Прошивка. 965PDQ6.F13 - это файл прошивки.
Дамп после прошивки для последующей проверки. Мало ли что там записалось.
Дамп после прошивки для последующей проверки. Мало ли что там записалось.

После удачной прошивки, выуживаем микру из программатора и аккуратно впаиваем назад в мамку. Тут уже лучше паять тонким жалом. У меня вариантов было 2: паять тем, что есть и не паять.

Впаянная назад флешка
Впаянная назад флешка

Если все "ок", то после включения, на экране появится графическая заставка, которая через несколько мгновений сменится табличкой с просьбой не отключать комп, потому что идет сохранение копии БИОСа в резервную флеш-память. Затем машина перезагрузится и скажет, что с настройками БИОСа дела плохи и предложит загрузить дефолтные значения. Загружаем. Все ! Осталось настроить БИОС под свои нужды...

Вуаля ! Особенно доставляет
Вуаля ! Особенно доставляет "Quad BIOS". Ага !
Все
Все "ок". Версия БИОСа F13.
За сим разрешите откланяться
За сим разрешите откланяться

Спасибо за внимание.

Еще никто не оставил комментария
    Добавить комментарий