Статьи и документация


15.06.2009, 08:35. Хост инициирует передачу данных устройствам (OUT) или от устройств (IN) при помощи специального пакета, называемого Token-пакет. Этот пакет содержит адрес устройства которое должно получить или передать данные и номер логического канала (endpoint-a) внутри этого устройства. Устройство может подтвердить готовность при помощи пакета АСК (acknowledge) или сообщить хосту том, что оно еще не готово для передачи или приема очередного пакета. В случае если требуется получить данные от устройства (IN-транзакция), хост может попытаться сделать это еще раз позднее. При передаче данных от хоста к устройству (OUT-транзакция) если по причине неготовности принять данные устройство вернет NACK, хост должен будет повторить псосылку пакета через некоторое время. В случае USB1.0 если устройство окажется неготово несколько раз подряд, каждый раз хост будет передавать последний непринятый этим устройством пакет, тем самым занимая время от таймслота, которое могло бы быть использовано для связи с другим устройствами! В USB2.0 эта проблема решается при помощи Ping-пакетов, позволяющих узнать готово ли устройство к приему данных для выбранного логического канала без передачи самих данных. Эта особенность относится в первую очередь к асинхронной передаче bulk, для изохронной передачи (isochron) в силу того, что нет подтверждения передачи (handshake) подобная ситуация возникнуть не может.
Низкоскоростные устройства (low speed 1.5Mbit/sec) могут использовать только control и interrupt транзакции, которые в целом ведут себя аналогично OUT и IN транзакциям типа bulk. При передаче пакетов для более быстрых устройств (full speed USB 1.0 и high speed USB2.0) HUB-устройства не передают эти пакеты через порты, к которым подключены low speed устройства. При этом когда передаются данные для самих low speed устройств в составе пакетов используется еще специальный префикс, позволяющий HUB-ам определить что пакет следует ретранслировать на низкой скорости.
Подтверждение передачи происходит при помощи handshake пакетов: АСК, NACK, STALL. Хост никогда не может послать устройству NACK, вместо этого он просто не посылает никакого handshake пакета! Устройство может вернуть пакет STALL если произошла ошибка, требующая вмешательства хоста для переинициализации какого-либо ресурса в этом устройстве, связанного с логическим каналом в устройстве, для которого предназначался пакет.


15.06.2009, 08:35. Передача всех пакетов по шине USB, как уже говорилось, происходит по команде хоста, начало каждого таймслота, называемого frame, маркируется посылкой хостом специального пакета SOF (statrt of frame). Подключенные к шине устройства могут использовать SOF для коррекции свомх внутренних часов. Длительность таймслота (фрейма) USB1.0 составляет 1 миллисекунду, таймслоты USB2.0 принято называть микрофреймами (microframe), их длительность составляет 125 микросекунд. Для достижения совместимости обоих стандартов HUB-устройства USB2.0 и используют механизм конверсии транзакция при передаче данных между хостом и устройствами USB1.0 (то есть устройствами использующими скорости low spee и full speed).


15.06.2009, 08:34. В результате процедуры Tree identification происходит локальное определение топологии шины, то есть устанавливаются связи соседних узлов и ля каждого узла задается направление к вершине дерева в сторону одного из соседних узлов.


15.06.2009, 08:33. При передаче сигналов по шине IEEE 1394 все устройства используют механизм арбитража, реализованный на аппаратном уровне. Таким образом достигается разделение между ними проводного канала связи по времени.


15.06.2009, 08:31. В отличие от USB шина IEEE 1394 не имеет заранее выделенного управляющего узла и функции такового после того как шина окажется сконфигурированной могут быть распределены между несколькими устройствами на шине. Важно отметить то, что в случае отсутствия устройств,
способных выполнять некоторый функции сама шина останется работоспособной, но эти функции останутся недоступными. Так же важен то факт что любое подключение или отключение устройства способно разрешить или наоборот запретить выполнение той или иной функции каким-либо из подключенных устройств. Поэтому шина должна автоматически перераспределить функции управления ей самой между имеющимися устройствами.


15.06.2009, 08:30. В отличие от USB, шина FireWire проектировалась как шина для объединения потенциально равноправных устройств ни одно из которых изначально не является выдкленным устройством - компьютером с большим количеством памяти, высоким быстродействием способным взять на себя все функции по управлению ниной (хотя в настоящее время к FireWire можно подключить несколько компьютеров одновременно). Шина должна была обеспечивать высокие скорости, достаточные для передачи по ней аудио и видео потоков данных. Именно эти ее свойства и стали причиной того, что FireWire получила столь широкое распространение в мире любительских и профессиональных видеокамер Sony. А способность транслировать изображение на несколько принимающих устройств одновременно, не занимая для каждого из них дополнительной полосы пропускания сделали FireWire поистине уникальным решение для передаче телевизионных и других видеосигналов между устройствами цифровой видеостудии.


15.06.2009, 08:27. Управление шиной


15.06.2009, 08:26. В силу того, что FireWire изначально проектироваласть как шина для передачи видео и аудиопотоков между различными устройствами независимо от наличия компьютера, в настоящее время количество существующих устройств использующих изохронную передачу данных по этой существенно больше чем количество таковых для USB. К числу таких устройств относятся например видеокамеры производства Sony (некоторые из которых мы собираемся описать более подробно в следующих главах), некоторые устройства сбора данных например производства московской фирмы ЗАО "Инструментальные системы". Последние могут быть интересны специалистам в области промышленных и научных измерений, а так же систем связи.

Изохронная передача по USB до сих пор считается "не тривиальным делом" на уровне ПО. И до сих пор USB устройства не всегда используют ее в тех случаях когда это было бы логично. Примером тому в частности могут служить столь распространенные WEB-камеры Logitech QuickCam, а так же некоторые CD/DVD RW производства Sony. Те и другие используют асинхронный режим передачи данных. В случае с \¥ЕВ=камерами это вобщем-то оправданное упрощение конструкции в силу того, что WEB-камеры как правило работают в условиях довольно медленной связи по интернет и речь о каком-то realtime как правило не идет. В случае же с устройствами записи на оптичиские диски при некоторых учловияхиспользование асинхронной передачи может быть причиной того, что устройство не успеет вовремя получить от компьютера необходимый объем данных и оптический носитель информации (так называемая "болванка") может быть безвозвратно непрочен. Решением проблемы в этом случае может быть программное переключение устройства в режим когда процесс записи будет осуществляться на более низкой скорости. Подобная неприятная ситуация может возникнуть как в случае чрезмерной загруженности шины USB другими устройствами, так и в случае когда host-контроллер USB компьютера является недостаточно быстрым так как соответствует более ранней спецификации USB1.0 или USB1.1.
В случае если бы устройство использовало изохронную передачу, то подобная ситуация не могла бы иметь место в силу того что шина просто не смогла бы сконфигурировать устройство для для работы со скоростью изохронной передачи необходимой для слишком высоких скоростей записи на оптичекий диск, таких что скорость подкачки по шине была бы недостаточной. Шина автоматически бы обнаружила нехватку полосы пропускания для передачи с высокой скоростью.
Положение с изохронной передачей вероятно изменится когда большее распространение получит скоростная шина USB2.0. В настоящее время многие выпускаемые компьютеры комплектуются host-контроллером USB2.0, однако число устройств, поддерживающих работу по USB2.0 невелико по сравнению с числом таковых для USB 1.0.


15.06.2009, 08:23. В отличие от USB разъемы и кабели FireWire могут как иметь провода для передачи питающего напряжения по шине так и не иметь их. В случае если провода для передачи питания имеются их общее количество составляет 6 (а не 4 как для USB). Аналогично, два провода предназначены для передачи питающего напряжения и четыре провода предназначены для передачи сигналов. Шестипроводные разъемы имеют размеры примерно 5.5 на 11 миллиметров, четырехпроводные примерно 5.5 на 3.5 миллиметров.

Четыре сигнальных провода объединены по два и носят названия ТРА и ТРВ (Twisted pair А и В соответственно). При передаче устройства используют ТРА для передачи дифференциального строба, а ТРВ для передачи дифференциального сигнала сигнала. При приеме сигнала - все наоборот. Сигнальные провода так же как и в случае USB выполнены в виде экранированной витой пары.
Кабели имеют на обоих концах разъемы типа "вилка", а устройства разъемы типа "розетка". При этом для соединения устройств имеющих розетки с разным числом проводов (4 и 6) используются кабели с соответствующими вилками, при этом 2 провода отвечающих за подачу питания на одном конце кабеля остаются незадействованными на другом. В нутри кабеля ТРА и ТРВ меняются местами и приходят соответственно на другую пару разъемов вилки на противоположном конце. Цвета проводов следующие: земля -черный, питающее напряжение - белый, ТРА - оранжевый и голубой, ТРВ - красный и зеленый. Разъемы устроены так, что при подсоединении их друг к другу контакты проводов, отвечающих за питание соединяются раньше чем контакты провода, отвечающих за передачу сигналов.
Так же как и в случае с USB вставить по ошибке вилку в розетку другой стороной невозможно.


15.06.2009, 08:21. Разъемы типа "А" должны быть направлены от USB устройства к хосту (компьютеру). Конструктивно вилки и гнезда розеток имеют поперечные размеры 12 на 4.5 миллиметров и могут соединятся друг с другом единственным правильным способом. То есть неправильно вставить вилку в розетку невозможно. При соединении вилка заходит в розетку на глубину примерно 8 миллиметров. Розетки подобного типа мы можем найти с обратной стороны многих современных компьютеров.


15.06.2009, 08:20. Устройства USB и Fire Wire предназначены в частности для того, чтобы при необходимости их можно было быстро и просто подключать и отключать друг от друга и от компьютера. При этом должен обеспечиваться хороший электрический контакт и устойчивость к износу от частого использования разъемов. Провода, соединяющие устройства могут быть достаточно длинными и находиться в области возможных электромагнитных помех от различных источников. Поэтому те и другие сконструированы с учетом этих требований.


15.06.2009, 08:06. В этом пункте мы постараемся дать небольшой обзорустройств, использующих USB и FireWire.


15.06.2009, 08:04. Шина FireWire специфицируется стандартом ШЕЕ 1394-1995 (принятым в 1995 году) и его дальнейшим развитием версиями стандарта : IEEE 1394a и IEEE 1394B. Стандарт IEEE 1394a на сегодняшний день по-видимому является наиболее распространенным.
Скорости передачи данных, определяемые стандартами IEEE 1394-1995 и IEEE 1394а - это 100Mb/sec, 200Mb/sec, 400Mb/sec. Каждая из них может использоваться устройствами, подключенными к шине. Все FireWire устройства должны поддерживать работу на минимальной скорости 100Mb/sec.
В IEEE 1394В получили развитие еще большие скорости передачи: 800Mb/sec, 1.6Gb/sec, 3.2Gb/sec.
Во всех вариантах стандарта шина может функционировать в отсутствии выделенного узла (компьютера).


15.06.2009, 08:00. С момента своего введения оба стандарта претерпели развитие в частности в сторону увеличения скорости передачи, поэтому в первую очередь речь пойдет именно о различиях в скорости.


15.06.2009, 07:59. USB и FireWire изначально разрабатывались с учетом того, что программное обеспечение ОС должно самостоятельно определять какой драйвер следует использовать для работы с каждым вновь подключаемым устройством. Это особенно важно с учетом того, что устройства могут подключаться и отключаться находу к различным портам компьютера и в такой ситуации прользователю было бы слишком утомительно каждый раз сообщать системе что скажем к порту номе 8 подключено такое-то устройство.
Для того, чтобы в полной мере реализовать такую возможность каждое устройство должно иметь внутри некоторый уникальный идентификатор (идентификатор производителя и идентификатор самого устройства:Vendor ID и Product ID). Для того, чтобы идентификаторы случайно не повторились для двух различных устройств, сделанных разными производителями, они должны выдаваться некоторым центральным органом по регистрации таких идентификаторов. Соответствующим стандарту может считаться только лишь устройство, которое имеет зарегистрированные идентификаторы. На практике именно это имеет место. Получение идентификатора коммерчеси доступно любому производителю электронных устройств.
Обычно компьютеры с ОС Windows или Linux способны самостоятельно обнаруживать устройства, такие например как Web-камеры с интерфейсом USB и использовать соответствующий им драйвер устройства.
В Linux так же возможно использование USB портов и устройств подключенных к ним прикладной программой, как это всегда было с последовательными портами RS232. К сожалению в Windows в настоящее время использование USB является существенно более сложной задачей, требующей написания системного драйвера.
Для тех же кому интересна работа системных драйверов с USB устройствами в настоящее время можно так же порекомендовать использование Linux в связи с тем, что там имеется достаточно большое количество драйверов устройств с исходными текстами. В качестве примера для изучения можно порекомендовать драйвер для Web-камеры Logitech QuickCam, который по мнению автора является достаточно простым и вместе с тем иллюстрирует все основные особенности работы системного драйвера с USB устройством.


15.06.2009, 07:59. "Зачем нам новые шины вместо старых?" - этот вопрос уместно задать в первую очередь в отношении USB, так как именно USB по замыслу предназначается в качестве замены имеющимся в компьютерах СОМ и LPT портам. В отношении же FireWire можно сразу же заметить следующее, что хотя FireWire и предоставляет нам некоторые чисто компьютерные сервисы (такие, например, как подключение к PC скоростных внешних накопителей или сеть TCP/IP по FireWire в ОС Linux) она все же пришла в сферу персональных компьютеров из области цифровой передачи изображения, где традиционно используется уже на протяжении некоторого времени (например видеокамерами Sony).


15.06.2009, 07:57. Списки потребности, которые по мнению их разработчиков должны были решить USB и FireWire, во многом пересекаются и состоят в следующем:


13.06.2009, 12:11. Если во времена разработки Longhorn/Vista сложно было представить утечку TAP-сборки, то сегодня это стало, скорее, правилом, нежели исключением. Вот и сегодня - в преддверии дня России - в сеть утекла очередная (на этот раз заключительная) TAP-сборка Windows 7. Начиная с этой сборки, номер которой 7229.0.winmain.090604-1901, никто из партнеров не получит ни одной сборки Windows 7 до отправки финальной версии в печать. Так что велик шанс, что сборка под номером 7229 войдет в историю как последняя утекшая сборка перед RTM.


13.06.2009, 12:11. Очередной раунд борьбы Лонга Ченга (Long Zheng) с разработчиками Windows 7. В этот раз Лонг говорит об ущербности UAC и, в частности, наличии уязвимости в этой функции, позволяющей инъекцию произвольного кода в список "дозволенных" приложений ОС.


10.06.2009, 17:50. Индустриальная торговая ассоциация PCMCIA, курирующая разработку интерфейсов PC Card и ExpressCard, объявила о выпуске финальной версии спецификаций нового стандарта ExpressCard 2.0.


10.06.2009, 13:35. Одним из важнейших устройств, входящих в состав современного компьютера, являются дисковые накопители: жесткие диски (винчестеры) и CD-ROM и их производные (СD-R/RW, DVD и пр.). Подавляющее большинство таких накопителей для обмена информацией с процессором и памятью используют различные варианты интерфейса IDE (Integrated Device Electronics - устройство с интегрированным контроллером). Конечно, существует еще один вариант дискового интерфейса - SCSI, но он, по причине высокой стоимости и определенной трудоемкости конфигурации отдельных устройств, больше ориентирован на рынок серверов и рабочих станций, поэтому этот интерфейс в данной статье рассматриваться не будет.


10.06.2009, 13:33. Широкое применение винчестеров в качестве устройств долговременного хранения информации


10.06.2009, 13:29. USB 3.0 находится на финальных стадиях разработки. Созданием USB 3.0 занимаются компании: Intel, Microsoft, Hewlett-Packard, Texas Instruments, NEC и NXP Semiconductors. В спецификации USB 3.0 разъёмы и кабели обновлённого стандарта будут физически и функционально совместимы с USB 2.0. Кабель USB 2.0 содержит в себе четыре линии - пару для приёма/передачи данных, одну - для питания и ещё одну - для заземления. В дополнение к ним USB 3.0 добавляет пять новых линий (в результате чего кабель стал гораздо толще), однако новые контакты расположены параллельно по отношению к старым на другом контактном ряду. Теперь можно будет с лёгкостью определить принадлежность кабеля к той или иной версии стандарта, просто взглянув на его разъём. Спецификация USB 3.0 повышает максимальную скорость передачи информации до 4,8 Гбит/с - что на порядок больше 480 Мбит/с, которые может обеспечить USB 2.0. USB 3.0 может похвастаться не только более высокой скоростью передачи информации, но и увеличенной силой тока с 500 мА до 900 мА. Отныне пользователь сможет не только подпитывать от одного хаба гораздо большее количество устройств, но и само аппаратное обеспечение, ранее поставлявшееся с отдельными блоками питания, избавится от них.

Финальная спецификация USB 3.0 появилась в 2008 году, а оборудование, поддерживающее новую спецификацию, появится в 2009-2010 годах.

Фирмой Intel анонсирована предварительная версия программной модели контроллера USB 3.0.


10.06.2009, 13:28. USB 2.0 отличается от USB 1.1 введением режима Hi-speed.

Для устройств USB 2.0 регламентировано три режима работы:

* Low-speed, 10-1500 Кбит/c (используется для интерактивных устройств: клавиатуры, мыши, джойстики)
* Full-speed, 0,5-12 Мбит/с (аудио-, видеоустройства)
* Hi-speed, 25-480 Мбит/с (видеоустройства, устройства хранения информации)

Спецификация USB 2.0 подняла максимальную пропускную способность шины до 480 Мбит/с (что в 40 раз больше, чем у USB 1.X). USB 2.0 была спроектирована с поддержкой как обратной, так и прямой совместимости, т.е. устройства USB 2.0 будут работать на машинах с USB 1.1 и наоборот. Конечно, устройства USB 1.1 не получат никакого прироста скорости на USB 2.0, а устройства USB 2.0 будут ограничены 12 Мбит/с на системах USB 2.0. Все кабели и разъемы - одинаковые.


10.06.2009, 13:23. При использовании интерфейса SCSI на ВПО хост-адаптера или контролера ПУ возлагается также функция поддержки SCSI – операций.
При этом степень необходимой прграмной поддержки зависит от уровня интеллектуальности используемой БИС контроллера SCSI-шины. По некоторым оценкам, при использовании БИС SCSI-контроллеров первого, второго и третьего поколений объем необходимого для реализации SCSI-протокола ВПО составляет около 400, 2500 и несколько сотен команд соответственно.


10.06.2009, 13:22. Конечным звеном средств програмной поддержки ПУ в силу специфичности физических принципов их реализации неизбежно являются узкоспециализированные программы низкого уровня. Из-за того, что программирование на таком уровне сложно даже для общесистемных, не говоря уже о прикладных программистах, имеется тенденция к повышению уровня средств программирования ПУ за счет маскирования специфики ПУ на уровне так называемого firmware( внутреннего программного обеспечения –ВПО). Примером может служить маскирование функций непосредственного управления дисковыми накопителями на уровне внутренних команд дисковых контроллеров WD2010, 8272 и др.


10.06.2009, 13:22. Среди используемых БИС SCSI-контроллеров для шины AT доминирует модели фирмы NCR. Следом идут известные WD33C93 фирмы Western Digital и ALC 6250/60 фирмы Adaptec(США). Хост-адаптером чаще всего поддерживают как синхронный, так и асинхронный
режимы обмена по шине SCSI. Скорость обмена существенно зависит от типа используемого контроллера. В простых хост-адаптерах она колеблется от 0, 25 до 1 Мбайт/с в ассинхронном режиме и сихронном режимах соответственно.


10.06.2009, 13:21. Хост-адаптер реализует функции сопряжения шины SCSI с системными ресурсами, прежде всего с системной шиной и операционной системой компьютера. Он, как правило выполняет роль инициатора на шине SCSI, хотя в сложных( например, в мультипроцессорных и мультимашинных) SCSI-системах может динамически изменяться (инициатор/исполнитель).
К числу основных функций хост-адаптера, определяющих его структуру и характеристики, относятся:
• реализация протокола шины SCSI, а также физических и электрических спецификаций стандарта;
• сопряжение с аппаратными и програмными системными ресурсами

Реализация протокола шины SCSI, как правило, осуществляется специализированной БИС контроллера шины SCSI. Обычно эта схема обеспечивает и реализацию электрических спецификаций стандарта.
Сопряжение с аппаратными системными средствами предполагает прежде всего согласование разрядности и пропускной способности шины SCSI и системной шины хост-системы, а также реализацию развитых средств доступа к системной памяти. Структура узла согласования разрядности шин зависит от назначения хост-адаптера и используемой версии стандарта SCSI(8 разрядов для SCSI-1;16 или 32 разряда для
SCSI-2). Основным средством согласования пропускной способности системной и SCSI-шин является буфферная память, реализуемая обычно в виде буффера FIFO, либо двухпортового ОЗУ. Наиболее распространенный алгоритм доступа к системной памяти – прямой доступ, реализуемый чаще всего с помощью контроллера ПДП хост-системы.
Сопряжение с программными системами предполагает наличие SCSI- драйвера для конкретной ОС.


10.06.2009, 13:20. Хотя исходная спецификация SCSI, опубликованная в 1986г. (SCSI-1), представляла большой шаг вперед, у нее были и некоторые серьезные недостатки. В частности не бало четкой регламентации всех аспектов, гарантирующих совместимость между устройствами были ссылки на целый ряд различных команд, однако в действительности она требовала обязательной реализации только одной команды REQUEST SENSE (“уточнить состояние”). В результате различные устройства поддерживали различные команды, что существенно ограничивало число контроллеров, которые могли бы работать в любой SCSI- системе.