Встречается иной вариант, где первая микросхема называется Normal Flash ROM, а вторая – Rescue ROM. Технология называется Die-Hard BIOS. Ее впервые предложила компания АОреп.
Выбор микросхемы, из которой будет считываться программный код BIOS, обычно определяется при помощи специальных перемычек или DIP-переключателей.
Логическая структура BIOS
BIOS материнской платы, как и любое программное обеспечение, имеет определенную структуру. В общей сложности можно выделить два уровня подпрограмм.
Первый уровень представляет собой набор подпрограмм, необходимых для запуска устройства (инициализации), в процессе которого проверяются такие параметры, как: работа тактовых генераторов, уровни рабочих напряжений, температура и прочее. В результате определяется возможность работы инициализируемого устройства, после чего активизируется очередной уровень программного обеспечения. Это Boot Block.
На первом этапе инициализации практически любое устройство, будь то материнская плата или контроллер SCSI, не проявляет "признаков жизни" (таких, как звуковые сигналы, моргание индикаторов и т. п.).
Второй уровень подпрограмм предоставляет сервисные услуги по диагностике, а иногда даже по устранению различных неполадок. На данном этапе осуществляется окончательная инициализация устройства и вывод результатов самодиагностики (звуковые сигналы на системном динамике, сообщения на экране монитора или, в частном случае, вывод определенных кодов на дисплей диагностического устройства). Это Main Block.
Те же программы осуществляют управление компонентами ПК в таких режимах, как Suspend или Sleep Mode, при работе в среде MS-DOS и т. д.
Еще выделяют области, где хранятся данные ESCD и т. п, но в них хранятся вовсе не программы, а некие значения, необходимые для работы компонентов ПК (рис. 1.4).
Рис. 1.4. Так выглядит общая структура BIOS
Глава 2
Процессы, происходящие при включении компьютера
Любой пользователь на этот вопрос ответит: «Компьютер тестирует память, находит подключенные жесткие диски и загружает операционную систему». Это верный ответ. Но отражает ли он действительную ситуацию? Процесс загрузки по своей структуре довольно сложен. Представлять последовательность событий иногда очень полезно, например, при диагностике неисправностей.
В первую очередь электроника блока питания проходит процесс самотестирования, а уже затем на внутренние компоненты компьютера подается напряжение питания. Это происходит менее чем 0,1–0,5 секунды. По окончании тестов на центральный процессор поступает сигнал RESET. Тот самый, который и вы можете вызвать нажатием кнопки RESET, расположенной на системном блоке. Блок питания, не прошедший самотестирования, не включается, и компьютер, естественно, не начнет свою работу. Делается это для уменьшения вероятности повреждения электроники, а в качестве управляющего сигнала используется специальный сигнал, именуемый как "Power Good" ("хорошее напряжение").
В итоге центральный процессор готов к выполнению программы. Но на данном этапе доступна всего одна программа – некий стартовый блок, записанный в микросхеме постоянной памяти, установленной на материнской плате, являющейся, как все мы знаем, самой главной платой. Благодаря работе этого самого стартового блока появляется возможность запуска других программ, а в итоге и операционной системы.
Сначала осуществляется проверка состояния центрального процессора, его рабочих характеристик. В частности, проверяется напряжение питания, температура, частота системной шины, множитель и т. п. параметры. Если они не соответствуют параметрам, заданным производителем для данной модели процессора, то компьютер может и не включиться, хотя встречаются и исключения. Проверка осуществляется выполнением простейших вычислений, по результатам которых можно определить исправность процессора.
Следующий этап – проверка содержимого микросхемы постоянной памяти, которая является хранилищем не только стартового блока, но и всех остальных подпрограмм, необходимых для осуществления дальнейшей инициализации оборудования, да и для загрузки операционной системы тоже. Обратите внимание, что ошибки в микросхеме ПЗУ могут повлечь за собой невозможность старта компьютера, особенно если речь идет о стартовом блоке. Вот такова зависимость аппаратного обеспечения от программного обеспечения.
Как только система убеждается в целостности программ, записанных в микросхеме постоянной памяти, она начинает последовательно их запускать.
Разработчики х86-х платформ в свое время предусмотрительно встроили в базовую систему ввода-вывода (BIOS) различные процедуры диагностики неисправностей. Весь комплекс по инициализации компонентов ПК и их проверке носит обобщающее название POST (Power-On Self Test, что в вольном переводе обозначает "Самотестирование по Включению Питания").
Перед началом каждой операции POST генерирует специальный код, размером в один байт (от 00h до FFh), называемый POST-кодом, и записывает значение в диагностический порт с адресом 80h, который используется для этих целей еще со времен самого первого компьютера IBM PC. В случае возникновения неисправности процесс диагностики просто останавливается ("зависает"), а POST-код, заранее выведенный на указанный порт, однозначно определяет операцию, при которой возникла неполадка.
Единственный минус подобной системы – таблицы POST-кодов для BIOS разных производителей различны, а в связи с постоянным появлением новых устройств, что приводит к необходимости внесения изменений в соответствующие спецификации, даже у одного производителя для разных моделей устройств могут использоваться не одинаковые таблицы диагностических кодов. Это несколько путает пользователя и мешает достоверно судить об источнике неполадки. Ориентироваться в таком случае приходится на оригинальные разработки, например, компании AWARD (точнее Phoenix под упомянутой торговой маркой). Остается только надеяться, что производители будут упоминать о внесенных изменениях в руководствах по установке материнских плат. В главе 15 приведены POST-коды AVARD BIOS.
Мониторинг старта осуществляется с помощью специальных плат – контроллеров состояния порта 0080h. Так называемые POST-платы предназначены для захвата диагностических кодов и наглядного их отображения на цифровом индикаторе, что позволяет выполнять раннюю диагностику до запуска операционной системы (рис. 2.1).
Рис. 2.1. Внешний вид POST-платы
В некоторых компьютерных системах для диагностических целей используется порт с номером, отличным от 0080h. Так, в системных платах с архитектурой EISA для диагностических целей используется порт 0300h. В последнее время производители серьезнее стали относиться к идее всеобщей стандартизации, так что особых проблем вы не будете испытывать, ведь старые компьютеры встречаются все реже и реже.
Существуют три основных типа POST-плат:
• "натуральные" POST-платы, отображающие ту информацию, к которой им удается получить доступ. При помощи таких плат определяют узел, в котором произошел сбой (например, если это подсистема оперативной памяти, то следует поменять модуль памяти, используемый слот и т. п.);
• платы, способные эмулировать часть функций любого узла материнской платы (например, PHD PCI). Такие платы позволяют получить более подробную информацию о состоянии компонентов ПК, временно обойтись без видеоконтроллера, произвести полную проверку накопителей и т. д.;
• платы, требующие для своей работы установки вместо BIOS материнской платы, точнее вместо микросхемы, другой микросхемы, содержащей диагностические программы. Например, таким образом работает технология Lite BIOS. Индикация процесса диагностики, как правило, осуществляется на обычной POST-плате. Коды, естественно, будут характерные для применяемой технологии.