Процесс старта BIOS

Рейтинг:   / 2
ПлохоОтлично 
Включаем БП, если все напряжения в норме, то спустя 0,1...0,5 сек БП выдаёт на материнскую плату сигнал PowerGood (PG). На материнской плате собрана специальная схема, вырабатывающая сигнал RESET. Эта же схема может быть завязана с хардваремонитором, контролирующим напряжения питания, которые поступают на маму от БП и\или вырабатываются преобразователями материнки для питания различных узлов (проца, памяти, чипсета и т.д.). В обязанности хардваремонитора также входит контроль температуры основных элементов платы и контроль оборотов вентиляторов. Только после получения PG от БП, а также сигнала от хардваремонитора "все в порядке" схема формирования RESETa снимает этот самый RESET с чипсета, мультика и различной мелкой логики, распаяной на плате, а также с самого процессора. Сигнал RESET держит сброшеными значения всех битов управляющих регистров и обнуляет регистры процессора, кроме регистра CS (Code Segment) содержащего начальный адрес сегмента кода, в нем устанавливается значение FFFFh. После снятия RESETa процессор начинает работу в реальном режиме и в течение примерно 7 циклов синхронизации приступает к выполнению инструкции, считываемой из ROM BIOS по тому самому адресу FFFF:0000. (Современный процессор (начиная с i386DX) выполняет первую инструкцию по адресу FFFFFFF0h, находящемуся в топе 4 Гб пространства.) К этому моменту клокер уже должен выдавать стабильные задающие тактовые частоты на PCI, процессор, USB, чипсет и оперативную память. Размер области ROM BIOS от адреса FFFF:0000 до конца равен 16 байт, и в ней по указанному адресу записана команда перехода на реально исполняемый код BIOS. В этот момент процессор не может выполнять никакую другую последовательность команд, поскольку нигде в любой из областей памяти, кроме BIOS, её просто не существует. Итак, начинается выполнение конкретного кода ROM BIOS. Последовательно выполняя команды этого кода, процессор реализует функцию начального самотестирования POST (Power-On Self Test). На данном этапе кроме процессора тестируются память и системные средства ввода/вывода. Обнаружив ошибку, система подаст звуковой сигнал, так как видеоадаптер пока еще не инициализирован. Также производится конфигурирование программно-управляемых аппаратных средств материнской платы. Часть конфигурирования выполняется однозначно, другая часть может определяться положением джамперов (перемычек или переключателей) системной платы, но ряд параметров возможно (а иногда и необходимо) устанавливать пользователю. Для этих целей служит утилита Setup, встроенная в код BIOS, обычно эта утилита вызывается нажатием DEL во время выполнения POST. Параметры конфигурирования, установленные с помощью этой утилиты, запоминаются в энергонезависимой памяти, питаемой от трехвольтовой батарейки, размещённой на материнской плате. Часть из них всегда хранится в традиционной CMOS Memory, объединённой с часами и календарём RTC (Real Time Clock). Другая часть (в зависимости от фирмы-производителя) может помещаться и в энергонезависимую (например, флэш) память (NVRAM). Кроме этой части статически определяемых параметров, имеется область энергонезависимой памяти ESCD для поддержки динамического конфигурирования системы Plug and Play, которая может автоматически обновляться при каждой перезагрузке компьютера. ESCD - неупакованная область, хранится во Flash ROM, его обновление на финальном этапе выполнения POST сопровождается выводом сообщения "Update DMI pool..." Останов в этом случае (до вывода сообщения или во время вывода сообщения) связан с нарушеними логических структур BIOS. Перепрограммирование - необходимое, но увы иногда недостаточное решение в такой ситуации.
При выполнении каждой подпрограммы POST записывает её сигнатуру (код) в диагностический регистр. Этот регистр физически должен располагаться на специальной плате диагностики (сигнатурном анализаторе, или так называемой POST-карте), устанавливаемой в слот системной шины при анализе неисправности. Такие POST-карты бывают в двух исполнениях: для шин ISA и PCI. На данной плате обязательно устанавливается двухразрядный семисегментный индикатор, высвечивающий содержимое регистра диагностики. Возможно также наличие двоичного индикатора адреса. В пространстве ввода/вывода регистр занимает один адрес, зависящий от архитектуры РС (версии BIOS). Например, для ISA, EISA - 80h; ISA Compaq - 84h; ISA-PS/2 - 90h; для некоторых моделей EISA - 300h; MCA-PS/2 - 680h. Имея в наличии POST-карту по индицируемым кодам, можно определить, на каком этапе остановился POST. Зная специфическую таблицу сигнатур для каждой версии BIOS, легко определить неисправность системной платы. Наиболее полное собрание основных POST-кодов для разных версий BIOS на русском языке лежит на icbook.com.ua/post/ (вообще сайт довольно интересный), также заслуживает внимания импортный сайт www.bioscentral.com.
Следует отметить, что далеко не все коды видны на индикаторе в процессе нормальной загрузки компьютера: некоторые высвечиваются лишь в том случае, если POST останавливается. Происходит это потому, что многие подпрограммы POST исполняются настолько быстро, что человеческий глаз не в состоянии уследить за индицируемым состоянием регистра диагностики, а некоторые коды появляются только при обнаружении неисправности. Итак, смотрим код, но не надо спешить менять девайс, если он известен! Тщательно проверяем всё, вплоть до прозвонки дорожек! Если не известно, что это за девайс, подизасмить БИОСяку, найти, где он инитится... Если не "моги", позадалбывать местных дизасмеров... Если индикатор показывает FF или 00, то наша плата вообще не смогла "стартануть", и нам надо проверять все питания элементов платы, задающий генератор, процессор и посмотреть наличие сигналов на шине данных и адреса.
Итак, программный старт компьютера вкратце выглядит примерно так:
- Программируются регистры Host Bridge, очищается Internal Cache, запрещается Internal и External Cache, а также операции с кэш-памятью, запрещается Shadow RAM, вследствие чего происходит направление непосредственно к ROM циклов обращения к адресам расположения System BIOS. Эта процедура должна соответствовать конкретному чипсету. Далее программируются РIIХ ресурсы: контроллер DMA, контроллер прерываний, таймер, блок RTC. При этом контроллер DMA переводится в пассивный режим.
- В компьютерах на SIMM или SDRAM с помощью последовательных циклов запись/чтение определяется тип памяти, суммарный объём и размещение по строкам. В компьютерах на SDRAM, DDR или DDR2 для определения параметров установленой памяти читается SPD (по протоколу SMBus, практически тот же самый i2c). И в соответствии с полученной информацией настраивается DRAM-контроллер. На этом же этапе процессор должен быть переключён в Protected Mode (защищённый режим).
- Проверяются первые 256 кб памяти, которые в дальнейшем будут использованы как транзитный буфер, а также осуществляется распаковка и копирование System BIOS в DRAM.
- По специальному алгоритму определяется наличие, тип и параметры External Cache.
- Определяется тип процессора, результат помещается в CMOS. Если по каким-либо причинам определение типа процессора закончилось неудачно, для платформы на интеловском процессоре такая ошибка становится фатальной и система, а соответственно и выполнение POST, останавливается. При неудачном определении типа процессора на платформе АМД в CMOS помещается "неизвестный процессор".
- Осуществляется проверка и инициализация контроллера клавиатуры, однако на данный момент приём кодов нажатых клавиш ещё не возможен.
- Проверяется функционирование CMOS и напряжение питания её батареи. Если фиксируется ошибка питания, выполнение POST не останавливается, однако BIOS "запоминает" этот факт. Ошибка при контрольной записи/чтении CMOS считается фатальной и POST останавливается.
- Программируются конфигурационные регистры Host Bridge и PIIX значениями, взятыми из BIOS.
- Генерируется таблица векторов прерываний, а также производится первичная настройка подсистемы управления питанием.
- Проверяется контрольная сумма блока ячеек CMOS, а также, если BIOS поддерживает PnP, выполняется сканирование устройств ISA PnP и инициализация их параметров. Для PCI-устройств устанавливаются основные (стандартные) поля в блоке конфигурационных регистров.
- Инициализируется блок переменных BIOS.
- Определяется наличие видеоадаптера путём проверки наличия сигнатуры 55АА по адресу начала Video BIOS (C0000:0000h). Если Video BIOS обнаружен и его контрольная сумма правильная, включается процедура инициализации видеоадаптера. С этого момента появляется изображение на экране монитора, высвечивается заставка видеоадаптера, инициализируется клавиатура. Далее по ходу POST тестируется контроллер DMA и контроллер прерываний.
- Определяется объём Base Memory и External Memory, и с этого момента начинается отображаемый на экране тест оперативной памяти.
- Инициализируется PS/2 mouse.
- Производится инициализация подсистемы гибких дисков.
- Выполняется программный сброс контроллера жёстких дисков. Если в Setup указан режим AUTO, производится детектирование устройств IDE, в противном случае параметры устройств берутся из CMOS. В соответствии с конфигурацией системы размаскируются прерывания IRQ14 и IRQ15.
- Инициализируется сопроцессор FPU.
- Настраивается клавиатура USB. На данном этапе становится возможен вход в CMOS Setup по нажатию клавиши DEL.
- Осуществляется запрос на ввод пароля, если это предусмотрено установками CMOS Setup.
- Производится поиск и инициализация ПЗУ дополнительных BIOS, а также картируется каждая из линий запросов прерывания PCI.
- Если в Setup включён данный режим, устанавливается антивирусная защита BOOT Sector.
- Осуществляется автоматический переход на зимнее или летнее время, для клавиатуры настраиваются состояние NumLock и режим автоповтора.
- Корректируются блоки ESCD (только для PNP BIOS) и производится очистка ОЗУ.
- Успешная инициализация аппаратных средств компьютера сопровождается одиночным звуковым сигналом, после чего управление передается загрузчику BOOT-сектора.

А как быть если 00 или FF, т.е. не выполнена ни одна команда системного BIOS? ("жизнь" на биосной флешке отсутствует):
Нужно быть абсолютно уверенным, что все напряжения в норме и обеспечено надлежащее тактирование.
Нужно быть абсолютно уверенным, что процессор исправен и данный экземпляр платы с данным процессором, грубо говоря "заводится".
На платформах с AMD нужно обеспечить связь CPU с NB, т.к. до начала выполнения первой из команд системного BIOS по известному адресу выполняется недокументированный "Hand-Shake" между CPU и NB. Только после этого платформа переходит к нормальному старту в смысле x86. (Hand-Shake - название условное по аналогии с чем-то давно знакомым).
На платформах с чипсетами VIA(начиная с KT266)/SiS(начиная с 635/735) до старта в смысле x86 выполняется "НЕЧТО", обеспеченное SB и BIOS. Поэтому BIOS должен быть достоверным (!). Кстати, на nForce тоже есть нечто подобное, хотя и не такое критичное, как VIA/SiS.
Предположим, что передача управления по адресу FFFF FFF0h все-таки состоялась. До инициализации первого POST кода BIOS выполняет сотни команд, в т.ч. зачастую (Award, AMI, но не Phoenix) обращается к SIO/MIO и CMOS. Если там проблема - сообщение POST не дождаться. Если есть уверенность в том, что SIO/MIO неисправен (дикий нагрев - тут мы на все 100% солидарны) - менять и не думать. Думать будем, если это не помогло :) Тут следует заметить, что если принято решение о замене SIO, то иногда следует снять два буфера RS-232, были случаи, когда пробитый преобразователь RS232-TTL выжигал переустановленный SIO. Работы тут мало, а спокойствие дороже. Но если буфер выполнен "нестандартно", например, как у ITE или у старых Winbond, то прежде чем снимать, полезно обратиться к документации.
Если это не помогло: кроме SIO/MIO на старт влияет система мониторинга (если она в SIO/MIO, то этот пункт можно и не читать), особливо ея датчики. На старых платах это что-то типа LM75. Датчики снять. Так же не будет лишним проверить на соответствие Hardware Monitor Interface (Например, Epox 3PTA, нет RESETа, на SIO не было сигнала FAN1in, выяснилось до замены SIO). В некоторых случаях настроение системной платы зависит и от звуковых чипов, сетевых чипов, прочих разных подключенных к PCI/LPC/ISA. Особенно, если они что-то там просаживают, коротят и т.п. Особенно упорные ремонтники в таких случаях на плате оставляют только чипсет, и смотрят жив ли он :)
Как посмотреть, жив ли чипсет. Можно осциллографом, если есть время, осциллограф и навыки по работе с ним. Можно просто заменить чипсет, если плата того стоит и в изобилии комплектующие. Наши партнеры доложили, что они при снятом SIO ставят тестовый BIOS, и если он выполняется, то плату есть надежда поднять без BGA-операций. Но это вопрос спорный, ибо для различных SIO есть свои варианты:
SIO с Flash ROM Interface (W83697HF);
SIO с раздельными шинами DATA/ADDRESS(FDC37M602);
LPC Inerface.
Если в течение ~10 сек. процессор не выполнит инициализацию SIO, чип аппаратного мониторинга в системный динамик выведет последовательность звуковых сигналов типа "сирена". Если чип системного мониторинга в отдельном корпусе (на BX, например), то сирена будет без процессора, без BIOS и без чипа SIO. Естественно, это только в том случае, если обеспечено питание и тактирование этого самого HW-мониторинга.

Критические заметки

Здесь представлены комментарии некоторых спортивных состязаний, а также оценка вопросов, сыгранных в телевизионных клубах "Что? Где? Когда?" России и Беларуси.  Особое внимание будет уделено игровым видам спорта (футбол, хоккей). Найдут для себя полезное и любители шахмат и шахматной композиции. 

Читать

Лучшие книги

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

Перейти к книгам