Специально для сайта 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.
CFPass 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Ошибка конфигурирования платформы
0CPass 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