Стартовые POST-коды InsydeBIOS H2Ox

advertisement
Специально для сайта 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
Download