USB 3.0 находится на финальных стадиях разработки. Созданием USB 3.0 занимаются компании: Microsoft, Texas Instruments, 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 мА. Отныне пользователь сможет не только подпитывать от одного хаба гораздо большее количество устройств, но и само аппаратное обеспечение, ранее поставлявшееся с отдельными блоками питания, избавится от них.
Здесь GND - цепь «корпуса» для питания периферийных устройств, VBus - +5 В, так же для цепей питания. Данные передаются по проводам D+ и D− дифференциально (состояния 0 и 1 (в терминологии официальной документации diff0 и diff1 соответственно) определяются по разности потенциалов межу линиями более 0,2 В и при условии, что на одной из линий (D− в случае diff0 и D+ при diff1) потенциал относительно GND выше 2,8 В. Дифференциальный способ передачи является основным, но не единственным (например, при инициализации устройство сообщает хосту о режиме, поддерживаемом устройством (Full-Speed или Low-Speed), подтягиванием одной из линий данных к V_BUS через резистор 1.5 кОм (D− для режима Low-Speed и D+ для режима Full-Speed, устройства, работающие в режиме Hi-Speed, ведут себя на этой стадии как устройства в режиме Full-Speed). Так же иногда вокруг провода присутствует волокнистая обмотка для защиты от физических повреждений. .
Коннектор USB 3.0 тип B
Коннектор USB 3.0 тип А
Хотя пиковая пропускная способность USB 2.0 составляет 480 Мбит/с (60 Мбайт/с), на практике обеспечить пропускную способность, близкую к пиковой, не удаётся. Это объясняется достаточно большими задержками шины USB между запросом на передачу данных и собственно началом передачи. Например, шина FireWire хотя и обладает меньшей пиковой пропускной способностью 400 Мбит/с, что на 80 Мбит/с меньше, чем у USB 2.0, в реальности позволяет обеспечить бо́льшую пропускную способность для обмена данными с жёсткими дисками и другими устройствами хранения информации.
Протокол USB storage, представляющий собой метод передачи команд
Кроме того, USB storage не поддерживался в старых ОС (первоначальная Windows 98), и требовал установки драйвера. SBP-2 поддерживался и в них. Также в старых ОС (Windows 2000) протокол USB storage был реализован в урезанном виде, не позволяющем использовать функцию прожига CD/DVD дисков на подключенном по USB дисководе, SBP-2 никогда не имел таких ограничений.
Шина USB строго ориентирована, потому соединение 2 компьютеров или же 2 периферийных устройств требует дополнительного оборудования. Некоторые производители поддерживают соединение принтера и сканера, или же фотоапарата и принтера, но эти реализации сильно завязаны на конкретного производителя и не стандартизированы. Шина 1394/FireWire не подвержена этому недостатку (можно соединить 2 видеокамеры).
Тем не менее, ввиду лицензионной политики Apple, а также намного более высокой сложности оборудования, 1394 менее распространен, материнские платы старых компьютеров не имеют 1394 контроллера. Что касается периферии, то поддержка 1394 обычно не встречается ни в чем, кроме видеокамер и корпусов для внешних жестких дисков и CD/DVD приводов.
Высокая скорость обмена (full-speed signaling bit rate) - 12 Мб/с - Максимальная длина кабеля для высокой скорости обмена - 5 м - Низкая скорость обмена (low-speed signaling bit rate) - 1.5 Мб/с - Максимальная длина кабеля для низкой скорости обмена - 3 м - Максимум подключенных устройств (включая размножители) - 127 - Возможно подключение устройств с различными скоростями обмена - Отсутствие необходимости в установке пользователем дополнительных элементов, таких как терминаторы для SCSI - Напряжение питания для периферийных устройств - 5 В - Максимальный ток потребления на одно устройство - 500 mA
Сигналы USB передаются по двум проводам экранированного четырёхпроводного кабеля.
Здесь:
GND - цепь «корпуса» для питания периферийных устройств V BUS - +5V также для цепей питания Шина D+ предназначена для передачи данных
Шина D- для приема данных.
Хотя максимальная скорость передачи данных USB 2.0 составляет 480 Мбит/с (60 Мбайт/с), в реальной жизни достичь таких скоростей нереально (~33,5 Мбайт/сек на практике). Это объясняется большими задержками шины USB между запросом на передачу данных и собственноначалом передачи. Например, шина FireWire, хотя и обладает меньшей пиковой пропускной способностью 400 Мбит/с, что на 80 Мбит/с (10 Мбайт/с) меньше, чем у USB 2.0, в реальности позволяет обеспечить бо́льшую пропускную способность для обмена данными с жёсткимидисками и другими устройствами хранения информации. В связи с этим разнообразные мобильные накопители уже давно «упираются»в недостаточную практическую пропускную способность USB 2.0.
Самым существенным преимуществом USB 3.0 является более высокая скорость (до 5 Гбит/с), которая в 10 раз выше скорости более устаревшего порта. У нового интерфейса улучшено энергосбережение. Это позволяет накопителю переходить в спящий режим при бездействии. Можно осуществить двустороннюю передачу данных одновременно. Это даст более высокую скорость, если на один порт подключить несколько устройств (разветвить порт). Разветвить можно с помощью хаба (хаб – устройство, которое из одного порта разветвляет на 3-6 портов). Вот если подключить хаб к порту USB 3.0, а к хабу подключите несколько устройств (например, флешек) и осуществите одновременную передачу данных, то вы увидите, что скорость будет значительно больше, чем было при интерфейсе USB 2.0. Есть характеристика, которая может являться плюсом и минусом. В интерфейсе USB 3.0 была повышена сила тока до 900 мА, а USB 2.0 работает с силой тока в 500 мА. Это будет плюсом для тех устройств, которые были адаптированы под USB 3.0, ну а небольшой минус состоит в том, что может возникать риск при подзарядке более слабых устройств, как телефон. Физическим недостатком нового интерфейса является размеры кабеля. Для поддержания высокой скорости кабель стал более толстым и по длине более коротким (не может быть длиннее 3 метров), чем USB 2.0. Следует отметить важное, что устройства с разными USB интерфейсами будут работать хорошо и не должно возникнуть проблем. Но не думайте, что скорость «разгонится», если вы подключите USB 3.0 к более устаревшему порту, или подключите к новому порту кабель устаревшего интерфейса. Скорость передачи данных будет равна скорости самого слабого порта.
Иллюстрированная проекция модели сетевого взаимодействия OSI на универсальную последовательную шину.
Не сильно полезный стек USB
Если у читателя бывали сходные ощущения, предлагаю альтернативное, явившееся мне неожиданно ясно в перегретом мозгу видение стека USB, по мотивам любимой 7-уровневой модели OSI. Я ограничился пятью уровнями:
Я не хочу сказать, что весь софт и библиотеки уже сделаны или должны проектироваться, исходя из этой модели. Из инженерных соображений код c уровнями будет сильно перемешан. Но я хочу помочь тем, кто начинает своё знакомство с шиной USB, кто хочет понять протоколы обмена устройств и терминологию предметной области, подобраться поближе к готовым примерам, библиотекам и лучше ориентироваться в них. Эта модель не для загрузки в МК, но в ваши блестящие умы, дорогие друзья. А ваши золотые руки потом всё сами сделают, я не сомневаюсь:)
Итак, поехали, поправляйте, если увидите косяки. Это draft-версия, и если уже такое где-то было нарисовано, прошу простить, я не нашёл и потому скрутил сам. Думаю, картинка никуда не убежит, а я пока объясню почтенной публике, зачем вообще взялся за эту публикацию.
Очередной флэшбэк из девяностых
Свой первый баг из чужого кода я вытряхнул в конце девяностых, будучи студентом на подработках. Это был pppd под FreeBSD, который мы тогда прикрутили на модемный пул. Мотороловские модемы залипали в отбое, дозвониться никто не мог, линия пропадала зазря, и единственный оставшийся способ через PPP keep-alive почему-то глючил. Вот тогда я и выяснил, что pppd зачем-то ждёт шесть ответных байтов LCP вместо положенных четырёх. Почувствовал я себя тогда эдаким лихим жукотрясом из девяностых:-) При чём тут PPP? Просто он на USB похож: пакетный и двухточечный. Правда, в отличие от USB 2.0, полнодуплексный.
Понравилась мне идея HID. Но стоило выйти из Windows за рамки учебных задач мигания светодиодами (вперёд к реальным окружениям UNIX!), как начало сквозить из всех незаделанных щелей , и я почувствовал себя каким-то беспомощным ламером. Отлаживая проект, я инстинктивно схватился за некое подобие tcpdump (так и называется: usbdump(8) , или usbmon), но увидел лишь сообщения на незнакомом языке.
Стало очевидно: не хватает фундаментальных знаний о шине USB. Если модель OSI и стек TCP/IP любой тёртый айтишник осознаёт где-то на уровне спинного мозга просто в силу необходимости, то с USB ситуация другая. Оно и понятно: там можно (нужно) подсмотреть трафик через тот же tcpdump да настроить железо с софтом, а тут полный plug and play, и исправить что-то можно, обновив драйвер или прошивку (или переустановив ОС). Но ведь мы тут с вами собрались как раз за тем, чтобы делать хорошие прошивки, не так ли? Почитав некоторые описания USB в сети, я был удивлён, насколько запутанной может быть документация. У меня даже возникло ощущение, что нас специально хотят сбить с пути истинного, напустив туману и избавившись от конкуренции в зародыше. Я не согласен с таким положением вещей!
Сперва выглядит оптимистично. Наконец-то, стек в разобранном виде. Кадры, правда, обозначены неудачно: я бы нарисовал их вертикальными пунктирными линиями, а EOF - это просто пауза, реально данные не передаются. Но начинаем читать контекст и теряем понимаем истинный замысел автора (запутать нас):
Хост-контроллер интерфейса шины USB формирует кадры ;И вот ещё:
Кадры передаются последовательной передачей бит по методу NRZI.
каждый кадр состоит из наиболее приоритетных посылок , состав которых формирует драйвер хоста;
каждая передача состоит из одной или нескольких транзакций;
каждая транзакция состоит из пакетов ;
каждый пакет состоит из идентификатора пакета, данных (если они есть) и контрольной суммы.
Вот одна из них
По софту всё понятно: это примеры не для промышленного использования, там могут быть баги, некоторые части (типа таблицы ссылок в примере Mass storage) защищены патентом, и вы не имеете прав их использовать в коммерческом проекте. Но это ещё ничего, китайцы ухитряются потом продавать на рынке USB-изделия, у которых даже библиотечные VID и PID не удосужились поменять.
По железу, как я понял, надо начинать с кварца. У меня челябинский PinBoard II с кварцем 12Мгц (все библиотеки заточены под 8МГц), я менял умножитель ФАПЧ с 9 на 6 (ссылка с разъяснениями), иначе МК разгонится до 108МГц вместо 72МГц, а USB на 72МГц вместо положенных 48МГц вообще не поедет. Можно ещё сбавить обороты МК до 48МГц, поменяв делитель шины USB с полутора до единицы. Использовать внутренний генератор МК HSI спецы не любят : частота может слегка уплыть от нагрева, последствия для USB предсказать затрудняюсь. Ну и не забываем о периферии, конечно. Без флэш-памяти SPI/SDIO из примера Mass storage можно сделать разве что аналог /dev/null, но его ведь хрен отформатируешь:-)
Промэлектронщики имеют блестящие знания и навыки по железу, паяют радиодетали толщиной с волос левой рукой с закрытыми глазами (причём потом это работает). Взглянув на электронную схему, почти физически начинают ощущать все её токи с потенциалами, работают также и с силовыми схемами, и с (большими, быстрыми, опасными) промышленными изделиями. Подход к программированию МК соответствующий: он просто должен выдать нужные логические уровни на нужные ножки в нужное время, не столь важно каким способом. Консервативны в технологиях (не влезай - работает), тяжёлую периферию МК не особо жалуют. При обсуждении объектно-ориентированного программирования, информационной безопасности, гигантских проектов в миллион строк кода и всяких навороченных графических интерфейсов скучнеют. Вместо пакетно-ориентированной шины USB предпочитают потоковый режим USART, усиленный либо привычным RS-232, либо более брутальным RS-485 (последовательная шина для промышленных применений, до 10Мбит/с на 15м, до 100кБит/с на 1200м, до 32 устройств).
Айтишники воспитаны на понимании операционных систем, сетевой инфраструктуры и сложных взаимодействий, элита хорошо подкована в информационной безопасности и разбирается во всяких незримых способах проникновения в чужую систему. Некоторые при этом очень любят котиков (ну как их можно не любить? я, правда, не держу, не развожу и не готовлю:-). Многие любят свободу информации, ругать корпорации/правительства и побеждать силы природы усилием мысли. Паталогически ленивы, но обожают новые технологии и закрученные инженерные ребусы с дорогими игрушками (желательно решаемые на уровне софта или, в крайнем случае, перемычек). Отношения с паяльником настороженные: не спрашивайте у айтишника, любит ли он паяльник, может неправильно понять; лучше спросите, любит ли он паять электронные схемы.
К чему я? Мы просто видим этот мир по-разному… Ведь ядро Linux кроили такие же ребята, из модулей на С и ассемблерных вставок для конкретных платформ, и без холиваров вроде обошлись. По-настоящему серьёзный проект я вижу как многоядерную систему, сочетающую современнейшие МК с тяжёлой периферией, но не исключаю связки с классическими моделями типа AVR: ими можно обвесить какие-нибудь критичные быстровращающиеся острия технического прогресса. Если код проверенный годами, то почему нет?
Добавить меткиВ конце 2008 года. Как и можно было ожидать, новый стандарт увеличил пропускную способность, хотя прирост не такой значительный, как 40-кратное увеличение скорости при переходе от USB 1.1 на USB 2.0. В любом случае, 10-кратное повышение пропускной способности можно приветствовать. USB 3.0 поддерживает максимальную скорость передачи 5 Гбит/с. Пропускная способность почти в два раза превышает современный стандарт Serial ATA (3 Гбит/с с учётом передачи информации избыточности).
Логотип USB 3.0
Каждый энтузиаст подтвердит, что интерфейс USB 2.0 является основным «узким местом» современных компьютеров и ноутбуков, поскольку его пиковая «чистая» пропускная способность составляет от 30 до 35 Мбайт/с. Но у современных 3,5″жёстких дисков для настольных ПК скорость передачи уже превысила 100 Мбайт/с (появляются и 2,5″ модели для ноутбуков, приближающиеся к данному уровню). Скоростные твёрдотельные накопители успешно превзошли порог 200 Мбайт/с. А 5 Гбит/с (или 5120 Мбит/с) соответствует 640 Мбайт/с.
Мы не думаем, что в обозримом будущем жёсткие диски приблизятся к уровню 600 Мбайт/с, но следующие поколения твёрдотельных накопителей могут превысить это число уже через несколько лет. Увеличение пропускной способности становится всё более важным, поскольку количество информации увеличивается, соответственно, растёт и время её резервирования. Чем быстрее работает хранилище, тем меньше будет время резервирования, тем проще будет сделать «окна» в расписании резервирования.
Таблица сравнения скоростных характеристик USB 1.0 – 3.0
Цифровые видеокамеры сегодня могут записывать и хранить гигабайты видеоданных. Доля HD-видеокамер увеличивается, а им требуются более ёмкие и быстрые хранилища для записи большого количества данных. Если использовать USB 2.0, то на передачу нескольких десятков гигабайт видеоданных на компьютер для монтажа потребуется значительное время. USB Implementers Forum считает, что пропускная способность останется принципиально важной, и USB 3.0 будет достаточно для всех потребительских устройств на протяжении ближайших пяти лет.
Чтобы гарантировать надёжную передачу данных интерфейс USB 3.0 использует кодирование 8/10 бит, знакомое нам, например, по Serial ATA. Один байт (8 бит) передаётся с помощью 10-битного кодирования, что улучшает надёжность передачи в ущерб пропускной способности. Поэтому переход с битов на байты осуществляется с соотношением 10:1 вместо 8:1.
Сравнение пропускной способности USB 1.x – 3.0 и конкурентов
Конечно, основной целью интерфейса USB 3.0 является повышение доступной пропускной способности , однако новый стандарт эффективно оптимизирует энергопотребление . Интерфейс USB 2.0 постоянно опрашивает доступность устройств, на что расходуется энергия. Напротив, у USB 3.0 есть четыре состояния подключения, названные U0-U3. Состояние подключения U0 соответствует активной передаче данных, а U3 погружает устройство в «сон».
Если подключение бездействует, то в состоянии U1 будут отключены возможности приёма и передачи данных. Состояние U2 идёт ещё на шаг дальше, отключая внутренние тактовые импульсы. Соответственно, подключённые устройства могут переходить в состояние U1 сразу же после завершения передачи данных, что, как предполагается, даст ощутимые преимущества по энергопотреблению, если сравнивать с USB 2.0.
Кроме разных состояний энергопотребления стандарт USB 3.0 отличается от USB 2.0 и более высоким поддерживаемым током . Если USB 2.0 предусматривал порог тока 500 мА, то в случае нового стандарта ограничение было сдвинуто до планки 900 мА. Ток при инициации соединения был увеличен с уровня 100 мА у USB 2.0 до 150 мА у USB 3.0. Оба параметра весьма важны для портативных жёстких дисков, которые обычно требуют чуть большие токи. Раньше проблему удавалось решить с помощью дополнительной вилки USB, получая питание от двух портов, но используя только один для передачи данных, пусть даже это нарушало спецификации USB 2.0.
Стандарт USB 3.0 обратно совместим с USB 2.0 , то есть вилки кажутся такими же, как и обычные вилки типа A. Контакты USB 2.0 остались на прежнем месте, но в глубине разъёма теперь располагаются пять новых контактов. Это означает, что вам нужно полностью вставлять вилку USB 3.0 в порт USB 3.0, чтобы удостовериться в режиме работы USB 3.0, для которого требуются дополнительные контакты. Иначе вы получите скорость USB 2.0. USB Implementers Forum рекомендует производителям использовать цветовое кодирование Pantone 300C на внутренней части разъёма.
Ситуация получилась схожей и для USB-вилки типа B, хотя различия визуально более заметны. Вилку USB 3.0 можно определить по пяти дополнительным контактам .
USB 3.0 не использует волоконную оптику , поскольку она слишком дорога для массового рынка. Поэтому перед нами старый добрый медный кабель. Однако теперь у него будет девять, а не четыре провода. Передача данных осуществляется по четырём из пяти дополнительных проводов в дифференциальном режиме (SDP–Shielded Differential Pair). Одна пара проводов отвечает за приём информации, другая – за передачу. Принцип работы похож на Serial ATA, при этом устройства получают полную пропускную способность в обоих направлениях. Пятый провод – «земля».