Письмоносец
АрхивMatrox, BIOS, Flash!
|
От редакции: Здраствуйте, уважаемый А.С.! Евгений передал мне Ваше письмо, разведя руками - "Ну что тут можно сказать...". Первой идеей было связаться с Вами, взять видеокарту, отпаять Flash, записать программатором и вернуть все на место. После этого я посмотрел на адрес, и пошел искать географическую карту. Результат поисков поставил меня в полный тупик, все-таки размеры этой страны недооценивать нельзя. Мало того, еще и электронной почты нет... Желание писать ответ на письмо сразу пропало - а что писать-то? "Работает - не трогай", или посочувствовать и посоветовать купить новую видеокарту? Письмо я, однако, взял, пообещав ответ-таки написать, что стоило мне очередной бессонной ночи. Но обо всем по порядку.
Дома я установил в свой компьютер аналогичный Matrox Mystique (благо есть под рукой), нашел на сайте Matrox последнюю версию BIOS, программу progbios.exe и начал разбираться. Некоторый успешный опыт по программированию Flash-памяти в материнских платах и других устройствах позволил предположить, что BIOS должен программироваться без снятия микросхемы с платы независимо от того, что там записано, и записано ли вообще. На материнских платах подобная проблема обычно решается с помощью hot-swap (про это как-нибудь отдельно), но когда микросхема впаяна на плату, да еще в PQFP-корпусе, да еще на расстоянии в две тысячи километров от меня - этот метод несколько не годится.
Пришлось вспоминать старые "хакерские" навыки. После беглого рассмотрения программы progbios.exe под отладчиком, я обнаружил, что у нее есть довольно много не описанных в документации ключей. Полностью разбираться в них по реассемблированному тексту - работа не на один месяц, но я выписал для себя несколько наиболее "подозрительных" и начал с них. Выяснилось, что параметры конкретной платы (те самые "Pins" - номер, версия, дата программирования и т.п.) хранятся в той же 32-х килобайтной области, что и BIOS, и читаются командой "progbios.exe -d". Прежде чем приступить к программированию, progbios.exe производит чтение Flash, а содержимое должно записываться в файл emergenc.bin (или другой, заданный ключом "-e <file.ext>"). При успешном завершении программы этот файл удаляется.
Дальнейшие поиски потребовали моделирования ситуации, и, после некоторого раздумья, я приступил к умышленной порче собственного имущества. Сделать это удалось даже легче, чем я предполагал, достаточно было просто нажать Ctrl-C в момент программирования (чем же там программисты думали, если не запретили прерывания на момент записи?!?), после чего я получил ситуацию, абсолютно аналогичную Вашей. Искомый файл emergenc.bin действительно обнаружился на диске, он, как и следовало ожидать, оказался копией старого содержимого Flash-памяти. Это абсолютно убедило меня в возможности восстановления, и дальнейшее было уже делом техники. Ну и, наконец, вот она, та самая команда, которая позволяет восстановить содержимое Flash-памяти для карт Mystique, Millennium и Millennium-II:
progbios.exe -i emergenc.bin -k
При отсутствии файла emergenc.bin можно воспользоваться и новой прошивкой от данной модели карты (у меня это файл 858-6.bin).
Очевидно, подобный способ применим и в том случае, если видеокарта не работает, но компьютер грузится. Я не проверял это, но идея довольно проста: нужно просто подготовить загрузочную дискету с соответствующим файлом autoexec.bat, записать туда progbios.exe, emergenc.bin и выполнить загрузку.
Кстати, попутно выяснилось, что в ту же микросхему Flash и той же программой можно записать OEM-логотип, который должен появляться при старте, но как это делать я не разбирался.
В процессе этих экспериментов мне пришлось перепрограммировать свою плату не менее десяти раз - но, во-первых, теперь я нисколько не опасаюсь это делать, а во-вторых, ведь на то она и Flash.
Сергей ЛеоновС праздником!
|
Письма читали Сергей Леонов и Георгий Башилов