Программное обеспечение, встроенное в устройства можно разделить на категории, назовем их "уровнями". При включении электропитания последовательно один за другим выполняется несколько уровней подпрограмм. Каждый из этих уровней в некоторой степени обособлен, что позволяет достичь определенной независимости и в результате стабильности работы всей системы в целом. В чем "соль" такого подхода мы сейчас рассмотрим.
Первый уровень представляет собой набор подпрограмм, необходимых для запуска устройства (инициализации), в процессе которого проверяются такие параметры как работа тактовых генераторов, уровни рабочих напряжений, температура и прочее. В результате определяется возможность работы инициализируемого устройства, после чего активизируется очередной уровень программного обеспечения.
Первый уровень является "неприкосновенным" — в результате порчи информации в области размещения подпрограмм, относящихся к нему, вам поможет только замена микросхемы постоянной памяти или ее "прошивка" на специальном программаторе. Во время обновления BIOS пользователем данный уровень обычно не затрагивается, т. к. производитель, как правило, вносит изменения в область более высоких уровней, которые мы рассмотрим ниже.
На первом этапе инициализации практически любое устройство, будь то материнская плата или контроллер SCSI не проявляет абсолютно никаких "признаков жизни", как звуковые сигналы, моргание индикаторов и т. п.
Второй уровень подпрограмм предоставляет сервисные услуги — но диагностике, а иногда даже по устранению различных неполадок. На данном этапе осуществляется окончательная инициализация устройства и вывод результатов самодиагностики, что выражается в выводе звуковых сигналов на системный динамик, сообщений на экран монитора или, в частном случае, определенных кодов на дисплей диагностического устройства.
CMOS — это своеобразная записная книжка (органайзер, если хотите), в которой можно делать «заметки» о том, в каких режимах должны работать компоненты материнской платы.
По сути, все программное обеспечение, записанное в микросхеме BIOS, является не более чем архивом в формате LHA. Именно поэтому попытки ди-зассемблировать ее содержимое так часто оказывается неудачным, ведь для начала нужно осуществить распаковку содержимого. Внутри архива обычно содержатся следующие файлы:
- original.tmp — непосредственно набор подпрограмм, составляющих основу BIOS;
- awardext.rom — подпрограммы, ответственные за вывод таблицы, из которой вы при загрузке компьютера можете получить информацию о текущей конфигурации ПК;
- awardepa.bin — логотип Energy Star, выводимый в момент запуска компьютера в верхнем правом углу экрана монитора, может иметь название logo.bin и т. п.;
- cpucode.bin — таблица микрокодов для процессоров Intel;
- acpitbl.bin — набор подпрограмм поддержки ACPI;
- vga.rom — набор подпрограмм (видео-BIOS), которые необходимы для работы интегрированного видео.
Естественно, обычным архиватором LHA распаковать файл «прошивки» не удастся, производители традиционно «позаботились» об этом, несколько изменив заголовок у архива. Для этого используются специальные программы, например, MODBIN или CBROM.
Не менее естественно, что в BIOS все-таки имеется определенная область, в которой записаны программы в несжатом виде, в их обязанность входит первичная проверка и инициализация компонентов материнской платы, распаковка основного набора подпрограмм и их запуск. Эта область чаше всего называется BOOTBLOCK. Помимо всего прочего подпрограммы из данной области BIOS обладают возможностью ее аварийного восстановления.