Insyde Software is a company that specializes in UEFI system firmware and engineering support services, primarily for OEM and ODM computer and component device manufacturers. The company's product portfolio includes InsydeH2O BIOS (Insyde Software's implementation of the Intel Platform Innovation Framework for UEFI/EFI[1]) and Humanos, which is a software environment developed for open source operating systems on mobile computer platforms.
Insyde Software was formed when it purchased the BIOS assets of SystemSoft Corporation in October, 1998. Initially Insyde Software was a privately held company that included investment from Intel Pacific Inc., China Development Industrial Bank, Professional Computer Technology Limited (PCT), company management and selected employees.
Изучение контрольных точек InsydeBIOS затрудняется их нерегулярным построением самим производителем, когда различные по смыслу процессы загрузки сопровождаются одними и теми же диагностическими кодами.
В дуальных диагностических системах существуют разнородности другого порядка: некоторые POST-коды отображаются только в один из портов без привычного в таких случаях дублирования - или Manufacture's Diagnostic Port 80h, или PIO Port (LPT-порт с адресом 378h).
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
60 | 61 | ||||||||||||||
88 | |||||||||||||||
99 | |||||||||||||||
A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | AE | AF | |||||
BB | |||||||||||||||
CC | |||||||||||||||
E1 | E2 | EA | EC | ED | EE | ||||||||||
F0 | F1 |
код | название | описание |
---|---|---|
00 | Start of BootLoader sequence Стартовая точка выполнения загрузочного блока | Сигнатура центрального процессора сохраняется в CMOS. Осуществляется первичное конфигурирование регистров системной логики, необходимое для дальнейших процедур |
01 | Disable A20 through A20 (not send) Запрет линии A20 (не используется) | Манипуляции с линией А20 давно уже не входит в список необходимых действий на раннем этапе старта. Как правило, данный код встречается только как альтернатива предыдущей процедуре, полностью с ней совпадая по смыслу и содержанию |
02 | Initialize Chipset Обновление микрокода центрального процессора | Вывод данного значения, как правило, дублируется в параллельный порт и следует непосредственно за кодом 00, предваряя процедуру обновления микрокода центрального процессора |
03 | Perform conventional RAM test with crossed-pattern R/W Тестирование оперативной памяти | Выполняется проверка оперативной памяти (RAM) для организации области временного хранения. Полное несовпадение записанных и считанных данных позволяет сделать вывод об отсутствии оперативной памяти, после чего управление передается на код F0. Частичное несовпадение приводит к обработке ошибки RAM Test Failed на коде F1 |
04 | Move BootLoader into the RAM Перенос загрузочного блока в оперативную память | Содержимое загрузочного блока BIOS переносится в область временного хранения в оперативной памяти. Несовпадение контрольных сумм приводит к переходу на ветку восстановления BIOS (код 0A) |
05 | Start point of execution of BootLoader in RAM Выполнение загрузочного блока из оперативной памяти | Упакованные модули Boot Loader распаковываются по заранее установленным фиксированным адресам в оперативной памяти. |
06 | User Flash Check Форсирование процедуры восстановления Flash ROM | На платформах с параллельным портом форсируется процедура восстановления BIOS. Под форсированием понимается поиск установленного на параллельном порту устройства, наличие которого препятствует штатному прохождению POST, выполняя принудительное программирование Flash ROM со сменного носителя (FDD, CD-ROM). Предполагается, что носитель форматирован в соответствии с требованиями процедуры Crisis Boot и содержит файл с образом BIOS и утилиту программирования FlashIt |
07 | Shadow system BIOS Перенос системного BIOS в оперативную память | Код BIOS переносится из буфера временного хранения в закрепленную за ним область в оперативной памяти. Сбои при выполнении операции носят фатальный характер, поэтому выполнение загрузки прекращается, а на системный динамик выводится звуковой сигнал |
08 | Checksum System BIOS ROM Верификация контрольной суммы системного BIOS | Если контрольная сумма BIOS в оперативной памяти верная, выполнение загрузочного блока завершается, и управление передается следующей процедуре Normal Boot. В противном случае управление передается на процедуру восстановления BIOS - Crisis Boot и сопровождается звуковым сигналом |
09 | Proceed with Normal Boot Запуск процедуры POST | Управление загрузкой передаётся процедуре POST (код 10). Для этого исполняемый код POST перемещается из области временного хранения в область выполнения, затирая код Boot Loader |
0A | Proceed with Crisis boot Запуск процедуры восстановления Flash ROM с накопителя FDD | Штатный режим выполнения загрузочного блока переходит в фазу восстановления BIOS. Перед этим проверяется сам факт наличия кризисного кода и его достоверность. Обнаруженные ошибки препятствуют дальнейшему выполнению, а на системный динамик выводится последовательность длинных и коротких звуковых сигналов |
0B | Initialize Clock Sythesizer Инициализация синтезатора частот | Программная инициализация частотного синтезатора сопровождается выводом диагностического кода только на некоторых платформах и не всегда выполняется на раннем этапе старта |
0C | Halt at Crisis boot Завершение процедуры восстановления BIOS | Выполняется остановка процедуры Crisis Boot, если в ходе её выполнения возникли следующие ситуации, препятствующие восстановлению BIOS: * неисправен или отсутствует накопитель FDD * отсутствует носитель в приводе FDD * ошибка чтения FDD * формат данных на дискете не соответствует требованиям Crisis Boot |
0D | Alternate Crisis boot Альтернативная процедура восстановления Flash ROM с FDD | Индикация кода 0D характерна для ранних реализаций Boot Loader. Его выполнение аналогично процедуре восстановления BIOS (Crisis Boot) и в настоящее время не используется |
0F | Fatal Error Остановка в случае возникновения фатальной ошибки | Неисправимая ошибка, препятствующая дальнейшему выполнению загрузочного блока. Если не обнаружена оперативная память, выводится код F0 и последовательность коротких звуковых сигналов. Если обнаружена ошибка оперативной памяти, выводится код F1 и последовательность коротких звуковых сигналов, завершающаяся длинным |
60 | Read SPD from DIMM Переход в режим Big Real Mode | Для чтения информации Serial Presence Detect (SPD) устанавливается режим Big Real Mode и выполняются процедуры конфигурирования SMBus контроллера. Процедура может выполняться по одному из следующих алгоритмов: * абсолютная адресация DIMM-модулей, когда SPD каждого из них вычитывается по уникальному адресу; * инвариантная адресация применяется в случае, когда доступ к SPD разных модулей выполняется по одному и тому же адресу, а выбор устройства осуществляется путем коммутации сигнала DRAM Enable контроллером SIO |
61 | Store SPD in CMOS Инициализация SM Bus, данные SPD сохраняются в CMOS | Доступ к SPD по SMBus завершился успешно. Данные SPD сохраняются в неиспользуемых системой ячейках CMOS для того, чтобы дальнейший их анализ выполнялся без участия аппаратных средств платформы |
88 | ACPI Initialization Complete Разрешение функций ACPI | Начальная инициализация функций ACPI - формирование доступа к портам SMBus-контроллера и разрешение форвардинга LPC для диапазонов адресов COM-, LPT- и FDC-портов |
99 | Error during returning from suspend to RAM Ошибка при выходе из режима STR | Если в процессе раннего старта установлено, что система находится в Suspend to RAM, но выход из этого состояния невозможен по каким-либо причинам, выполняется стандартная процедура инициализации. В диагностический порт выводится значение 99, а управление передается в точку, с которой начинается инициализация системной логики |
A0 | Check SPD Чтение и анализ полей SPD, ранее сохраненных в CMOS | Для каждого модуля DIMM выполняется чтение и анализ полей его SPD, ранее сохраненных в CMOS. Код A0 выводится в диагностический порт дважды и, как правило, дублируется в параллельный порт |
A1 | Set up CAS Latency Инициализация контроллера памяти | Контроллер памяти инициализирован значениями CAS Latency для каждого модуля DIMM в зависимости от результатов, полученных из соответствующих SPD. Запускается процедура инициализации регистров контроллера, расположенных в пространстве памяти. Если в процессе работы возникнут фатальные ошибки, приводящие к прекращению POST, диагностический порт отобразит код A1, как последнее записанное значение |
A2 | Detecting a Number of Logical Banks Определение логических банков модуля DIMM | Анализ параметров SPD из образа, ранее сохраненного в Extended CMOS: * количество логических банков модуля DIMM * разрядность адреса строки * разрядность адреса столбца Код выводится в диагностический порт столько раз, сколько в системе установлено модулей DIMM |
A3 | Programming DRAM Row Boundary Программирование регистров DRB (DRAM Row Boundary) | Программирование регистров контроллера памяти DRAM Row Boundary, управляющих базовыми адресами и размерами физических банков памяти. Код выводится в диагностический порт столько раз, сколько в системе установлено модулей DIMM |
A4 | Programming DRAM Row Attributes Программирование регистров DRA (DRAM Row Attributes) | Программирование регистров контроллера памяти DRAM Row Attributes, управляющих размерами страниц памяти (Row Page Size). Код выводится в диагностический порт столько раз, сколько в системе установлено модулей DIMM |
A5 | Check Number of Columns and Rows | Выбор очередного модуля DIMM для анализа его организации. Код выводится в диагностический порт столько раз, сколько в системе установлено модулей DIMM |
A6 | Check Number of Columns and Rows (continue) | Подготовка к анализу организации модулей DIMM по информации из SPD. Код выводится в диагностический порт столько раз, сколько в системе установлено модулей DIMM |
A7 | Check Number of Columns and Rows (continue) | Определение количества адресных линий по столбцам и строкам на основании информации, полученной из SPD и хранящейся в CMOS. Код выводится в диагностический порт столько раз, сколько в системе установлено модулей DIMM |
A8 | Check Number of Columns and Rows (continue) | Анализ организации очередного DIMM модуля завершен. Код выводится в диагностический порт столько раз, сколько в системе установлено модулей DIMM |
AE | Warning: ECC not supported! В системе обнаружены модули DIMM, которые разнятся между собой функциями Error Correcting Codes (ECC) | В системе обнаружены модули DIMM, которые разнятся между собой в смысле функциональности ECC. Код AE выводится в диагностический порт дважды и, как правило, дублируется в параллельный порт |
AF | Initialization Memory Mapped Registers Complete Первичная инициализация регистров контроллера памяти,отображаемых в пространстве памяти | Первичная инициализация регистров контроллера памяти, отображаемых в пространстве памяти, завершена. В отличие от регистров, находящихся в пространстве портов ввода-вывода, Memory Mapped регистры требуют блокировку доступа к ним на финальном этапе инициализации с тем, чтобы скрыть их наличие от стандартных процедур PCI PnP |
BB | Early Initialization Complete Ранняя инициализация LPC SIO | Ранняя инициализация состоит из поиска и идентификации контроллера SIO, а на современных платформах дополняется процедурой, определяющей тип шинного интерфейса, которым он подключён: ISA или LPC. Затем выбирается источник тактирования и выполняется разрешение тактирования. В режиме конфигурирования осуществляется настройка регистров контроллера ввода-вывода и управление передается на код 00 |
CC | Start Crisis Recovery procedure Стартовая точка начала восстановления Flash ROM | В процедуру восстановления BIOS управление передается после выполнения кода 0Ah. Сама процедура к этому моменту распаковывается из Boot Block в оперативную память и сопровождается настройкой регистров системной логики для работы в ограниченном режиме mini-OS |
E1 | SPD not found Модуль DIMM не оснащен микросхемой SPD | Выполнение загрузочной процедуры прекращается, если модуль DIMM не оснащен микросхемой SPD либо чтение её содержимого закончилось неудачей. Существует 2 алгоритма чтения, каждый из которых связан с аппаратными особенностями платформы. В одном случае доступ к SPD выполняется по адресу на шине SMB, в другом - путем манипуляций с сигналом DRAM Data Select (DRAMENA). Код выводится в диагностический порт дважды и, как правило, дублируется в параллельный порт |
E2 | Installed Memory Type not supported Тип модуля DIMM не соответствует требованиям системы | В процессе анализа SPD установлено, что тип модуля DIMM не соответствует требованиям системы. Например, если платформа поддерживает DDR память, а установлен модуль SDRAM. Код выводится в диагностический порт дважды и, как правило, дублируется в параллельный порт |
EA | DIMM is not OK for this system Min время между активацией DIMM-модуля и переходом в состояние регенерации не соответствует системным требованиям | Не соответствует системным требованиям время между активацией строк DIMM модуля и переходом в состояние регенерации. В эту точку управление передается также и в том случае, если модуль не в состоянии обеспечить min паузу между выдачей сигналов Raw Access Strobe (RAS) и Column Access Strobe (CAS). Код выводится в диагностический порт дважды и, как правило, дублируется в параллельный порт |
EC | Registered DIMM not supported Регистровые модули DIMM не поддерживаются | Ошибка возникает, если используются повторители, буферные регистры или FET-ключи для сигналов DIMM. Код выводится в диагностический порт дважды и, как правило, дублируется в параллельный порт |
ED | DIMM has bad latency parameter Проверка режимов CAS Latency | Проверка поддержки хотя бы одного из режимов CAS Latency: * для модулей SDR - 3 или 2; * для модулей DDR - 2.5, 2 или 1.5. Код выводится в диагностический порт дважды и, как правило, дублируется в параллельный порт |
EE | Early Initialization Failed Модуль DIMM не поддерживается системной платой | Организация модуля DIMM не поддерживается аппаратной реализацией системной платы - количество адресных линий, обеспечивающих доступ по строкам и столбцам, не соответствует техническим требованиям. Выполнение POST прекращается после того, как в служебной таблице не найдена организация одного или нескольких банков памяти. |
F0 | Fatal Error: No RAM Неисправимая ошибка: нет оперативной памяти | Неисправимая ошибка в случае, если оперативная память не обнаружена. На системный динамик выводится последовательность коротких звуковых сигналов. |
F1 | Fatal Error: RAM test failed Неисправимая ошибка: не пройден тест оперативной памяти | Если обнаружена ошибка оперативной памяти, этот код выводится в диагностический порт, а на системный динамик посылается последовательность коротких звуковых сигналов, завершающаяся длинным сигналом. Такая ошибка становится фатальной, и дальнейшее выполнение загрузочного блока прекращается. |
Логика формирования диагностических звуковых сигналов прозрачна и очевидна:
код ошибки увеличивается на единицу
и разбивается на 2 группы по 3 бита в каждой
Например, так:
**07** -> **08** = 001 - 000
На основании полученного кода строится аудиосообщение, в котором нули замещаются короткими звуковыми сигналами, единицы - длинными, а разделитель между группами становится паузой:
**07** = ККД пауза ККК пауза
, где К - короткие звуковые сигналы, Д - длинные.
# | код | описание |
---|---|---|
0 | ККК ККД | Ошибка доступа к DMA-регистрам |
1 | ККК КДК | Ошибка схем регенерации памяти |
2 | ККК КДД | Ошибка контрольной суммы BIOS |
3 | ККК ДКК | Ошибка CMOS-памяти |
4 | ККК ДКД | Сбои DMA-контроллера |
5 | ККК ДДК | Сбои PIC-контроллера |
6 | ККК ДДД | Сбои контроллера клавиатуры |
7 | ККД ККК | VGA-адаптер не обнаружен |
8 | ККД ККД | Оперативная память не обнаружена |
Флагманский продукт Insyde Software - InsydeH2O пришёл на смену обычному БИОСу MobilePRO в конце 2003-начале 2004 гг. и получил широкое распространение на бюджетных ноутбуках HP, Toshiba, Acer, большинство из которых используют мобильные платформы производства Arima, Compal, Inventec или Quanta.
Важным фактом стало распространение InsydeH2O на рынке десктопных компьютеров, в частности - на платформах Intel (таких, как D201GLY или DH61AG). Согласно информации, размещённой на сайте Insyde Software, новая UEFI-версия с успехом используется и на серверных платформах.
Запуск InsydeH2O в соответствии со спецификацией EFI выполняется со стартовой фазы SEC (Security Code Module). В зависимости от установки параметра NO_EVICTION_MODE_DEBUG, разрешающего генерацию POST-кодов, выбирается тот или иной сценарий старта платформы после подачи питающих напряжений, либо в связи с отработкой сигнала системного сброса. Из этого следует, что на тех платформах, где Debug-режим запрещен, по старту диагностическая плата не сможет зарегистрировать POST-коды, возникающие в SEC-фазе.
Кроме того, в отличие от классического перечня контрольных точек, который может как дополняться, так и сокращаться, существует семантическая зависимость значений диагностических POST-кодов от производителя центрального процессора. Сегодня можно с уверенностью сказать, что решения на AMD тяготеют к выдаче диагностических кодов, начинающихся со значения C0, на 80-й порт, тогда как Intel-платформы используют новую кодификацию, начинающуюся с POST-кода 01.
Для того чтобы избежать дезинформации, приводим оба сценария выполнения BIOS в стартовой SEC-фазе, условно называя их классическим и обновленным подходами к диагностике систем.
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10 | 1F | ||||||||||||||
C0 | C1 | C2 | C3 | C4 | C5 | ||||||||||
D0 | D1 | ||||||||||||||
FF |