Как и зачем перепрошивать BIOS?

                   1. Необходимый ликбез.

       Прежде чем рассказывать о перепрошивке (обновлении) BIOS, необходимо уточнить - что же такое BIOS и чем он отличается от CMOS SETUP.

      BIOS - basic in/out system, базовая система ввода/вывода. Это набор подпрограмм и утилит, позволяющих операционной системе и другим программам использовать ресурсы оборудования. BIOS также содержит процедуру POST (power-on self test - программа самотестирования оборудования, которая запускается автоматически при включении и перезагрузке компьютера) и процедуру SETUP - программа настройки параметров компьютера, сведения о которых находятся в энергонезависимой памяти CMOS. На самом деле эта память энергозависима и для ее питания используется литиевая батарейка на материнской плате. Энергонезависимая память представляет набор регистров объемом несколько десятков байт, в которых в условном коде хранятся сведения о дисководах, жестких дисках и прочих параметрах. Также от этой батарейки запитаны системные часы. Если батарейка садится, то эти сведения пропадают, и компьютер в общем случае загрузиться не сможет, так как не знает параметров жесткого диска. При этом также обнуляется время в системных часах. В таком случае говорят - "слетел SETUP". Для того, чтобы восстановить его содержимое, надо войти в процедуру SETUP в процессе прохождения процедуры POST. Для этого обычно в нижней части экрана появляется надпись "Hit Del to enter Setup" (нажмите Del для входа в SETUP). Иногда говорят "BIOS SETUP", а чаще просто - "зайти в BIOS". Но заходят-то в BIOS SETUP, то есть в одну из процедур, код которой содержится в BIOS.

      Из этого набора банальностей следует несколько выводов -

      1) CMOS SETUP - это энергонезависимая память, представляющая из себя набор регистров объемом несколько десятков байт, в которых закодирована информация о параметрах жестких дисков, наличии дисководов и пр. Физически эта энергонезависимая память находится в одной из микросхем на материнской плате.

      2) BIOS SETUP - одна из процедур, код которой находится в BIOS. Эта процедура позволяет менять содержимое CMOS SETUP.

      3) BIOS - набор подпрограмм и процедур, которые тестируют компьютер при включении, обеспечивают загрузку операционной системы и в дальнейшем обеспечивают взаимодействие операционной системы и других программ с оборудованием. Физически код BIOS находится в ПЗУ, расположенной на материнской плате. Как правило, ПЗУ не запаяно наглухо, а находится в разъеме ("кроватке") и на нем наклеена красивая голографическая наклейка. На сегодняшний день для хранения BIOS в основном используются микросхемы DIP-32 (прямоугольная пластмассовая микросхема с 32 выводами по длинным сторонам) или PLCC-32 (небольшая квадратная микросхема с 32 выводами по периметру).

             2. Откуда берутся прошивки BIOS и зачем они нужны?

       В старые добрые времена никому не приходило в голову обновлять BIOS в процессе эксплуатации. Всех вполне устраивало то, что было записано в ПЗУ при изготовлении материнской платы. Кроме того, для хранения BIOS в те времена использовали перепрограммируемые ПЗУ с ультрафиолетовым стиранием, а ее в полевых условиях не очень-то поперепрошиваешь.

      Сам исходный код BIOS сочиняют всего несколько фирм в мире - AMI, AWARD, Phoenix. Конечно, они не могут предусмотреть особенности всех материнских плат, поэтому они поставляют фирмам-производителям основу кода BIOS, а те уже добавляют в него части кода, учитывающие особенности данной модели.

      К середине 90-х годов появились FLASH-ПЗУ - перезаписываемые ПЗУ с электрическим стиранием, выдерживающие более 1000 циклов перезаписи. Они и используются для хранения BIOS в настоящее время. Объем их бывает 1М Бит и 2М Бит в корпусах DIP-32 и 2М Байт в корпусах PLCC-32. Следовательно, если содержимое ПЗУ записать в обычный файл, то оно займет 128К Байт (131072 Байт) или 256К Байт (262144 Байт).

      Уже в материнских платах для первых Pentium была предусмотрена возможность перепрошивки (обновления, update) BIOS. Потребность в обновлении BIOS стала возникать с появлением новых моделей процессоров, увеличении объемов жестких дисков, исправлении каких-то нюансов в ранее существующих версиях. В настоящее время рекомендация "обновить версию BIOS" стала чуть не стандартной панацей от всех проблем. Если почитать комментарии к новым версиям BIOS на страницах производителей материнских плат, то просто удивляешься, как это все еще до сих пор работает. Приводится масса проблем, которые решены в новых версиях BIOS - поддержка новых процессоров, поддержка жестких дисков большего размера, корректная работа USB-портов, правильное опознавание процессоров с частотой 667 МГц (для американца надпись на экране 666MHz - происки нечистой силы), корректная работа с SB Live! и пр.

      В результате многие "умельцы" норовят обновить версию BIOS при каждом глюке. Это, конечно же, полная глупость и шарлатанство. Если машина запустилась и корректно определила процессор, HDD  и прочее оборудование, то глюки происходят, как правило, из-за особенностей оборудования (в первую очередь ОЗУ) или из-за несовместимости (в первую очередь видеокарты и материнской платы). Конечно, от обновления BIOS хуже не станет (если прошивка именно от этой модели материнской платы), но проблемы оборудования не исчезнут.

      На основании собственного опыта считаю, что есть только две причины обновлять версию BIOS:

1) если материнская плата не поддерживает новые процессоры. Например, материнские платы на чипсете LX или BX с версиями BIOS до примерно мая 1998 года не поддерживают кэшовые Celeron. Например, в материнской плате ASUS P2L97 стоял P-II-233, надо поставить Celeron-533 (естественно, в переходнике Socket-370 - Slot-1). Если сразу воткнуть новый процессор, то он опознается примерно как "-MMX at 500MHz" и дальше загрузка не пойдет. Тогда надо на странице ASUS найти новую прошивку именно для этой материнки, которая обеспечивает поддержку нового Celeron (Mendochino, Cel-300A) и обновить BIOS. Как - объясню позднее.

2) Если материнская плата не поддерживает жесткие диски большего размера. Есть два предела - 8.4Г Байт и 32Г Байт. В первом случае любой диск больше 8.4Г (например, 20Г) детектится как 8.4Г, во втором - диск больше 32Г детектится как 32Г. Соответственно, надо искать прошивку для данной модели мат.платы, где решена эта проблема.

      Следует предупредить, что обновление версии BIOS не обладает магическим действием. На мат.плате не вырастает разъем AGP, плата на i815 не начинает поддерживать Athlon, плата на LX не будет поддерживать P-III (во-первых, не выдаст нужного напряжения для питания процессора, во-вторых, не выдаст частоту 100 или 133 МГц).

             3. Как перепрошить (обновить) BIOS?

       Возможности для обновления BIOS существуют у всех современных материнских плат. Ничего перепаивать не надо. Но есть средства, запрещающие перепрошивку BIOS. Сделано это для того, чтобы не испортить содержимое BIOS по ошибке, а также чтобы BIOS не стерся от воздействия вируса (об этом позже). Для предотвращения случайного стирания BIOS на материнских платах (не всегда) сделан джампер "BIOS Update", который может быть в положениях "Enable" и "Disable" (по умолчанию обычно "Disable"). Чтобы иметь возможность перепрошить BIOS, надо поставить этот джампер в положение "Enable". В современных платах в SETUP есть пункт "BIOS Protect" с вариантами "Enable" и "Disable". Чтобы иметь возможность перепрошить BIOS, надо поставить "Disable" (защита BIOS снята).

      Для перепрошивки BIOS используются программы AWDFLASH (для перепрошивки BIOS фирмы AWARD) и AMIFLASH (соответственно фирмы AMI). В редких случаях перепрошить BIOS можно только утилитой фирмы-производителя материнской платы, например, для материнских плат фирмы ASUSTEK подходят только фирменные утилиты PFLASH и AFLASH, хотя используется BIOS от AWARD. Перепрошивка BIOS для брендов типа HP, Compaq, DELL - отдельная история. Так как наиболее распространены BIOS от AWARD, расскажу об утилите AWDFLASH. Собственно, AMIFLASH отличается только более красивым интерфейсом, а принцип тот же.

             4. Утилита AWDFLASH.

       Утилита AWDFLASH позволяет сохранять в файл содержимое ПЗУ BIOS и записывать в ПЗУ содержимое файла. Делать это можно в интерактивном режиме или в командной строке. Принципиальное требование - не должны быть загружены программы, управляющие верхней памятью - HIMEM.SYS, EMM386.EXE, QEMM. В случае DOS соответствующие строчки в CONFIG.SYS надо закомментировать, в случае WIN 95/98 - загрузиться в режиме "Safe mode command prompt only".

             4.1. Считывание (сохранение) BIOS с работающей материнской платы.

       Эта операция нужна, если вы захотите после обновления BIOS по тем или иным причинам вернуться к предыдущей версии. Или же списать BIOS с одной машины, чтобы потом обновить его в другой. Или же просто надо сохранить файл с прошивкой BIOS на случай его порчи, например, от вируса. Для сохранения содержимого BIOS в файл надо запустить AWDFLASH, на вопрос "File name to program" (название файла с информацией для программирования), ничего не набирая, нажать Enter, после чего на вопрос "Do you want to save BIOS?" сказать "Y" и ввести имя файла, в который будет сохраняться BIOS с данной материнской платы. Файл сохранится в текущую директорию. Имя файла и расширение - произвольное. В момент создания файла снизу пробежит индикатор процесса, если пробежит одна строчка - объем BIOS 1М Бит, а объем получившегося файла 131072 Байт, если две - то объем BIOS 2М Бит, а объем получившегося файла 262144 Байт. Если все встанет и снизу замигает надпись "Please, Wait", значит, данная версия AWDFASH не может работать с этим ПЗУ, например, версия AWDFLASH 7.01, а ПЗУ 2М Бит. Чтобы решить эту проблему, надо взять более новую версию AWDFLASH.

            4.2. Запись (обновление) BIOS на работающей материнской плате.

      Это стандартный режим обновления версии BIOS. Правда, если причина обновления BIOS в том, что старый BIOS не поддерживает новый процессор, то эту операцию надо делать, загрузившись на старом процессоре (на новом не загрузится или загрузится криво). Для обновления версии BIOS надо иметь файл прошивки новой версии BIOS именно от данной модели мат.платы, файл должен быть в той же директории, что и AWDFLASH, в интерактиве путь задать нельзя. Запустив AWDFLASH, надо обратить внимание на то, что опознался тип ПЗУ. В верхней части окошка будет написана строка информации о существующем BIOSе и дата его создания, и вторая строка - информация о типе ПЗУ. Если там написано "UNKNOWN TYPE" (неизвестный тип), то это означает, что AWDFLASH не знает данного типа ПЗУ и прошить его не сможет. ПЗУ разных фирм имеют разную структуру и при их записи используется разный алгоритм. С точки зрения чтения это безразлично, а с точки зрения записи - очень критично.

      Если AWDFLASH успешно опознал ПЗУ и написал про него типа "ATMEL 29C010", то все нормально, и в строке "File name to program" надо ввести имя файла прошивки. AWDFLASH спросит, хотите ли вы сохранить содержимое существующего BIOS. Чтобы пропустить, не надо вводить имя файла для сохранения, а просто нажать Enter. Потоп программа спросит "A you sure?" (вы уверены?), на это надо сказать "Y". После этого начнется запись, снизу пойдет индикатор процесса, все это займет несколько секунд. Снизу при этом будет предупреждение "Do not turn off power" (не выключайте питание). Если питание выключить, то BIOS прошьется не до конца и работать не будет, то есть мат.плата при включении не заведется. Что делать в этом случае дальше, написано в разделе 5. Если все пройдет успешно, то снизу появится надпись "F1 Reset  Esc Exit". Если нажать F1, то компьютер перезагрузится как ни в чем не бывало, только в технической информации о BIOS изменится дата создания и немного может измениться диагностика при начале загрузки. Если же после перезагрузки компьютер не подает признаков жизни, значит, прошивка BIOS прошла неудачно или же зашитая прошивка не подходит к данной плате. Что делать в этом случае, написано в разделе 5. При этом очень пригодится файл с прошивкой BIOS, который желательно было сохранить в самом начале - во всяком случае есть надежда вернуться к первоначальному состоянию.

             4.3. Ключи (параметры) AWDFLASH при запуске в командной строке.

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

      AWDFLASH /?

      На экране появится список параметров. Задаются они через "/". Пример запуска в командной строке:

      AWDFLASH BIOS.BIN /PY /SN

где BIOS.BIN - имя файла, содержащего информацию для прошивки ее в ПЗУ;

      /py - programming yes (программировать - да, т.е. записывать в ПЗУ);

      /sn - save no (не сохранять, т.е. не сохранять в файл содержимое ПЗУ перед тем, как в него будет записано новое содержимое).

             5. Основные вопросы и ситуации при прошивке BIOS.

 5.1. Можно ли испортить материнскую плату при перепрошивке BIOS?

      Да, то есть с неправильным содержимым ПЗУ материнская плата работать не будет. Сделать это можно, прошив ПЗУ не до конца (выключить питание, когда внизу рамки программы AWDFLASH еще идет индикатор процесса) или же записав в ПЗУ прошивку от другой материнской платы или абстрактный файл.

 5.2. Если все-таки в процессе программирования что-то сделать не так, и после перезагрузки материнская плата не работает, что делать?

      Если содержимое BIOS неправильное, то материнская плата не заработает. Впрочем, причин неработоспособности мат.платы может быть много. Но если есть уверенность, что причина неисправности - именно неправильное содержимое ПЗУ, то для восстановления работоспособности надо записать в ПЗУ правильное содержимое, т.е. BIOS именно от этой модели мат.платы. Для этого надо иметь файл с прошивкой BIOS именно для данной модели мат.платы. На неисправной мат.плате записать, естественно, ничего не удастся, поэтому надо извлечь ПЗУ из разъема (если ПЗУ запаяно - придется выпаивать), и перепрошить его в программаторе или в другой материнской плате.

 5.3. Как перепрошить BIOS от одной материнской платы на другой материнской плате?

      В общих чертах этот процесс довольно прост - загрузиться на рабочей мат.плате в "Safe mode command prompt only", по-горячему (т.е. на включенной мат.плате) извлечь микросхему BIOS, поставить другую микросхему, в которую надо записать новый BIOS, запустить AWDFLASH и записать нужный файл прошивки в ПЗУ. После чего выключить компьютер, переставить ПЗУ - и все. Но есть несколько нюансов:

      1) В момент включения и загрузки на мат.плате должно стоять родное ПЗУ с BIOS. После загрузки BIOS переносится в теневое ОЗУ (Shadow RAM), где и работает, а само ПЗУ становится ненужным, поэтому его можно извлечь. Соответственно, без BIOS плата не включится. Поэтому ПЗУ для перепрошивки надо менять именно на включенной мат.плате.

      2) Перед тем, как включать мат.плату, на которой будет прошиваться ПЗУ, родное ПЗУ надо немного вытащить - чтобы контакт еще сохранялся, но не нужно было бы включенную плату ковырять отверткой. Кроме того, при установке микросхемы ПЗУ надо ОЧЕНЬ ВНИМАТЕЛЬНО следить за тем, чтобы ставить ее по ключу. У микросхем всегда помечен первый вывод - треугольничком, точкой на корпусе микросхемы, вырезом. Метка есть и на колодке (кроватке) под ПЗУ - как правило, небольшой вырез с одной стороны. Если ПЗУ поставить не по ключу, то на нее подается напряжение обратной полярности и ПЗУ тут же безвозвратно ВЫХОДИТ ИЗ СТРОЯ (сильно нагревается при этом).

      3) Микросхемы FLASH-ПЗУ в корпусе DIP-32 бывают емкостью 1М Бит и 2М Бит. Причем выглядят они при этом совершенно одинаково. Мало того, некоторые мат.платы (например, Acorp 6BX86) бывают с ПЗУ в 1М, и в 2М. Естественно, более новый вариант BIOS имеет объем 2М. Отличие в том, что на 2М ПЗУ заведена дополнительная линия адреса, которая не задействована в ПЗУ 1М. С одной стороны, это хорошо - если вместо 1М ПЗУ поставить 2М ПЗУ (и наоборот), то ПЗУ не сгорит. С другой стороны, плохо - если загрузиться с BIOS объемом 1М Бит, а попытаться прошить 2М Бит ПЗУ, AWDFLASH может отказаться это делать, так как он знает объем ПЗУ, с которым мат.плата загружалась (BIOS в процессе работы находится в Shadow RAM). Поэтому прошивать 1М ПЗУ надо на мат.плате, где родной BIOS имеет объем 1М, а 2М ПЗУ - соответственно на мат.плате с родным BIOS в 2М. Впрочем, на материнских платах Lucky Star я вытаскивал 1М ПЗУ, потом засовывал 2М ПЗУ, и спокойно перепрошивал ее, правда, AWDFLASH ругнулся и потребовал подтверждения.

      4) Старые версии AWDFLASH не поддерживают 2М Бит ПЗУ - даже сохранить содержимое ее не могут. Поэтому на новых мат.платах, где ПЗУ имеет объем 2М, надо использовать новые версии AWDFLASH, например 7.95. Новую версию AWDFLASH можно скачать с той же страницы в Интернете, что и BIOS для мат.платы.

      5) Некоторые мат.платы не позволяют прошивать BIOS для мат.плат другой фирмы, например, на мат.плате Acorp можно залить прошивку только для Acorp (наверное, определяют по сигнатуре в прошивке, защита от дурака, однако). Самое лучшее - прошивать ПЗУ на мат.плате ASUS (неважно какой модели), естественно, ASUSовой же прошивалкой - PFLASH или AFLASH. На ASUSе можно залить в ПЗУ любую информацию (естественно, соответствующего объема - 128К или 256К) - хоть AMI-BIOS, хоть текстовый файл.

      6) Не все ПЗУ удается перепрошить - прошивалка определяет их как UNKNOWN и не шьет. Выход - искать другую ПЗУ. Можно извлечь ее из дохлой матери (в некоторых 486 мат.платах уже ставили 1М FLASH-ПЗУ), или же купить на Савеловском рынке (например, на D-37 2М FLASH стоит 5 у.е.).

 5.4. Может ли BIOS испортиться самопроизвольно?

      Да, содержимое ПЗУ BIOS может испортиться, и тогда при включении компьютер не подает признаков жизни (впрочем, причина может быть и в другом). Косвенным признаком испорченного содержимого BIOS может быть чуть теплый процессор, если снять радиатор (с процессорами AMD этот опыт лучше не делать). При нормальной работе процессор греется довольно сильно, если же содержимое BIOS неправильное, то мат.плата не инициализируется, и процессор фактически стоит, поэтому он греется слабо.

      Причин порчи BIOS может быть несколько:

      1) Случайность, статическое электричество. Очень редко, но бывает.

      2) Неисправность самой микросхемы ПЗУ - самопроизвольная потеря информации. Если после восстановления BIOS такая ситуация будет повторяться, то надо подумать о замене самой микросхемы ПЗУ.

      3) Действие вируса, например Чернобыль (26 апреля каждого года). От Чернобыля обычно еще исчезает все содержимое жесткого диска.

 5.5. Как перепрошить AMI BIOS?

      AWDFLASH в этом случае не подойдет, нужна программа AMIFLASH. У нее красивый графический интерфейс, и она имеет объем порядка 500К, AWDFLASH - в пределах 40К. Единственное, что я не понял - это как AMIFLASH сохраняет существующий BIOS в файл. А в остальном суть та же - надо сказать имя файла с прошивкой, подтвердить продолжение и подождать несколько секунд.

 5.6. Стоит ли самому перепрошивать BIOS, или лучше обратиться к специалисту?

      Если все работает, и все устраивает - лучше вообще ничего не перепрошивать. Обратиться к специалисту, конечно же, спокойнее. Во-первых, он это делал не раз (если делал) и сделает это быстро. Во-вторых, нормальный специалист несет ответственность за свои действия, в том числе и материальную. Стоить сия процедура для вас будет от 10 до 20 у.е., в зависимости от настроения специалиста, а по времени это займет несколько минут. Поэтому, если есть желание сэкономить и получить новые навыки, то лучше это сделать самому, тем более что сложного в этом ничего нет.

Дмитрий Леонов

progressinfo@chat.ru

22 февраля 2002 г.