Руководство по проектированию драйвера простой периферийной шины (SPB)

В этом разделе описывается, как написать драйвер для устройства контроллера простой периферийной шины (SPB) или для периферийного устройства, подключенного к SPB. Категория SPB включает автобусы, такие как I²C и SPI. Поставщик оборудования для устройства контроллера SPB предоставляет драйвер контроллера SPB для управления аппаратными функциями в контроллере. Этот драйвер может поддерживать семейство аналогичных устройств контроллера. Поставщик оборудования для периферийного устройства, подключенного к SPB, предоставляет драйвер периферийных устройств SPB для управления аппаратными функциями на периферийном устройстве. Этот драйвер может поддерживать семейство периферийных устройств на различных аппаратных платформах, которые предоставляют совместимые spb.

В версиях Windows до Windows 8 операционная система получала информацию от устройств, подключенных к SPB, на системной плате пк только косвенно через встроенное ПО платформы. Начиная с Windows 8, поставщики оборудования могут предоставлять драйверы Windows для непосредственного управления контроллерами SPB и периферийными устройствами, подключенными к SPB, и сделать эти устройства доступными для использования операционной системой и приложениями. Дополнительные сведения см. в разделах Драйверы контроллера SPB и Драйверы периферийных устройств SPB.

SpB часто используются для подключения низкоскоростных периферийных устройств к микросхемам системной платы и модулям Системы на микросхеме (SoC). Для подключения к последовательной шине интегрированной цепи требуется меньше контактов, чем к параллельной шине, которая передает несколько битов данных за тактовой цикл. Как правило, spb используются в приложениях с учетом затрат, в которых низкое количество контактов и простые подключения важнее скорости передачи данных. Так как SPB работают на низкой скорости и требуют мало электрических подключений, они часто используются в приложениях, в которых требуется экономия заряда батареи.

Например, системная плата компьютера на ноутбуке может использовать шину I²C для связи с низкоскоростным устройством, которое отслеживает уровень заряда батареи. Аналогичным образом модуль SoC на смартфоне или другом мобильном устройстве может использовать шину I²C для подключения к устройству датчика, например акселерометру, gps-устройству или датчику температуры.

SPB не является Plug and Play шиной. Периферийные устройства обычно имеют фиксированные подключения к SPB и не могут быть удалены. Даже если периферийное устройство может быть отключено от слота на SPB, слот обычно выделяется для этого устройства. Во время запуска системы встроенное ПО ACPI на аппаратной платформе перечисляет подключенные к SPB периферийные устройства для диспетчера Plug and Play и указывает аппаратные ресурсы, выделенные для каждого устройства.

В эти ресурсы входит идентификатор подключения, который идентифицирует подключение устройства к SPB. Идентификатор подключения инкапсулирует сведения (например, адрес шины и частоту шины), необходимые контроллеру SPB для подключения к устройству. Другие аппаратные ресурсы могут включать прерывание, к которому драйвер подключает свой ISR. Однако аппаратные ресурсы для устройства не включают память для регистров устройств. Периферийное устройство, подключенное к SPB, не сопоставлено в памяти и доступно только через SPB. Дополнительные сведения см. в статье Идентификаторы подключений для SPB-Connected периферийных устройств.

SpB не предоставляет средства передачи запросов прерываний от периферийных устройств к процессору, зависящих от шины. Вместо этого периферийное устройство, подключенное к SPB, сигнализирует о прерывании через отдельный аппаратный путь, который находится за пределами контроллера SPB и SPB. Подпрограмма обслуживания прерываний (ISR) для подключенного к SPB периферийного устройства должна выполняться по адресу IRQL = PASSIVE_LEVEL, чтобы он смог синхронно отправлять запросы ввода-вывода для последовательного доступа к аппаратным регистрам устройства через SPB. Дополнительные сведения см. в статье Прерывания с SPB-Connected периферийных устройств.