Информационные технологииStfw.Ru 🔍
🕛

Централизованное управление шиной USB

Управление шинойИсторию USB повидимому можно отсчитывать от ноября 1994, когда быля создана версия 0.7 спецификации, но сегодня широкому кругу потребителей знакомы устройства совместимые со
Историю USB повидимому можно отсчитывать от ноября 1994, когда быля создана версия 0.7 спецификации, но сегодня широкому кругу потребителей знакомы устройства совместимые со спецификациями USB1.0 и USB2.0, первая была принята в качестве промышленного стандарта в 1995 году.
Шина USB изначально была ориентирована на использование совместно с компьютером (она и задумывалась как замена Serial и LPT портам). Это означает что к шине подключен один единственный компьютер, который отвечает за все процессы управления шиной, а все устройства являются лишь "пассивными исполнителями его воли". Поэтому следует различать интерфейы USB хоста и USB устройства. Поток управления всегда направлен от компьютера к одному или нескольким устройствам, подсоединенным к шине. И даже в том случае когда используется устройство которое якобы соединяет 2 компьютера по USB (подобно тому как это можно сделать при помощи последовательных портов) на самом деле с точки зрения каждого компьютера имеется единственное USB устройство в котором "неизвестно откуда" появляются данные, находящиеся в другом компьютере.
В задачу центрального узла USB шины (хоста) входит: определение топологии дерева подключенных устройств (в вершине дерева всегда находится хост), распределение адресов между обнаруженными устройствами, управление распределение электроэнергии (которая может подаваться к устройствам через шину), арбитраж шины, выработка тайм-слотов и переодичексий опрос устройств, управление ресурсом пропускной способности шины (полосы) и распределение ее между устройствами и.т.д.
USB устройства могут иметь собственный источники питания вне шины, в этом случае согласно пункту 7.2.1 спецификации USB версии 1.0 (принятой в начале 1996 года) такие устройства не должны пытаться передать часть энергии в шину для питания других устройств. Это как раз связано с тем, что управление питанием USB строго централизовано и может обеспечивать режимы полного или частичного выключения питания отдельных ветвей дерева USB устройств. Частичное исключение составляют HUB-ы, имеющие собственный источник питания, они могут подавать питающее напряжение вних по шине в сторону противоположную от хоста. Тем не менее они тоже должны строго следовать командам, получаемым от хоста и отвечающим за управление питанием.
После включения компьютера его хост-устройство последовательно обнаруживает все USB устройства, составляет топологическую схему дерева, сообщает устройствам их адреса, и начинает в течении интервала времени тайм-слота опрашивать все активные устройства.
Характерно то, что благодаря асимметричности разъемов USB кабелей, практически невозможно подключить устройства так, что нарушится однонаправленная структура дерева устройств (пункт 6.1 спецификации USB1.0). Благодаря тому, что HUB-ы должны иметь неотключаемый кабель с коннектором вилка типа "А" на конце, невозможно создать "закольцованное" дерево. Однако если найдется комбинация устройств (например с использованием устройства для USB связи между двумя компьютерами и HUB-a) то такое закольцовывание окажется возможно. Шина USB не приспособлена для работы в таких конфигурациях, и естественно возникнут проблемы в ее работе, впрочем на практике вряд ли кому-либо придет в голову собрать подобное.
Тем не менее сходная проблема вполне жизненна в отношении шины Fire Wire (в силу симметричности разъемов на кабелях), и мы собираемся здесь ее рассмотьреть.

Также по теме:
Новые программы для Windows, Linux и Android.