legal note
IC Book © 2001

hardware
software

support
buy

Home page
   




Press
Практикум по ACPI
 


Выключаем питание

На сегодня, у многих специалистов, использование ACPI ассоциируется в пер­вую очередь с функциями управления электропитанием и минимизацией энер­го­по­треб­ле­ния. Вместе с тем, данная спецификация разработана как аль­тер­на­ти­ва устаревающему стандарту Plug and Play и сферы ее применения значительно шире.

Спецификация ACPI содержит огромное количество определений, про­то­ко­лов и форматов, поэтому в рамках одной статьи можно изложить только ос­нов­ные принципы ее функционирования. Для подробного изучения вопроса ре­ко­мен­ду­ется обратиться к документам [1], [2], [8]. Предлагаемый материал по­зи­ци­о­ни­ру­ет­ся как практический пример, интересный для специалистов, уже име­ющих некоторые базовые знания в данной области. На уровне ассемблерных ин­струк­ций и схемотехники материнской платы рассматривается процедура про­грам­мно­го выключения питания (для систем с блоком питания ATX). К статье при­ла­га­ют­ся также протоколы ручного дизассемблирования таблиц ACPI с подробными комментариями.

Как это работает?

Рассмотрим абстрактный пример. Пусть для выполнения заданного действия не­об­ходимо записать в регистр по адресу X данные Y. При использовании под­хо­да, основанного на вызове сервисных процедур BIOS, в выполняемом блоке BIOS будет размещена процедура, которая осуществляет указанную запись. Задача опе­ра­ци­онной системы – просто вызвать эту процедуру. В данном случае, осо­бен­нос­ти реализации конкретного чипсета, если таковые имеются, скрыты вну­три BIOS и не являются заботой разработчика ОС

Второй вариант – ОС не обращается к BIOS и выполняет указанную запись са­мо­стоятельно. В этом случае, ОС (драйвер) напрямую взаимодействует с ре­гист­ра­ми чипсета, распознает и эффективно использует его возможности. Но рас­пла­та за это – усложнение и ограниченная совместимость. Как известно, под каж­дый чип­сет нужен свой драйвер.

Разработчикам ACPI удалось придумать третий вариант. Численные значения X и Y, отражающие особенности реализации конкретной платформы, хра­нят­ся в спе­ци­аль­ных таблицах, которые генерирует BIOS при старте и размещает в опе­ра­тив­ной памяти. Для этого, как правило, используется последний мегабайт "верх­ней" памяти. Операционная система находит и считывает эти параметры. Про­це­ду­ра записи в регистр по адресу X данных Y является частью ОС, а не BIOS, но параметры X и Y предоставляет BIOS посредством таблиц ACPI.

Какие преимущества это дает? Таблицы ACPI, в отличие от сервисных про­це­дур BIOS, не содержат выполняемого кода, поэтому независимо от архитектуры про­цессора и режима его работы, можно использовать одни и те же таблицы. Что­бы оце­нить это преимущество, вспомним о неудобствах, связанных с тем, что большинство функций BIOS могут быть вызваны только в реальном режиме про­цес­со­ра (Real Mode). Функции, доступные в защищенном режиме (Protected Mo­de) должны иметь несколько точек входа (для Real Mode, Protected Mode 16, Pro­tect­ed Mode 32).

Так как процедура взаимодействия с оборудованием является частью ОС, для на­строй­ки на конкретную платформу, можно совместно использовать данные, по­лу­чен­ные от BIOS (из таблиц ACPI) и данные, размещенные в драйвере при его раз­ра­бот­ке. Это дает дополнительную гибкость.

Таким образом, таблицы ACPI обеспечивают эффективное использование BIOS для информирования программного обеспечения об особенностях кон­крет­ной платформы. При этом отсутствуют неудобства, связанные с использованием сер­ви­с­ных процедур BIOS.

Продолжение…





about
press


вверх