Difference between revisions of "USB/ru"

From KolibriOS wiki
Jump to navigation Jump to search
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Шина USB ==
 
== Шина USB ==
'''USB''' ({{lang-en|Universal Serial Bus}} — «универсальная последовательная шина») — последовательный интерфейс передачи данных для среднескоростных и низкоскоростных периферийных устройств в вычислительной технике.
+
'''USB''' (Universal Serial Bus — «универсальная последовательная шина») — последовательный интерфейс передачи данных для среднескоростных и низкоскоростных периферийных устройств в вычислительной технике.
 
Символом USB являются четыре геометрические фигуры: большой круг, малый круг, треугольник и квадрат, расположенные на концах древовидной блок-схемы.
 
Символом USB являются четыре геометрические фигуры: большой круг, малый круг, треугольник и квадрат, расположенные на концах древовидной блок-схемы.
  
Line 77: Line 77:
 
Хотя соединение USB OTG выглядит как одноранговое, на самом деле только создаётся такое ощущение — в действительности устройства сами определяют, какое из них будет мастер-устройством, а какое — подчинённым. Одноранговый интерфейс USB существовать не может.
 
Хотя соединение USB OTG выглядит как одноранговое, на самом деле только создаётся такое ощущение — в действительности устройства сами определяют, какое из них будет мастер-устройством, а какое — подчинённым. Одноранговый интерфейс USB существовать не может.
  
=== USB [[Wireless]] ===
+
=== USB Wireless ===
[[Файл:Wireless usb.gif|frame|Логотип USB wireless]]
 
  
 
USB wireless — технология USB (официальная спецификация доступна с мая 2005 года), позволяющая организовать беспроводную связь с высокой скоростью передачи информации (до 480 Мбит/с на расстоянии 3 метра и до 110 Мбит/с на расстоянии 10 метров).
 
USB wireless — технология USB (официальная спецификация доступна с мая 2005 года), позволяющая организовать беспроводную связь с высокой скоростью передачи информации (до 480 Мбит/с на расстоянии 3 метра и до 110 Мбит/с на расстоянии 10 метров).
Line 98: Line 97:
  
 
Фирмой Intel анонсирована предварительная версия программной модели контроллера USB 3.0 http://www.intel.com/technology/usb/xhcispec.htm Intel анонсировала предварительную версию программной модели контроллера USB 3.0. <br />
 
Фирмой Intel анонсирована предварительная версия программной модели контроллера USB 3.0 http://www.intel.com/technology/usb/xhcispec.htm Intel анонсировала предварительную версию программной модели контроллера USB 3.0. <br />
Но в октябре 2009 года появилась информация (от EE Times со ссылкой на сотрудника одной из крупнейших компаний по производству персональных компьютеров), что корпорация Intel решила повременить с внедрением поддержки USB 3.0 в свои чипсеты до 2011 г. Это решение приведет к тому, что данный стандарт не станет массовым ещё как минимум год. http://www.telecomnews.ru/news/21/3452/ USB 3.0 под угрозой
+
В настоящее время большинство выпускаемых материнских плат содержат контроллеры USB 3.0.
  
 
== Теория ==
 
== Теория ==
Line 186: Line 185:
  
 
====Регистр состояния USB====
 
====Регистр состояния USB====
Отражает текущее состояние хост-контроллера. Регистр доступен для чтения и сброса.  
+
Отражает текущее состояние хост-контроллера. Регистр доступен для чтения и сброса. <br>
 +
 
 +
Значение битов регистра:
 +
 
 
*0 '''USBINT''' - признак прерывания USB, при получении запроса на прерывание после завершения транзакции или при обнаружении короткого пакета.
 
*0 '''USBINT''' - признак прерывания USB, при получении запроса на прерывание после завершения транзакции или при обнаружении короткого пакета.
 
*1 - признак прерывания из-за ошибки во время выполнения транзакции.
 
*1 - признак прерывания из-за ошибки во время выполнения транзакции.
Line 212: Line 214:
  
 
====Регистр номера кадра USB====
 
====Регистр номера кадра USB====
 +
Содержит текущий номер кадра USB. Регистр доступен для чтения и записи. Запись в регистр возможна лишь в то время, когда работа контроллера приостановлена (бит RS в регистре команды сброшен). <br>
 +
Значение в битах 0-10 автоматически увеличивается на еденицу после завершения каждого кадра.
 +
 +
Значение битов регистра:
 +
 +
*0-10 - текущий номер кадра
 +
*11-15 - зарезервированы (всегда должны быть сброшены в ноль).
 +
 +
После аппаратного или программного сброса регистр содержит значение 0x0000.
 +
 
====Регистр базового адреса списка кадров USB====
 
====Регистр базового адреса списка кадров USB====
 +
Содержит физический адрес начала списка кадров в оперативной памяти. Регистр доступен для чтения и записи.
 +
Базовый адрес списка кадров должен быть выровнен на границу в 4Кб.
 +
 +
Значение битов регистра:
 +
 +
*0-11 - зарезервированы (всегда должны быть сброшены в ноль)
 +
*12-31 - физический адрес списка кадров
 +
 +
После аппаратного или программного сброса регистр содержит неопределенное значение и перед запуском контроллера необходимо создать в оперативной памяти список кадров и загрузить его физический адрес в данный регистр.
 +
 
====Регистр модификатора начала кадра USB====
 
====Регистр модификатора начала кадра USB====
 +
Служит для подстройки частоты кадров USB с целью обеспечения синхронизации всех устройств системы при работе в режиме реального времени. 
 +
 +
Значение битов регистра:
 +
 +
*0-6 - модификатор, складывается с числом 11936, в результате чего формируется делитель частоты кварцевого резонатора генератора тактовой чатоты.
 +
*7 - зарезервирован (всегда должен быть сброшен в ноль).
 +
 +
Частота кварцевого резонатора составляет 12 МГц, а значение, устанавливаемое в регистре после сброса контроллера равно 64, поэтому частота генерации кадров равна 1 кГц. Изменяя значение регистра, можно осуществлять подстройку частоты кадров USB в пределах ±0,5%.
 +
 
====Регистр состояния и управления порта 0====
 
====Регистр состояния и управления порта 0====
 +
Позволяет контролировать режим работы хост-контроллера. Регистр доступен для чтения и записи.
 +
 +
Значение битов регистра:
 +
 +
*0 - текущий статус подключения. Бит доступен только для чтения и служит для определения наличия подключения устройства к данному порту.
 +
*1 - признак изменения статуса подключения. Бит доступен для чтения и сброса.
 +
*2 '''PORT_EN''' - включение и отключение порта. Бит доступен для чтения и записи. Блокировка порта может выполняться как программно, так и аппаратно (при возникновении сбоя в работе порта), а включение производится только программным обеспечением.
 +
*3 - признак включения и отключения порта. Бит доступен для чтения и сброса.
 +
*4 - состояние линии '''D+'''. Бит доступен только для чтения.
 +
*5 - состояние линии '''D-'''. Бит доступен только для чтения.
 +
*6 '''RSM_DET''' - признак обнаружения сигнала пробуждения. Бит доступен для чтения и записи.
 +
*7 - зарезервирован (доступен только для считывания и всегда равен 1).
 +
*8 - признак подключения низкоскоростного усройства. Бит доступен только для чтения. Устанавливается в 1 если к порту подключено низкоскоростное усройство.
 +
*9 - сброс порта. В современных контроллерах доступен только для чтения. Установлен в 1 во время процедуры сброса порта.
 +
*10 - признак активности линии "Overcurrent". Бит доступен только для чтения и используется только в современных контроллерах.
 +
*11 - признак изменения состояния линии "Overcurrent". Бит доступен для чтения и сброса. Используется только в современных контроллерах. Устанавливается при переходе линии "Overcurrent" из неактивного состояния в активное.
 +
*12 - признак режима ожидания. Бит доступен для чтения и записи. Может использоваться для перевода в режим ожидания отдельного порта.
 +
*13-15 - зарезервированы.
 +
 +
После аппаратного или глобального сброса регистр содержит значение 0x0080. После сброса контроллера (HCRESET) могут быть установлены биты '''1''' и '''3'''. В современных контроллерах после сброса бит '''11''' также может быть установлен.
 +
 
====Регистр состояния и управления порта 1====
 
====Регистр состояния и управления порта 1====
 +
Позволяет контролировать режим работы хост-контроллера. Регистр доступен для чтения и записи.
 +
 +
Описание значений битов регистра и состояния регистра после аппаратного или глобального сброса идентично таковым для регистра состояния и управления порта 0.
  
 
=== Уровень 1. Структуры данных хост-контроллера. ===
 
=== Уровень 1. Структуры данных хост-контроллера. ===

Latest revision as of 00:44, 10 August 2010

Шина USB

USB (Universal Serial Bus — «универсальная последовательная шина») — последовательный интерфейс передачи данных для среднескоростных и низкоскоростных периферийных устройств в вычислительной технике. Символом USB являются четыре геометрические фигуры: большой круг, малый круг, треугольник и квадрат, расположенные на концах древовидной блок-схемы.

Разработка спецификаций на шину USB производится в рамках международной некоммерческой организации USB Implementers Forum (USB-IF), объединяющей разработчиков и производителей оборудования с шиной USB.

Для подключения периферийных устройств к шине USB используется четырёхпроводный кабель, при этом два провода (витая пара) в дифференциальном включении используются для приёма и передачи данных, а два провода — для питания периферийного устройства. Благодаря встроенным линиям питания USB позволяет подключать периферийные устройства без собственного источника питания (максимальная сила тока, потребляемого устройством по линиям питания шины USB, не должна превышать 500 мА).

В настоящее время широко используются устройства, выполненные в соответствии со спецификацией USB 2.0. Ведётся внедрение в производство устройств спецификации USB 3.0.

Архитектура шины

К одному контроллеру шины USB можно подсоединить до 127 устройств по топологии многоярусной звезды, в том числе и концентраторы (хабы). На одной шине USB может быть до 127 устройств и до 5 уровней каскадирования хабов, не считая корневого.

История

Предварительные версии

  • USB 0.7: спецификация выпущена в ноябре 1994 года.
  • USB 0.8: спецификация выпущена в декабре 1994 года.
  • USB 0.9: спецификация выпущена в апреле 1995 года.
  • USB 0.99: спецификация выпущена в августе 1995 года.
  • USB 1.0 Release Candidate: спецификация выпущена в ноябре 1995 года.

USB 1.0

Спецификация выпущена 15 января 1996 года.

Технические характеристики:

  • два режима передачи данных:
    • режим с высокой пропускной способностью (Full-Speed) — 12 Мбит/с
    • режим с низкой пропускной способностью (Low-Speed) — 1,5 Мбит/с
  • максимальная длина кабеля для режима с высокой пропускной способностью — 5 м USB Cable: Maximum Cable Length
  • максимальная длина кабеля для режима с низкой пропускной способностью — 3 м
  • максимальное количество подключённых устройств (включая размножители) — 127
  • возможно подключение устройств, работающих в режимах с различной пропускной способностью к одному контроллеру USB
  • напряжение питания для периферийных устройств — 5 В
  • максимальный ток, потребляемый периферийным устройством — 500 мА

USB 1.1

Спецификация выпущена в сентябре 1998 года. Исправлены проблемы и ошибки, обнаруженные в версии 1.0. Первая версия, получившая массовое распространение.

USB 2.0

Спецификация выпущена в апреле 2000 года.

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 публикуются в рамках Извещений об инженерных изменениях (ECN). Самые важные из модификаций ECN представлены в наборе спецификаций USB 2.0 (USB 2.0 specification package), доступном на сайте USB Implementers Forum.

  • Mini-B Connector ECN: извещение выпущено в октябре 2000 года.
  • Errata, начиная с декабря 2000: извещение выпущено в декабре 2000 года.
  • Pull-up/Pull-down Resistors ECN: извещение выпущено в мае 2002 года.
  • Errata, начиная с мая 2002: извещение выпущено в мае 2002 года.
  • Interface Associations ECN: извещение выпущено в мае 2003 года.
    • Были добавлены новые стандарты, позволяющие ассоциировать множество интерфейсов с одной функцией устройства.
  • Rounded Chamfer ECN: извещение выпущено в октябре 2003 года.
  • Unicode ECN: извещение выпущено в феврале 2005 года.
    • Данное ECN специфицирует, что строки закодированы с использованием UTF-16LE.
  • Inter-Chip USB Supplement: извещение выпущено в марте 2006 года.
  • On-The-Go Supplement 1.3: извещение выпущено в декабре 2006 года.
    • USB On-The-Go делает возможным связь двух USB-устройств друг с другом без отдельного USB-хоста. На практике одно из устройств играет роль хоста для другого.

USB OTG

USB OTG (аббр. от On-The-Go) — дальнейшее расширение спецификации USB 2.0, предназначенное для лёгкого соединения периферийных USB-устройств друг с другом без необходимости подключения к ПК. Например, цифровой фотоаппарат можно подключать к фотопринтеру напрямую, если они оба поддерживают стандарт USB OTG. К моделям КПК и коммуникаторов, поддерживающих USB OTG, можно подключать некоторые USB-устройства. Обычно это флэш-накопители, цифровые фотоаппараты, клавиатуры, мыши и другие устройства, не требующие дополнительных драйверов. Этот стандарт возник из-за резко возросшей в последнее время необходимости надёжного соединения различных устройств без использования ПК.

Хотя соединение USB OTG выглядит как одноранговое, на самом деле только создаётся такое ощущение — в действительности устройства сами определяют, какое из них будет мастер-устройством, а какое — подчинённым. Одноранговый интерфейс USB существовать не может.

USB Wireless

USB wireless — технология USB (официальная спецификация доступна с мая 2005 года), позволяющая организовать беспроводную связь с высокой скоростью передачи информации (до 480 Мбит/с на расстоянии 3 метра и до 110 Мбит/с на расстоянии 10 метров).

23 июля 2007 года USB Implementers Forum (USB-IF) объявила о сертификации шести первых потребительских продуктов с поддержкой Wireless USB. terralab.ru Wireless USB: первые шаги

USB 3.0

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

Компания Asus выпустила материнскую плату P6X58 Premium, у которой есть два USB 3.0 порта. А компания Gigabyte выпустила первую материнскую плату с поддержкой USB 3.0 и SATA 6Gb/s для процессоров AMD — Gigabyte GA-790FXTA-UD5.Порты USB 3.0 на материнской плате синего цвета.

В блоге разработчика Linux USB subsystem Sarah Sharp объявлено о поддержке USB 3.0 ядром Linux.

Фирмой Intel анонсирована предварительная версия программной модели контроллера USB 3.0 http://www.intel.com/technology/usb/xhcispec.htm Intel анонсировала предварительную версию программной модели контроллера USB 3.0.
В настоящее время большинство выпускаемых материнских плат содержат контроллеры USB 3.0.

Теория

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

Уровень 0. Регистры хост-контроллера.

Драйвер хост-контроллера USB управляет его работой с помощью регистров. Существует два вида регистров хост-контроллера USB:

  • Регистры конфигурационного пространства PCI
  • Регистры пространства ввода/вывода

Работа с регистрами конфигурационного пространства PCI не безопасна, т.к. может привести к зависанию ОС. Поэтому будут рассмотрены только регистры пространства ввода/вывода.

Доступ к регистрам пространства ввода/вывода, осуществляется через группу портов ввода/вывода, базовый адрес которых задан в конфигурационном регистре USBBaseAddress.

Смещение Размер Доступ Мнемоника Наименование регистра
00h WORD R/W USBCMD Регистр команды USB
02h WORD R/WC USBSTS Регистр состояния USB
04h WORD R/W USBINTR Регистр управления прерываниями USB
06h WORD R/W FRNUM Регистр номера кадра USB
08h DWORD R/W FLBASEADD Регистр базового адреса списка кадров USB
0Ch BYTE R/W SOFTMOD Регистр модификатора начала кадра USB
10h WORD R/WC PORTSC0 Регистр состояния и управления порта 0
12h WORD R/WC PORTSC1 Регистр состояния и управления порта 1

Регистр команды USB

Предназначен для передачи команд хост-контроллеру. Выполнение команды начинается сразу после её записи в регистр. Регистр доступен для чтения и записи.

Значение битов регистра:

  • 0 RS - запуск/остановка работы хост-контроллера.
  • 1 HCRESET - сброс хост-контроллера.
  • 2 GRESET - глобальный сброс.
  • 3 EGSM - переключение в глобальный режим ожидания.
  • 4 FGR - выход из режима ожидания.
  • 5 SWDBG - переключение в режим отладки.
  • 6 CF - флаг завершения конфигурирования контроллера.
  • 7 MAXP - максимальный размер пакета завершения кадра (0 - 32 байта, 1 - 64 байта).
  • 8-15 -зарезервированы (всегда должны быть сброшены в ноль).

После аппаратного или программного сброса регистр содержит значение 0x0000.

Регистр состояния USB

Отражает текущее состояние хост-контроллера. Регистр доступен для чтения и сброса.

Значение битов регистра:

  • 0 USBINT - признак прерывания USB, при получении запроса на прерывание после завершения транзакции или при обнаружении короткого пакета.
  • 1 - признак прерывания из-за ошибки во время выполнения транзакции.
  • 2 RSM_DET - признак поступления сигнала пробуждения от USB устройства.
  • 3 - признак системной ошибки.
  • 4 - признак обнаружения ошибки в работе контроллера.
  • 5 - признак останова контроллера.
  • 6-15 -зарезервированы (всегда должны быть сброшены в ноль).

После аппаратного или программного сброса контроллера регистр содержит значение 0x0020.

Регистр управления прерываниями USB

Управляет(разрешает или запрещает) генерацией различных видов прерывания хост-контроллером. Позволяет заблоки