Выбрать главу

Спецификация SMBus BIOS обеспечивает хост-центрическое обращение к абонентам шины: по инициативе вызывающей программы хост-контроллер посылает устройству команду, которая может предполагать и немедленный ответ устройства. Однако устройства могут посылать хосту сообщения по собственной инициативе, при этом они обязаны использовать протокол Write Word. Хост способен помещать принятые сообщения в небольшую очередь, из которой они могут программно извлекаться путем вызова функции 7 (программа должна периодически выполнять этот вызов для проверки наличия сообщений в очереди). В очереди каждое сообщение представлено байтом адреса источника и парой байт тела сообщения.

Шина SMBus тесно связана с оборудованием, управляющим питанием и участвующим в генерации запросов системного прерывания SMI (System Management Interrupt — особое аппаратное прерывание процессора) и их обработки. Из-за этого в BIOS введен специальный механизм, позволяющий обнаружить обработку SMI во время выполнения транзакций и в иное время. Это необходимо, поскольку обработчик SMI, работающий в режиме SMM, совершенно невидим прикладной программе, а результаты его работы могут существенно влиять на работу программы, вызывающей BIOS SMBus.

Функции общих обращений к SMBus:

♦ SMBus Installation Check (01h) — проверка наличия функций;

♦ SMBus Real Mode Connect (02h) — подключение в реальном режиме;

♦ SMBus 16-Bit Connect (03h) — подключение в 16-битном защищенном режиме;

♦ SMBus 32-Bit Connect (04h) — подключение в 32-битном защищенном режиме;

♦ SMBus Disconnect (05h) — отключение от сервиса;

♦ SMBus Deviсе Address (06h) — получение списка адресов устройств SMBus;

♦ SMBus Critical Messages (07h) — чтение сообщений устройств, переданных хосту.

Для взаимодействия с конкретными устройствами SMBus предназначен набор функций, позволяющих генерировать запросы протокольных команд SMBus и получать результаты их выполнения. Функции запросов и получения ответов разделены, что позволяет на время выполнения (и передачи) довольно длительных команд не занимать время центрального процессора. Большинство протокольных команд вводится за один вызов BIOS; исключение составляет команда записи блока, данные для которой передаются за один или более последующих запросов продолжения. Результаты большинства команд также принимаются за один вызов; результат чтения блока получается за несколько вызовов продолжения.

Вызовы протокольных команд устройств SMBus:

♦ SMBus Request (10h) — запрос команды устройству;

♦ SMBus Request Continuation (11h) — продолжение запроса для записи блока;

♦ SMBus Request Abort (12h) — отказ от выполнения ранее посланного запроса;

♦ SMBus Request Data and Status (13h) — запрос данных и состояния.

Шина SMBus является одним из главных коммуникационных средств в ACPI. Интерфейс SMBus для ACPI определен в спецификации SMBus CMI — документе System Management Bus (SMBus) Control Method Interface Specification Version 1.0, опубликованном в конце 1999 г. Этот интерфейс позволяет легко использовать все возможности SMBus независимо от происхождения или особенностей реализации оборудования. Ниже перечислены основные цели спецификации.

♦ Обеспечить эффективный и надежный интерфейс ACPI для аппаратных средств хост-контроллера независимо от его реализации (со встроенным микроконтроллером или без него).

♦ Обеспечить системную синхронизацию доступа ко всем ресурсам SMBus.

♦ Гарантировать соответствие интерфейса версиям 1.0 и 1.1 спецификации SMBus и возможности его расширения для поддержки новых свойств в будущих версиях.

Для успешного функционирования системы требуется поддержка соответствующими драйверами операционной системы. Для управления питанием форум разработчиков «интеллектуальных» батарей — Smart Battery System Implementers Forum (SBS-IF) — разработал спецификацию драйверов для ОС Windows 9x/2000, с которой можно ознакомиться на сайте http://www.sbs-forum.org/smbus/.

Рассмотрение программного интерфейса CMI выходит за рамки данной книги. Отметим лишь, что коды протоколов SMBus, используемые в CMI, отличаются от кодов, используемых в SMBus BIOS. Те же протоколы, но с байтом PEC, кодируются с единицей в старшем бите (значение увеличено на 80h).

11.1.4. Сравнение шин I²C, ACCESS.bus и SMBus

Как видно из вышеприведенных описаний, все эти три шины являются «близкими родственниками»; однако они имеют ряд электрических, конструктивных и протокольных отличий.

Электрический интерфейс шин (табл. 11.5) достаточно близок, и при обычном (5 В) питании схем проблем совместимости не возникает (Vdd — напряжение питания).

Таблица 11.5. Электрические параметры шин I²C, ACCESS.bus и SMBus

Параметр I²C ACCESS.bus внешняя ACCESS.bus внутренняя SMBus мощная SMBus маломощная
Входной уровень лог. 0, не более 1,5 В или 0,3 Vdd 0,3 Vdd 0,3 Vdd 0,8 В 0,8 В
Входной уровень лог. 1, не менее 3,0 В или 0,7 Vdd 0,7 Vdd 0,7 Vdd 2,1 В 2,1 В
Выходной уровень лог. 0, не более 0,4 В или 0,2 Vdd при Vdd<2 В 0,6 В 0,6 В 0,4 В 0,4 В
Выходной ток лог. 0, мА 3 6 0,35 4 0,35
Максимальная емкость линии шины, пФ 400 1000 –¹ 400 400
Частота, КГц 0-100, 0-400, 0-3400 0-100 0-100 10-100 10-100

¹ Вместо емкости задаются допустимые длительности фронтов и спадов.

Конструктивно выделяется шина ACCESS.Bus (внешняя), в которой определены разъемы и кабели, а также питание (5 В) устройств от шины; в других — нет.