Спецификация 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 В) устройств от шины; в других — нет.