Особенности Boot Block Phoenix

Отвечая, на непростой вопрос, помещаю объяснение в FAQ:

Цитата:
...часто сталкиваюсь со странными POST-кодами на Phoenix BIOS. Речь идет о кодах группы 8x, появляющихся сразу после старта системы, но до появления основной трассы кодов из основного тела BIOS. Выглядит это примерно так: bb-80-81-82-83-85-87-.
Очень хочу понять что они означают. Вероятно затык на ранней стадии инициализации – возможно что-то связанное с LPC-шиной и устройствами на ней.
Прежде всего необходимо отметить, что у Phoenix Tech. существует два варианта вывода POST-кодов в процессе выполнения загрузочного блока. Первый из них всем хорошо известен: бут-блок стартует кодом E0, и далее процесс продолжается по накатанной дорожке: E1, E2 и т.д. В свое время я детально дизассемблировал этот участок кода и убедился, что он написан добротно и качественно. Так, в процессе выполнения POST E0 первым делом опрашивается PCI-простанство с тем, чтобы убедиться, оба моста в нем видятся (ну, тут без смайлика не обойтись: а как мы вообще-то стартовали, доступаясь процессором через оба к Flash ROM?)
Второй вариант есть точная копия первого, но с одним небольшим изменением: вместо кодов E0, E1, E2, E3... необъяснимо почему используется последовательность 80, 81, 82 и так далее. В этой связи останов на коде 87 (в миру – E7) выглядит совершенно логично:
Цитата:
Если контрольная сумма вычислена правильно, управление передается в BIOS Main Block
...а если нет?:)

P.S. Что касается стартового кода BB, то не стоит его путать с двойником из основного тела: это просто омоним. Таким способом иногда (!) начинается PhoenixBIOS. Это делается для того, чтобы еще до запуска бутблоковой state-машины отрапортовать пользователю (а на этапе разработки – инженеру-отладчику) что запуск есть. Но, по правде говоря, обычно для этого используется код 88. В силу того что в указанной реализации он почти что занят, приходится довольствоваться его аналогом.

Если данная информация оказалась полезной/интересной - плюсаните, пожалуйста:

Ленты новостей