Специально для сайта http://www.notebook1.ru/ По материалам IC Book Labs. Анализ ремонта персональных платформ говорит о том, что большинство проблем являются камнем преткновения на раннем этапе старта. Поэтому так важно знание и толкование процессов, которые обозначаются POST-кодами — контрольными точками диагностики. С появлением нового продукта от Insyde Software — EFI BIOS InsydeH2O —сложностей у ремонтников только добавилось. К сожалению, регулярность использования POST-кодов (или, по-модному, Status-кодов) в этом BIOS желает лучшего. Уже несколько лет из сервис-мануалов ноутбуков Acer, Gateway, eMachines известен «классический перечень» диагностических последовательностей, описывающие самый ранний этап старта EFI, так называемую Sec-фазу (от слова Security). Происхождение названия и его смысл оставим в покое. Отметим лишь, что по сути — все это напоминает загрузочный блок. Рассмотрим таблицу POST Code Reference Table, с самого начала описывающего именно SEC-фазу. В зависимости от установки параметра NO_EVICTION_MODE_DEBUG, разрешающего генерацию POST-кодов, выбирается сценарий диагностики платформы. Код: ; Set to 1 to enable debug ; NO_EVICTION_MODE_DEBUG EQU 1 Из этого следует, что там где Debug-режим запрещен, по старту в диагностическом порту в принципе не могут быть зарегистрированы POST-коды, возникающие в SEC-фазе. Кроме того, в отличие от «классического перечня» контрольных точек, который может как дополняться, так и сокращаться, существует семантическая зависимость значений POST от производителя центрального процессора. Сегодня можно с уверенностью сказать, что решения на AMD тяготеют к выдаче в 80-й порт в стартовой фазе диагностических кодов, начинающихся со значения C0h, в то время когда платформы на Intel используют новую кодификацию, начинающуюся с POST 01. Примечание! Для ранних релизов InsydeH2O характерно однообразное применение POST-кодов, наблюдаемых в SEC-фазе BIOS, в равной степени применимых к платформам различных производителей. Все они тяготеют к классической кодификации, известной из ряда руководств мобильных платформ. Для того чтобы избежать дезинформации, приводим оба сценария выполнения BIOS в стартовой SEC-фазе, условно называя их «классическим» и «обновленным» подходами к диагностике систем. «Классика» C0 Запрет кэш-памяти, предварительная инициализация MTRR, FPU и системных регистров процессора. C1 Выполнение инструкции CPUID для определения Processor Family. Выполнение model- specific процедур для инициализации процессора. C2 Инициализация регистров MTRR (Memory Type and Range Registers) для управления кэшпамятью. Предварительная проверка кэш-памяти записью и последующим контрольным считыванием. C3 Один из этапов процедуры инициализации временного ОЗУ в кэш-памяти. Разрешатся кэширование читаемых данных. В регистре CR0 обнуляются биты CD и NW. C4 Один из этапов процедуры инициализации временного ОЗУ в кэш-памяти. Тэги кэш памяти загружаются таким образом, чтобы диапазон адресов, в котором создается временное ОЗУ, оказался кэшированным. Для этого выполняется чтение или запись данного диапазона. C5 Один из этапов процедуры инициализации временного ОЗУ в кэш-памяти. Запрещается кэширование данных. В регистре CR0 устанавливаются биты CD и NW. Это запрещает размещение в кэш-памяти новых данных, но не приводит к удалению из кэш-памяти ранее кэшированных данных, они продолжают использоваться, и доступны для чтения и записи, пока не будет выполнена явная очистка кэш-памяти, например инструкцией WBINVD. Намеренно не сделав такую очистку, мы и получаем Cache as RAM. CE Инициализация Application Processors. CF Pass Control into the PEI Core Завершена инициализации временного ОЗУ в кэш-памяти (Cache as RAM). Для дальнейшей работы выполняется дополнительная настройка MTRR. «Модерн» 01 Инициализация Bootstrap Processor для работы в защищенном режиме (Protected Mode). Загрузка адреса глобальной дескрипторной таблицы (GDT) и переход в защищенный режим. Инициализация регистров CR0, CR4, установка селекторов сегментов в регистрах DS, ES, FS, GS, SS. 02 Инициализация механизма доступа в [url=http://icbook.com.ua/press/memory_mapped_configuration/index.html]конфигурационное пространство посредством Memory Mapped I/O[/i]. 03 Инициализация механизмов доступа к регистровому блоку Root Complex Register Block, входящему в состав микросхемы PCH (Platform Control Hub). 04 Проверка BSP-статуса процессора, выполняющего данный код. 05 Установка Ratio максимального множителя. 06 Инициализация технологии Hyper Threading. 07 Запись блока CPU Micro Code. 08 Анализ BIST-информации (опционально) 09 Инициализация регистров MTRR (Memory Type and Range Registers) для временного использования кэш-памяти в качестве оперативной памяти. 0A Инициализация стека, загрузка адреса стека в регистр ESP. Создание стекового фрейма, хранящего базовый адрес и размер стека. 0B Запуск Pre-EFI Initialization Phase. D0 Ошибка при проверке оперативной памяти, организованной в кэш D1 Ошибка конфигурирования платформы 0C Pass Control into the PEI Core POST-коды CRC На современных платформах в стартовый SEC-модуль входит подпрограмма инициализации центрального процессора, что продиктовано интеграцией в его состав контроллера памяти и других аппаратных ресурсов. Это фрагмент кода называется CPU Reference Code, сокращенно CRC. Аналогия с избыточным циклическим кодом (CRC) здесь служит плохим советчиком, так как не имеет ничего общего с инициализацией CPU. Процедура выполнения CPU Reference Code сопровождается выводом в смежные диагностические порты 80h и 81h шестнадцатибитной информации в формате слова, где старший байт имел фиксированное значение 0Ch. В связи с тем, что не все POST-карты отображают состояние 81-го порта, а значение 80-го порта может совпадать с «обновленными» POST-кодами SEC-фазы, такая ситуация может привести к недоразумениям в диагностике возможных причин останова. 0C01 Доступ к регистрам конфигурационного пространства в составе CPU разрешен 0C02 Ошибка связанная с тем, что установленный процессор (процессоры) не поддерживают конфигурацию шин QuickPath Interconnect 0C04 Ошибка инициализации No-Eviction Mode и режима использования Cache-as-RAM 0C08 Инициализация регистров, управляющих шиной Common System Interface 0C09 Инициализация контроллера памяти в составе центрального процессора 0C10 Определяется необходимость выполнения системного Reset 0C1F Корректное завершение выполнения CPU Reference Code