25, Sep, 2024
29 Views
Comments Off on Шина SMBus
0 0

Шина SMBus

Written by

Шина SMBus (System Management Bus шина системного управления) является двухпроводным интерфейсом для обмена данными между микросхемами различных системных компонентов компьютера а также связи их с самим компьютером. Основное назначение интерфейса управление подсистемой питания, мониторинг оборудования и сопутствующих подсистем.

Особенности шины SMBus
Шина SMBus создана на базе известного последовательного интерфейса 12С, эти две шины хотя и являются “близкими родственниками”, но однако они имеют ряд электрических, конструктивных и протокольных отличий. Электрический интерфейс шин (табл. 1) достаточно близок, и при обычном (5 В) питании схем проблем совместимости по электрическим сигналам не возникает.

Протокольные различия более существенны. В обоих шинах ведущее устройство может и принимать и передавать данные. В SMBus ведущее устройство не имеет права повторного захвата шины ранее, чем через 50 мкс после начала передачи. Сигнал SCL в этой шине может удерживаться на низком уровне не дольше 2 мс. В шине SMBus ведущее устройство ожидает от ведомого устройства немедленного ответа. В шине SMBus и ведущее устройство, и ведомое устройство могут притормаживать обмен на уровне приема битов, что позволяет им вписываться в свои временные диаграммы (успевать “просыпаться”. обрабатывать прерывания).


Первая версия спецификации SMBus вышла в 1995 году, следующая версия 1.1-в 1998 году, а версия 2.0 вышла в 2000 году Документ “System Management Bus (SMBus) Specification Version 2.0″. выпущен форумом разработчиков систем с интеллектуальными батареями. в который входит большое число производителей источников питания, а также фирма Intel. Спецификация покрывает три нижних уровня модели взаимодействия открытых систем (OSI). от физического до сетевого (рис. 1).
В шину введена возможность динамического реконфигурирования (подключения и отключения абонентов шины в процессе работы) и автоматического назначения адресов устройств. По сравнению с шиной 12С в шине несколько изменены граничные требования к уровням сигналов и временным диаграммам, но в основном они совпадают. Шина позволяет реализовать все режимы обменов, разрешенные для I2C. но имеет нюансы в правилах генерации подтверждений. Для шины SMBus в BIOS имеется стандартизованная поддержка. Особенностью шины SMBus. связанной с ее ролью в управлении системой питания. является способность автономной работы (соединяемые шиной устройства могут обмениваться информацией, даже когда питание на центральном процессоре и других подсистемах отсутствует). Конечно, о взаимодействии с устройствами шины через программы BIOS в таком состоянии нет и речи, поскольку процессор ’спит” и не выбирает команды.


На физическом уровне (1-м уровне OSI) спецификация определяет электрические и временные параметры сигналов. По уровням сигналов (и нагрузочной способности) имеются две различные спецификации. Маломощная (lowpower) спецификация соответствует “родному” применению SMBus в устройствах с батарейным питанием; здесь характерны малые токи. Мощная (high power) спецификация предназначена для работы абонентов SMBus в окружении источников значительных помех (например, на плате РС1). Маломощные и мощные устройства на одной шине вместе работать в общем случае нс смогут, но это и не требуется. При необходимости совместного использования устройств разных классов организуются разные сегменты шины, соединенные мостом.

В спецификациях временных параметров приняты меры по ограничению времени отклика и предотвращению “зависания” шины. Частота тактового сигнала ограничена и снизу (10 кГц), и сверху (100 кГц). Введены ограничения на максимальную длительность нахождения синхросигнала в высоком и низком состоянии и максимальную суммарную “растяжку” битовых интервалов на каждый байт. Предусматривается механизм тайм-аутов, по которому устройства, обнаружившие “зависание” шины, должны немедленно прекратить обмен и повторно инициализироваться.
В случае, когда ведущим устройством шины собирается выступать рядовое устройство (не хост), оно должно использовать протокол уведомления хоста (SMBus host notify protocol). Устройство на адрес хоста с RW-0 (он известен) посылает байт с собственным адресом, за которым следует слово (два байта) собственно уведомления. Хост обязан понимать эти уведомления. но дополнительно может использоваться и необязательный сигнал внимания SMBALERT# (см. ниже).
На шине SMBus могут использоваться дополнительные аппаратные сигналы. Например. сигнал SMBSUS# инициирует приостанов шины и устройств – этот сигнал вырабатывается устройством управления питанием. Во время его активности (активный – низкий уровень) сигналы SDA и SCL штатным образом не воспринимаются (но они могут использоваться для уточнения режима приоста-нова). Сигнал SMBALERT# (см. рис. 2) служит для оповещения ведущего устройства о необходимости обмена с ведомым устройством. не имеющим возможности выступить в роли ведущего устройства. Этот сигнал собирается по схеме “монтажное И от всех устройств. Получив сигнал SMBALERT#. хост должен дать команду чтения байта по адресу 0001 100. на которую просигналившее устройство, должно ответить байтом со своим адресом. кроме того, возможен вариант и с дополнительно выданным байтом контроля РЕС).
На уровне связи (2-м уровне OSI) определяются те же правила передачи данных, что и в I2C:
– условия S. Р. Sr;
– биты подтверждения;
– 7-битная адресация;
признак RW в первом байте, следующем за условием S (Sr). На рис. 6 показано подключение уст ройств к тине SMBus, параметры сигналов, временная диаграмма и протоколы обмена.
Как и в 12С. ведущее устройство на SMBus может выполнять и запись, и чтение данных ведомого устройства, кроме того используются и комбинированные транзакции (через условие Sr). В генерации подтверждений на SMBus есть особенности. На собственный адрес устройство всегда должно отвечать битом подтверждения АСК. даже если оно занято внутренними операциями. Это правило обеспечивает работу механизма определения присутствия данного устройства на шине. Ведомое устройство может вводить бит NACK в ответ на любой неадресный байт, если оно занято или запрашиваемые командой данные недоступны. В этом случае у него есть и альтернатива поведения – задержать синхросигнал на низком уровне (в разрешенных пределах). Ведомое устройство должно вводить бит NACK в ответ на недопустимые коды команд или данных. Ответ NACK вы нуждает ведущее устройство прекратить транзакцию (ввести Р). Ведущее устройство, будучи при емником, ответом NACK информирует передатчик о приеме последнего ожидаемого байта.
Сетевой уровень во многом определяет особенности шины SMBus.


Сетевой уровень SMBus (3-й уровень OSI)
В шине SMBus введено понятия “хоста” (host) -абонента шины, выполняющего координирующие и конфигурирующие функции. Хост является ведущим устройством шины, при этом должен выполнять ряд функций ведомого устройства и отрабатывать сообщения уведомления. Каждое ведомое устройство имеет свой уникальный адрес; в диапазоне 7-битных значений адреса выделяются специальные значения (табл. 2), которых несколько больше, чем в FC (10-битная адресация в текущей версии не рассматривается). Адреса устройств разделяются по типам. Для устройств однозначно определяемых в назначении. SMBus WG выделяет специальные адреса (Purpose-assigned addresses). Устройства с этими адресами обязаны соответствовать требованиям SMBus, предъявляемым к устройствам данного класса. Ряд систем с SMBus определяют и используют эти устройства, основываясь на их адресе. Другие системы могут и не доверять одному только адресу, а определять типы присутствующих устройств иным образом. Для устройств разнообразного назначения, а также устройств, не полностью отвечающих спецификациям SMBus для своего класса, производители назначают иные адреса. В спецификации SMBus 2.0 появилась возможность автоматичес кого динамического назначения адресов устройств.


Типичное устройство SMBus поддерживает определенный набор команд, с помощью которых выполняется обмен данными. Команда кодируется одним байтом, передаваемым в транзакции вслед за адресным байтом. Команды могут использовать один из 11 протоколов, определенных в SMBus. В версии 1.1 спецификации SMBus вве дена возможность контроля ошибок пакета РЕС (Packet error checking). Механизм РЕС основан на добавлении в конец каждого передаваемого пакета байта CRC-кода, вычисляемого по всем предыдущим байтам пакета, начиная с адресного. Почти все протоколы могут иметь два варианта – без РЕС и с РЕС. На одной шине могут присутствовать устройства и с поддержкой РЕС. и без. На байт РЕС приемник отвечает подтверждением, но трактовка ответа неоднозначна. Если передатчик в ответ на РЕС получил ответ NACK, это означает, что приемник не подтвердил корректный прием пакета. Однако ответ АСК не является подтверждением достоверности приема, так- как приемник может “не понимать” РЕС и отвечать на него как на обычный байт данных Приемник может и не выполнять контроль в реальном времени приема потока данных. Достоверный контроль могут обеспечить лишь протоколы высших уровней. Так. например, для контроля достоверности зали си в устройство можно использовать последующее чтение тех же данных с РЕС. и по анализу всего принятого пакета ведущее устройство сделает вы вод об успешности или ошибке операции записи. Шинные протоколы SMBus основаны на транзакциях I2C с 7 битной адресацией
Quick Command. короткая команда. посыл ка адресного байта: действие команды опредсля ется битом RW адресного байта.


Send Byte, посылка байта. – передача ведущим устройством вслед за адресным байтом (RW=O) одного байта данных В варианте с РЕС передаются два байта, последний РЕС.
Receive Byte, прием байта. • прием ведущим устройством вслед,за адресным байтом (RW-1) одного байта данных. В варианте с РЕС принимаются два байта, последний РЕС
Write Byte, Write Word, запись банта/слова, -передача ведущим устройством вслед за адресным байтом (RW=O) одного байта команды, за ко торым следует 1 или 2 байта (младший, а затем старший) данных. В варианте с РЕС в конец до бавляется контрольный байт.
Read Byte. Read Word, чтение байта/слова, -комбинированные транзакции:
сначала посылается адресный байт (RW=O). за которым передается код команды. Далее, через условие S посылается адресный байт с тем же адресом устройства, но RW«1. после которого принимается 1 или 2 байта данных В варианте с РЕС r конце ожидается прием дополнительного (контрольного) байта.
Block Write, запись блока. – передача ведущим устройством вслед за адресным байтом (RW=O) одного байта команды, за которым следует байт указатель длины (количество последующих байт) и собственно байты данных. В варианте с РЕС в конец добавляется контрольный байт. Указатель длины нс учитывает байт РЕС: он нс может быть нулевым: одной блочной командой можно пересылать до 32 байт данных
Block Read, чтение блока, – комбинирован ная транзакция: сначала посылается адресный байт (RW-0). за которым передастся код команды. Далее, через условие S посылается адресный байт с тем же адресом устройства, но RW= ]. после кото рого принимается байт указатель длины, а за ним и собственно байты данных. В варианте с РЕС в конце ожидается прием дополнительного (контрольного) байта. Указатель длины – аналогично блочной записи.
Process Call, вызов процесса, – комбинация команды Write Word с приемом слова (двух байт) от устройства с тем же адресом. Команда называется вызовом процесса, поскольку ожидает данных, зависящих от посланного кода команды и слова данных. В варианте с РЕС контрольный байт ожидается только в самом конце, вслед за последним байтом принятых данных.
Block. Write Block Read Process Call – комбинация записи блока с последующим чтением блока по тому же адресу устройства. В варианте с РЕС контрольный байт ожидается только в самом конце, вслед за последним байтом принятых данных.
Динамическое реконфигурирование шины SMBus возможность ■горячего” отключения/отключения основано на базовых принципах протокола PC. Автоматическое назначение адресов, появившееся в версии 2.0. использует еще и контрольные байты пакетов (РЕС). Задача динамического реконфигурирования включает распознавание фактов подключения/отключения устройств и обеспечение бесконфликтно го распределения их адресов. Подключение новых устройств может распознаваться двумя способами. Устройство, которое может работать ведущим устройством. при подключении (после своей инициализации по включению питания) может послать хосту уведомление, содержащее его адрес. Другой вариант обнаружения – периодический опрос устройств ведущим устройством, ведающим переучетом” всех устройств на шине.
Для динамического бесконфликтного назначения личных адресов устройств используется протокол ARP (Address Resolution Protocol). Назначение адресов основано на стандартном механизме арбитража (разрешения конфликтов) шины SMBus (и 12С). Назначенный адрес запоминается устройством на все время, пока подано питание. Возможны и устройства PSA (Persistent Slave Address), вспоминающие” ранее назначенный адрес после повторного включения питания. После назначения адреса обмен с устройством выполняется точно так же. как и с устройством с фиксированным адресом. Назначение адресов может выполнять любое ведущее устройство шины SMBus.
Для динамического назначения адреса требу
ется изоляция устройств (рис. 8) – возможность диалога ведущего устройства-нумератора с каждым устройством без помех со стороны других устройств (типичная задача настройки системы Р&Р). Изоляция основана на уникальном идентификаторе устройства UDID (Unique Device Identifier) – 128-битной структуре, содержащей описание возможностей, версию, идентификаторы производителя, устройства, подсистемы и спе цифическую информацию. Идентификатор начинается с байта возможностей (Device Capabilities), в котором два старших бита характеризуют способности динамической адресации, а младший бит – поддержку РЕС. Чтение идентификатора выполняется ведущим устройством ARP по протоколу блочного чтения по ‘дежурному” адресу SMBus. На это чтение отзываются все устройства с еще не назначенными адресами, и на арбитраже этой операции работает изоляция устройств. Пер вый считанный байт (указатель длины) у всех устройств одинаков, по нему конфликтов нет. Далее устройства передают идентификаторы, и в арбитраже будут иметь приоритет те устройства, у которых нулевое значение бит данных встретится раньше. С учетом этого принята кодировка классов устройств, которая указывает класс в старших битах первого байта идентификатора:
00 – устройства с фиксированными адресами, идентифицируются в первую очередь:
01 – динамические устойчивые (persistent) адреса устройств PSA:
10 – динамические изменчивые (volatile) адреса;
11 – устройства со случайными номерами, идентифицируются в последнюю очередь.
Младший бит этого байта указывает на поддержку РЕС и всех возможностей, основанных на идентификаторе. При нулевом значении этого бита о поддержке РЕС ничего определенного сказать нельзя.
Последний элемент UDID – 32-битный идентификатор устройства, играющий важную роль в распознавании похожих устройств Это может быть либо число, назначаемое изготовителем (отвечающим за его неповторимость), либо случайное число, генерируемое (и запоминаемое) устройством каждый раз при включении или выполнении команды сброса.
Устройство, поддерживающее АКР. должно иметь специальные флаги:
AR (Address Resolved) – данному устройству процедурой АКР назначен адрес;
AV (Addres Valid) – устройство имеет действительный личный адрес, на который оно отзывает ся в обычных транзакциях (при AV=0 устройство должно игнорировать все адреса, кроме дежурного”).
При AV-AReO устройство не имеет личного адреса и должно участвовать в процессе ARP (отвечать на общий опрос идентификатора). При AV-1 и AR=0 устройство имеет личный адрес, но должно участвовать в ARP. При AV-AR»! устройство имеет личный адрес, но не должно отвечать на общий запрос идентификатора. При этом оно должно отрабатывать адресованную ему команду назначения адреса (и впоследствии пользоваться новым назначенным адресом). Комбинация AV=€) и AR=1 недопустима.
Для протокола ARP введены специальные команды.
Get UDID(general) • общий запрос идентификатора – команда чтения блока данных с адресом 1100 001 и кодом команды 3. На нес устройства, поддерживающие ARP. отвечают посылкой блока с длиной 17 байт, сопровождаемого РЕС. Первые 16 байт блока – UDID. 17-й байт – адрес устройства (с единицей в младшем битс) Если у устройства флаг AV=0. оно вместо адреса передает код “НИ 111. Команда нс влияет на флаги AV и AR.
Assign address – назначить адрес – команда записи блока данных с адресом 1100 001 и кодом команды 4 и длиной 17 байт, сопровождаемого РЕС Первые 16 байт блока – UDID. 17-й байт –
назначаемый адрес устройства (младший бит игнорируется). По этой команде устройство, обнару жившее полное совпадение UD1D. со своим собственным. устанавливает флаги AV=-AR=1.
Get UDID (directed) – направленный запрос идентификатора – команда чтения блока данных с адресом 1100 001. в поле кода команды находится адрес интересующего устройства с единицей в младшем бите. Па нее отвечает только устройство. опознавшее свой адрес в поле команды, и отве чает посылкой блока с длиной 17 байт, сопровож дасмого РЕС. Первые 16 байт блока • UDID, 17-Й байт – адрес устройства (с единицей в младшем бите). Команда не влияет на флаги AV и AR.
Reset device (general)- общий сброс устройства – посылка по адресу 1100 001 бай га команды с кодом 2. сопровождаемого байтом РЕС. По этой команде все устройства инициализируются и обнуляют флаги AR и AV (PSA-устроЙства флага AV не изменяют).
Reset device ARP (directed) – направленный сброс устройства – посылка по адресу 1100 001 байта с адресом целевого устройства (с нулем в младшем битс), сопровождаемого байтом РЕС. По этой команде выбранное устройство инициализируется и обнуляет флаги AR и AV (PSA-устройства флага AV нс изменяют)
Notify ARP master – уведомление ведущего устройства ARP – посылка на адрес 0001 000 байта с ’дежурным” адресом 1100 0010. за которым следуют два байта нулей Устройство может посылать это уведомление о необходимости выполнения ARP при включении питания, а также при обнаружении коллизии в процессе выполнении чтения данных по индивидуальному адресу устройства. На каждый байт команд. ARP-устройства, поддерживающие этот протокол, отвечают подтверждением АСК. Отсутствие подтверждений трактуется ведущим ARP устройством как отсутствие ARP ус тройств на шине. “Переучет” и назначение адресов вкратце выглядит следующим образом: ведущее ARP устройство выполняет команду общего запроса идентификатора и ио ней получает UD1D и. возможно, адрес первого “победителя” в арбитраже Далее этому победителю назначается личный адрес – тот же или по усмотрению ведущего ARP устройства. после чего он уже не участвует в арбитраже по общему запросу. Сведения об устройстве и его адрес, “ведущим” ARP-устройством заносятся в таблиц}’ устройств. После этого общий запрос и назначение адреса повторяются снова и снова, пока все ARP-устройства не будут удовлетворены. Признаком общего удовлетворения’ для ведущего ARP-устройства будет отсутствие подтверждении приема команд общего запроса.


Шина SMBus сразу получила спецификацию ее поддержки на уровне BIOS. Позже появились спецификации. позволяющие интегрировать устройства SMBus в систему ACPI. Еще в 1995 г. была опубликована спецификация интерфейса SMBus BIOS System Management Bus BIOS Interface Specification. Интерфейс позволяет верхним уров ням программного обеспечения абстрагироваться от аппаратной реализации хост контроллера. Поддержка BIOS обеспечивается для трех типов режимов работы процессора реального (и V86). защищенного 16-разрядного и защищенного 32 разрядного. Вызов функций может выполняться либо через BIOS Int 15h (в реальном режиме и в V86). либо через гочку входа, полученную при подключении в соответствующем режиме. Для подключения (и отключения) также используется сервис BIOS Int 15h. После подключения доступ через Int 15h блокируется (до отключения) В защищенном режиме вызов интерфейсных функций возможен только через точку входа, полученную при подключении. Поддержка точки входа для реального режима необязательна.
Спецификация SMBus BIOS обеспечивает хост-центрическое обращение к абонентам шины. По инициативе вызывающей программы хост контроллер посылает устройству команду, которая может предполагать и немедленный ответ устройства. Однако устройства могут посылать хосту сообщения по собственной инициативе. при этом они обязаны использовать протокол Write Word. Хост способен помещать принятые сообщения в небольшую очередь, из которой они могут программно извлекаться путем вызова функ ции 7 (программа должна периодически выполнять этот вызов для проверки наличия сообщений в очереди). В очереди каждое сообщение представлено байтом адреса источника и парой байт тела сообщения.


Шина SMBus тесно связана с оборудованием, управляющим питанием и участвующим в генерации запросов системного прерывания SMI (System Management Interrupt – особое аппаратное прерывание процессора) и их обработки. Из-за этого в BIOS введен специальный механизм, позволяющий обнаружить обработку SMI во вре мя выполнения транзакций и в иное время. Это необходимо, поскольку обработчик SMI. работающий в режиме SMM. совершенно невидим прикладной программе, а результаты его работы могут существенно влиять на работу программы, вызывающей BIOS SMBus. Функции общих обращений к SMBus:
SMBus Installation Check (01 h) – проверка наличия функций:
SMBus Real Mode Connect (0211) – подключение в реальном режиме:
SMBus 16-В11 Connect (03h) – подключение в 16-битном защищенном режиме;
SMBus 32-В11 Connect (04h) подключение в 32 битном защищенном режиме;
SMBus Disconnect (05h) – отключение от серви
са;
SMBus Device Address (06h) – получение списка адресов устройств SMBus.
SMBus Critical Messages (07h) – чтение сообщений устройств, переданных хосту.
Для взаимодействия с конкретными устройствами SMBus предназначен набор функций, позволяющих генерировать запросы протокольных команд SMBus и получать результаты их выполнения. Функции запросов и получения ответов разделены. что позволяет на время выполнения (и передачи) довольно длительных команд не занимать время центрального процессора Большинство протокольных команд вводится за один вызов BIOS; исключение составляет команда записи блока, данные для которой передаются за один или более последующих запросов продолжения. Результаты большинства команд также принимаются за один вызов. Результат чтения блока получается за несколько вызовов продолжения. Вызо вы протокольных команд устройств SMBus:
SMBus Request (10h) – запрос команды устройству;
SMBus Request Continuation (llh) – продолжение запроса для записи блока;
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 г. Поддержка BIOS позволяет легко использовать все возможности SMBus независимо от происхождения или особенностей реализации оборудования. Обеспе чивает эффективный и надежный интерфейс ACPI для аппаратных средств хост контроллера независимо от его реализации (со встроенным микроконтроллером или без него). Обеспечивает системную синхронизацию доступа ко всем ресурсам SMBus. гарантирует соответствие интерфейса версиям 1.0 и 1.1 спецификации SMBus и воз можности его расширения для поддержки новых свойств в будущих версиях.
Для успешного функционирования системы требуется поддержка соответствующими драйверами операционной системы. Для управления питанием форум разработчиков разработал спецификацию драйверов для ОС Windows 9х/2000.

Сервисный центр 2002-09

Article Tags:
Article Categories:
Hardware · Wiki

Comments are closed.