Usb порти та інтерфейси дозволяє. Як працює USB-концентратор? Взаємодія з традиційним USB

Головна / Налаштування

Якщо ми підключаємо флешку 3.0 до комп'ютера, який передбачає підтримку портів USB 3.0, бачимо повідомлення « Цей пристрій може працювати швидше при підключенні до Super-Speed ​​USB 3.0», Це, друзі, означає, що ми або вставляємо флешку не в порти USB 3.0 (з синім язичком), або з їх функціонуванням є проблеми, і вони працюють в режимі USB 2.0. У чому криються причини проблем з роботою портів USB 3.0 на комп'ютерах, і як вирішуються такі проблеми, спробуємо розібратися в сьогоднішній статті.

Нагадаю, пропускна спроможність інтерфейсу USB 2.0 – 60 Мб/с, а USB 3.0 – у 10 разів більше, 625 Мб/с. Звичайно, рідкісні зі знімних накопичувачів, що підключаються до портів USB 3.0 комп'ютера, працюють на межі можливостей цього інтерфейсу, але він має важливе значення для окремих пристроїв зберігання інформації. Так, наприклад, багато сучасних моделей зовнішніх HDD на інтерфейсі USB 3.0 зможуть видати лінійну швидкість 100-170 Мб/с. Власне, те саме, що при підключенні внутрішніх жорстких дисків до SATA-інтерфейсу. Тоді як на інтерфейсі USB 2.0 лінійна швидкість зовнішніх жорстких дисків зазвичай тримається на позначці 30 Мб/с. Флешки 3.0 на інтерфейсі USB 3.0 записують дані швидше в 2-3 рази, а читають - швидше в 3-5 разів. До речі, ми детально говорили про швидкості роботи флешок на інтерфейсах USB 2.0 і 3.0. Загалом, друзі, якщо у вас є знімний накопичувач 3.0, вважаю, що розумітися на працездатності порту USB 3.0, якщо з ним виникли проблеми - справа стоїть.

Налаштування в BIOS

Порти USB 3.0 можуть працювати в межах можливостей USB 2.0, якщо вони налаштовані в BIOS. Цей момент необхідно перевірити насамперед. Заходимо в BIOS і шукаємо, де налаштовуються USB-порти, зазвичай це розділ розширених налаштувань Advanced і підрозділ USB Configuration. Або щось із подібними назвами. Тут потрібно перевірити, чи активна підтримка USB 3.0. Параметр USB 3.0 Support повинен мати значення Enable (Увімкнено). Значення Enable також має бути у параметра XHCI hand-off, він може називатися XHCI Pre-Boot Mode, просто XHCI або якось по-іншому, але з присутністю ключового терміна XHCI.

XHCI – це контролер USB 3.0, і якщо в BIOS не реалізований окремим пунктом параметр підтримки цього інтерфейсу типу USB 3.0 Support, його включення/відключення реалізується за рахунок контролера. На деяких материнських платах у параметра контролера XHCI можуть бути інші значення типу «Auto» або «Smart Auto», що забезпечують роботу портів USB 3.0 в режимі 2.0 до завантаження операційної системи зі своїми драйверами USB 3.0. І такі значення виробниками комп'ютерних пристроїв зазвичай виставляються за умовчанням, щоб уможливити роботу з сучасним інтерфейсом USB всередині операційних систем, при цьому уникнути краху установки окремих з них, у складі дистрибутива яких немає драйверів USB 3.0. Найяскравіший приклад – офіційні збірки Windows 7, проблему з відсутністю драйверів якої ми обговорювали та вирішували. Якщо на вашому, друзі, ПК або ноутбуку для випадків встановлення Windows 7 без інтегрованих драйверів USB 3.0 є робочі порти USB 2.0 (з чорним язичком), можна сміливо ставити налаштування контролера XHCI в положення Enable. Тільки при установці "Сімки" не забувати про те, що флешку потрібно вставляти в порт USB 2.0.

Оновлення драйвера

Всередині Windows працювати на рівні USB 2.0 інтерфейс USB 3.0 може через банальну причину некоректної установки драйвера контролера. Вирішується така проблема будь-яким із способів боротьби з некоректно встановленими драйверами – це їх оновлення, або переустановка. Використовуємо для початку штатні можливості Windows. Ідемо в диспетчер пристроїв. Розкриваємо гілку «Контролери USB». Клікаємо хост-контролер, що розширюється. Найчастіше він значиться як «Хост-контролер Intel(R) USB 3.0, що розширюється», але в нашому випадку, наприклад, його виробником є ​​японська компанія Renesas. Викликаємо на ньому контекстне меню та вибираємо оновлення драйвера.

На сьогоднішній день флешки є найпопулярнішими зовнішніми носіями даних. На відміну від оптичних та магнітних дисків (CD/DVD та вінчестери відповідно), флеш-накопичувачі більш компактні та стійкі до механічних пошкоджень. А за рахунок чого було досягнуто компактності та стійкості? Давайте розберемося!

Перше, що слід відзначити - всередині flash-накопичувача немає механічних частин, що рухаються, які можуть постраждати від падінь або струсів. Це досягається за рахунок конструкції - без захисного корпусу флешка є друкарською платою, до якої припаяний USB-роз'єм. Давайте розглянемо її складові.

Основні компоненти

Складові більшості флешок можна розділити на основні та додаткові.


До основних відносяться:

  1. чіпи NAND-пам'яті;
  2. контролер;
  3. кварцовий резонатор.
  4. USB-роз'єм

NAND-пам'ять
Накопичувач працює завдяки NAND-пам'яті: напівпровідникових мікросхем. Чіпи такої пам'яті, по-перше, дуже компактні, а по-друге — дуже ємні: якщо спочатку флешки за обсягом програвали звичним на той момент оптичним дискам, то зараз перевищують за ємністю навіть диски Blu-Ray. Така пам'ять, до того ж, ще й енергонезалежна, тобто для зберігання інформації їй не потрібне джерело живлення, на відміну від мікросхем оперативної пам'яті, створених за схожою технологією.


Однак у НАНД-пам'яті є один недолік, в порівнянні з іншими типами пристроїв, що запам'ятовують. Справа в тому, що термін служби цих чіпів обмежений певною кількістю циклів перезапису (кроків читання/запису інформації в осередках). У середньому кількість read-write cycles дорівнює 30 000 (залежить від типу чіпа пам'яті). Здається, це неймовірно багато, але насправді це приблизно 5 років інтенсивного використання. Втім, навіть якщо обмеження буде досягнуто, флешкою ​​можна буде користуватися продовжувати, але тільки для зчитування даних. Крім того, внаслідок своєї природи, NAND-пам'ять дуже вразлива до перепадів електрики та електростатичних розрядів, так що тримайте її подалі від джерел подібних небезпек.

Контролер
Під номером 2 на малюнку на початку статті знаходиться крихітна мікросхема - контролер, інструмент зв'язку між флеш-пам'яттю і пристроями, що підключаються (ПК, телевізорами, автомагнітолами тощо).


Контролер (інакше називається мікроконтролер) є мініатюрний примітивний комп'ютер з власним процесором і деякою кількістю RAM, що використовуються для кешування даних і службових цілей. Під процедурою оновлення прошивки або BIOS мається на увазі саме оновлення мікроконтролера. Як показує практика, найчастіша поломка флешок - вихід з ладу контролера.

Кварцовий резонатор
Даний компонент являє собою крихітний кристал кварцу, який, як і в електронному годиннику, виробляє гармонійні коливання певної частоти. У флеш-накопичувачах резонатор використовується для зв'язку між контролером, NAND-пам'яттю та додатковими компонентами.

Ця частина флешки також схильна до ризику пошкодження, причому, на відміну від проблем з мікроконтролером, вирішити їх самостійно практично неможливо. На щастя, у сучасних накопичувачах резонатори виходять з ладу відносно рідко.

USB-конектор
У переважній більшості випадків у сучасних флешках встановлений роз'єм USB 2.0 типу A, орієнтований на прийом та передачу. У найновіших накопичувачах використовується USB 3.0 типу А та типу C.

Додаткові компоненти

Крім згаданих вище основних складових пам'яті flash-пристрою, виробники нерідко постачають їх необов'язковими елементами, такими як: світлодіод-індикатор, перемикач захисту від запису і деякі специфічні для певних моделей особливості.

Світлодіодний індикатор
У багатьох flash-накопичувачах є невеликий, але досить яскравий світлодіод. Він призначений для візуального відображення активності флешки (запис або зчитування інформації) або просто є елементом дизайну.


Цей індикатор найчастіше не несе ніякого функціонального навантаження для самої флешки, і потрібен, по суті, тільки для зручності користувача або краси.

Перемикач захисту від запису
Цей елемент характерний швидше для SD-карт, хоча часом зустрічається і на USB-пристроях. Останні нерідко використовуються в корпоративному середовищі як носії різноманітної інформації, зокрема важливої ​​та конфіденційної. Щоб уникнути інцидентів з випадковим видаленням таких даних, виробниками флеш-накопичувачів в деяких моделях застосовується перемикач захисту: резистор, який при підключенні в ланцюг живлення пам'яті не дає електричному струму добиратися до осередків пам'яті.


При спробі записати або видалити інформацію з накопичувача, в якому включено захист, ОС видасть таке повідомлення.

Подібним чином реалізований захист у так званих USB-ключах: флешках, які містять сертифікати безпеки, необхідні для коректної роботи деякого специфічного ПЗ.

Цей елемент теж може зламатися, внаслідок чого виникає прикра ситуація - девайс начебто працездатний, але користуватися ним неможливо. У нас на сайті є матеріал, який може допомогти вирішити цю проблему.

Унікальні компоненти

До таких можна віднести, наприклад, наявність роз'ємів Lightning, microUSB або Type-C: флешки з наявністю таких призначені для використання у тому числі на смартфонах та планшетах.

Флеш-накопичувач - це пристрій, що використовує флеш-пам'ять. Флеш-пам'ять є незалежним. Вона може бути електрично стерта і перепрограмована.

Таким чином, це тип постійної пам'яті, що електрично стирається, що називається EEPROM (Electrically Erasable Programmable Read-Only Memory) - електрично стирається перепрограмоване ПЗУ. Пам'ять такого типу може стиратися та заповнюватися даними до мільйона разів. Флеш-диски схожі на звичайні жорсткі диски і можуть їх замінити. Флеш-пам'ять використовується для легкого та швидкого зберігання та передачі інформації.

Про флеш-пам'ять

Флеш-диски часто використовуються в продуктах, які працюють на низькій потужності та ті, яким, можливо, доведеться працювати у суворих умовах. Флеш-пам'ять є енергонезалежною, а отже, флеш-накопичувачі не повинні бути підкріплені батареєю. Флеш-пам'ять твердотільна. Це означає, що в ній немає нічого механічного. Все чисто електронне. Флеш-пам'ять має сітку зі стовпців та рядків, кожна клітина має два транзистори у кожній точці перетину в сітці. Тонкий оксидний шар відокремлює транзистори у кожній парі. Один транзистор у парі називається плаваючим затвором, а інший відомий як затвор, що регулює. Затвор, що плаває, може утримувати електричний заряд. Цей заряд полягає в електричній ізоляції оксидного шару, що відокремлює його від воріт управління. Таким чином, будь-які електрони, поміщені на затвор плавальний, залишаються на ньому. Це робить флеш-пам'ять енергонезалежною. Робота флеш-пам'яті полягає саме у додаванні та видаленні електронів із плаваючих затворів.

Як працює флешка?

Вона повинна бути вставлена ​​в USB-порт на комп'ютері. Сьогоднішні операційні системи можуть виявляти флеш-накопичувачі та встановлювати необхідні драйвери самостійно. Як тільки пристрій буде виявлено, він може бути використаний для зберігання даних. Флешка може бути вилучена з комп'ютера тільки після завершення її роботи. Система підкаже, коли можна буде безпечно видалити її, після чого вона може бути видалена фізично.

Флеш-накопичувач складається з друкованої плати та покритий у пластиковий або гумовий кожух, який робить його міцним. Роз'єм USB, який стирчить назовні, закривається знімною кришкою. Більшість флеш-накопичувачів використовують підключення USB типу A, що робить їх сумісними зі стандартними роз'ємами комп'ютера. Отже, вони можуть бути підключені безпосередньо до порту комп'ютера.

Флеш-накопичувачі не потребують додаткових драйверів пристроїв. Коли флеш-накопичувач підключений до комп'ютера, на якому встановлена ​​операційна система блокової логічної одиниці, досягається абстрагування від деталей реалізації складних пристроїв флеш-пам'яті і операційна система може використовувати будь-яку файлову систему або адресацію блоків системи. Коротше кажучи, операційна система розглядає його як жорсткий диск. При підключенні флеш-накопичувач перетворюється на режим емуляції, що означає, що він емулює роботу жорсткого диска надалі. Це робить передачу даних між флеш-накопичувачем та комп'ютером набагато простіше.

Флеш-накопичувачі використовуються в управлінні операційних систем для того, щоб перетворити персональні комп'ютери на мережу електроприладів. У таких випадках вони містять операційну систему та використовується для завантаження системи. Флеш-диски мають перевагу над іншими пристроями через їхнє низьке енергоспоживання та низький рівень відмов. Крім того, флеш-накопичувачі мають невеликий портативний розмір. Вони дають можливість швидкої передачі з меншими труднощами. В основному вони є Plug-і-Play пристроями. Вони не вимагають будь-якої спеціальної підготовки з вашого боку, щоб мати можливість їх використовувати. Вони мають великий магазин пам'яті, об'єм пам'яті більше, ніж у дискет або компакт-дисків.

Протягом перших років їх еволюції, флеш-накопичувачі не могли витримати занадто багато циклів стирання. Це зробило ранні флеш-накопичувачі непридатними для даних, які потребують частих оновлень. Щоб заповнити цю прогалину, виробники розробили метод вирівнювання, який фізично розподіляє дані по всіх осередках пам'яті. Сучасні флешки можуть витримати близько мільйона циклів.

USB флеш-накопичувачі

USB флеш-пам'ять модне сьогодні слово в комп'ютерних технологіях. Це флеш-пам'ять або пристрій для зберігання пам'яті NAND-типу. Основні компоненти флеш-накопичувача включають роз'єм USB типу A, контролер зберігання, чіп флеш-пам'яті NAND і кварцовий генератор. Роз'єм USB діє як інтерфейс між пристроєм та комп'ютером. Контролер пристрою складається з крихітного RISC-процесора. Він також має деякий обсяг пам'яті на мікросхемі (вона може бути ПЗП та ОЗП). Чіп флеш-пам'яті робить фактичну роботу із зберігання даних. Кварцовий генератор виробляє тактові сигнали та керує виведенням даних із пристрою. Світлодіоди, що діють як індикатори, здійснюють захист від запису і перемикають деякі інші компоненти, які можуть бути частиною флешок.

Використання флеш-накопичувача

  • Підключіть флеш-пам'ять до комп'ютера.
  • Комп'ютер вкаже вам, що він виявив зовнішній пристрій.
  • Операційна система сприйматиме його як будь-який інший жорсткий диск. Ніякі спеціальні драйвери пристрою не потрібні. Жодної конкретної файлової системи не потрібно.
  • Зайдіть у меню "Мій комп'ютер" і ви побачите флеш-накопичувач серед інших дисків.
  • Ви зможете відкрити його, як будь-який інший жорсткий диск.

Переваги флешок

  • Вони легкі та портативні.
  • Вони надійні. Вони стійкі до подряпин і не схильні до впливу магнітних полів.
  • Флеш-пам'ять є незалежним.
  • Вони є пристроями "plug-and-play", таким чином їх легко використовувати.
  • p align="justify"> Комп'ютер сприймає їх як будь-який інший жорсткий диск, тим самим роблячи передачу даних легким.

Недоліки флеш-накопичувачів

  • Вони мають невеликий розмір. Тож можуть бути легко втрачені.
  • Часте використання призводить до зношування, особливо в точці їх з'єднання з комп'ютером.
  • Існує обмеження на кількість циклів запису та стирання, які вони можуть витримати.
  • Використання флешки на різних комп'ютерах робить її сприйнятливою до інфекцій. Вірус на диску може знищити дані або зробити їх нечитаними.

Сучасні флеш-накопичувачі оснащені безпековими заходами, такими як шифрування або навіть біометричні дані. Вони оснащені захисним кожухом, що робить їх надійними. Хоча кількість циклів стирання та запису може бути обмежена. Вони мають додаткову перевагу, оскільки мають ємність, швидкість, портативність і низьке енергоспоживання. Зрозуміло, що недоліки флеш-накопичувачів мізерно малі в порівнянні з простотою використання, яке вони пропонують. Флеш-накопичувачі сьогодні є одними із найпопулярніших пристроїв зберігання даних. Вони можуть виконувати завантаження програм, у яких можна зберігати важливі документи, проекти та домашні завдання, вони можуть зберігати музику, фільми та зображення.

Зараз один із найпопулярніших інтерфейсів – це безумовно USB. Девайсів, які його використовують, просто величезна кількість. Це і мишки, і клавіатури, і принтери, і мобільні телефони, і багато чого ще. На відміну від RS-232, що стрімко зникає, USB зустрічається у всіх сучасних комп'ютерах, ноутбуках, телефонах ... так що, якщо ми хочемо створювати дійсно універсальні девайси, доведеться нам цей інтерфейс вивчати. Ось прямо зараз і почнемо, а заразом, по ходу вивчення, спробуємо самі створити будь-яких USB-девайсів.

Отже, USB (Universal Serial Bus) - універсальна послідовна шина. Більшість USB-пристроїв відповідають специфікаціям 1.1 та 2.0. У специфікації 1.1 визначено дві швидкості передачі: LS (low speed) — низька швидкість, 1,5 Мбіт/с і FS (full speed) — повна швидкість, 12 Мбіт/с. У редакції 2.0 до них додано ще й високу швидкість HS (high speed), 480 Мбіт/с. Нещодавно вийшла ще специфікація - 3.0, але пристрої, що підтримують цей стандарт, поки не дуже поширені, тому і бог з нею.

Фізичні пристрої на шині USB бувають трьох типів: хост-контролер, хабі кінцевий пристрій.

Хост-контролер- це головний керуючий шиною USB. Саме він забезпечує зв'язок пристроїв, підключених до шини, з комп'ютером (з ОС та клієнтським ПЗ). Будь-які сеанси обміну даними може починати тільки хост-контролер, інші пристрої мовчать у ганчірочку, доки хост-контролер до них не звернеться.

Контролер взаємодіє з ОС через драйвер хост-контролера ( HCD- host controller driver). Цей драйвер прив'язаний до конкретної моделі хост-контролера. Тільки він знає, які дані, в які регістри і в якому порядку пхати в хост-контролер, а також звідки які дані брати, щоб хост-контролер зробив те, чого від нього хочуть.

З боку ОС шиною USB керує ще один драйвер. USBD(Universal serial bus driver). Йому абсолютно пофіг, як там безпосередньо реалізований хост-контролер і де у нього якісь регістри (для цього є HCD), USBD вирішує загальні (неспецифічні для конкретного хост-контролера) питання: взаємодія з клієнтським програмним забезпеченням, нумерація пристроїв на шині, їх конфігурування, розподіл живлення та пропускної спроможності шини і так далі. Це, можна сказати, своєрідний диспетчер, який здійснює загальний контроль над шиною та її взаємодію із зовнішнім світом (з клієнтським ПЗ).

Хост-контролер — птах гордий і полохливий, тому безпосередньо ні з ким із підданих він не розмовляє. Для спілкування з підданими має спеціальні помічники — хаби (їх ще іноді називають концентраторами).

Хаби— це пристрої, які дозволяють фізично підключити USB-пристрої до шини.Вони надають порти для підключення, ретранслюють трафік від хост-контролера до кінцевих пристроїв та назад, відстежують стан та фізично керують електроживленням портів. У хабів є один висхідний (upstream) порт, - це той порт, який підключений до хост-контролера, і кілька низхідних (downstream) портів, - це порти, до яких підключаються кінцеві пристрої. Хаби можна каскадувати, підключаючи до низхідного порту хаба ще один хаб. Найголовніший хаб, інтегрований із хост-контролером, називається кореневим хабом(він же - кореневий концентраторабо root hub).

Тобто можна сказати, що у хаба є дві основні завдання: 1) створити хост-контролеру ілюзію, що він безпосередньо розмовляє з підключеним до хаба пристроєм; 2) спостерігати за своїм сегментом шини (за девайсами, підключеними до низхідних портів), повідомляти «вгору» про всі зміни і, якщо треба, підключати та відключати живлення портів.

Кінцеві пристрої— це всі корисні пристрої, які ми підключаємо до шини USB (флешки, принтери, мишки і т.д.)

Потрібно сказати, що фізичні пристрої та логічні пристрої - це не завжди одне і теж. Існують, наприклад, такі кінцеві пристрої (звані складовими - compound devices), які містять у собі хаб, якого підключено ще кілька пристроїв. Незважаючи на те, що в цьому випадку хаб і всі підключені до нього пристрої запаковані в один корпус, з точки зору логіки шини це будуть абсолютно різні пристрої.

Для логічних кінцевих пристроїв зазвичай використовують термін «функції». Таким чином, з погляду логіки шини, пристрої на ній можна розділити на хаби та функції(і неважливо, запаковані вони в один корпус чи ні). Кожен логічний пристрій на шині має унікальну адресу (1-127), що присвоюється хостом при підключенні.

Виходячи з описаного вище, виходить, що фізична топологія USB - дерево (ну, тому що хаби можна каскадувати), а логічна топологія - зірка, центром якої є хост-контролер. Фізична та логічна топології шини USB показані на малюнку нижче.

Логічне пристрійє набір так званих кінцевих точок ( endpointsабо просто EP). Фізично, кінцеві точки - це просто різні буфери в логічному пристрої USB, через які відбувається обмін даними з хостом. Логічне питання — а навіщо мати кілька буферів? Ну, просто тому, що зручно для різних завдань мати різні буфери. Пристрій у нас може виконувати паралельно кілька різних завдань. (Мінімум дві - відстежувати команди управління від хоста і робити щось корисне.) У цих різних завдань можуть бути різні ступені важливості, вимоги до надійності, своєчасності та швидкості доставки даних і, нарешті, джерела та споживачі інформації, що пересилається, також можуть бути різні (Джерелом і споживачем корисної інформації зазвичай є клієнтський драйвер, в той же час будь-яка управляюча інформація йому зазвичай нафіг не потрібна).

Оскільки для вирішення описаних вище проблем недостатньо мати просто різні буфери для інформації, що передається, то на додаток до цього придумали ще дещо.

По-перше, придумали 4 різні типи передач. Для кожної кінцевої точки має бути визначено, яким із цих типів передач із нею потрібно спілкуватися. Типи передач у USB існують такі:

  1. ізохронні передачі(isochronous transfers). Вони призначені передачі потокових даних у реальному часі. Такі передачі гарантують час доставки, але не гарантують, що всі дані будуть доставлені. Якщо під час передачі відбувається помилка, дані просто губляться. Крім того, для передач такого типу має бути попередньо узгоджено, яку частину пропускної спроможності шини ця передача займатиме. Ізохронні передачі мають найвищий пріоритет та мають право зайняти до 90% пропускної спроможності каналу. Передачі цього типу використовуються, наприклад, для відеокамер або колонок. Адже нікого не влаштує, якщо звук у колонках кладе. Краще втратити частину даних, але слухати пісню не ривками, а безперервно.
  2. переривання(Interrupts). Цей тип призначений для спонтанних невеликих повідомлень, але з гарантованим часом обслуговування та гарантованою доставкою. Прикладом може бути USB клавіатура. Ми можемо натиснути кнопку в будь-який момент (може 3 години не натискали, а може так і заклацали клавою кожну секунду). Поки ми спимо за компом - і передавати нічого не треба. Але як тільки ми все ж клацнули по кнопках - будьте ласкаві, повідомте про це куди слід і бажано швидше.
  3. передача масивів даних(Bulk data transfers). Для цього типу немає жодних гарантій за швидкістю, єдине в чому можна бути впевненим — що дані дійдуть у цілості та безпеці (коли-небудь, ги-ги). Такі передачі мають найнижчий пріоритет, але їм нічого не треба узгоджувати, скільки залишиться вільною від інших типів передач ширини каналу, стільки вони й займуть. Не залишиться взагалі – чекатимуть, коли канал звільниться. Такі передачі можна використовувати для обміну даними з пристроями, яким нікуди поспішати, наприклад, з принтерами. Уявіть, що ви відправили на друк USB-принтеру фотку та одночасно слухаєте музику в USB-колонках. Чи погодитеся ви, щоб фотка надрукувалася на 3 секунди раніше, але при цьому почав класти звук у колонках? Найімовірніше немає, адже. Нехай краще дані принтеру передаються повільніше, але музика грає безперервно, без будь-яких смикань.
  4. керуючі передачі(control transfers). Це передачі типу запит-відповідь. З їх допомогою передаються комади управління пристроями. Тут важлива як безпомилкова передача, а й отримання відповіді результати виконання команди. Крім того, оскільки ці передачі є службовими, їм гарантовано 10% пропускної спроможності каналу.

Повернемося до наших кінцевих точок. Для того, щоб відрізнити одну точку від іншої, кінцеві точки повинні мати унікальний номер. Але це не все. Окрім номера, кожна кінцева точка має ще й напрямок. IN— якщо точка призначена передачі даних хосту, OUT- Якщо точка призначена для прийому даних від хоста. Крапки з однаковими номерами, але з різними напрямками передачі даних — це з точки зору логіки шини кінцеві точки.

Єдиний виняток – кінцева точка EP0. В неї взагалі особливий статус. Вона є службовою та призначена для загального управління пристроєм (конфігурування, налаштування тощо). Крім того, ця кінцева точка двоспрямована і вона повинна обов'язково бути присутньою в будь-якому USB-пристрої.

Виходячи з усього вищеописаного, для ідентифікації якоїсь кінцевої точки на шині, нам потрібно знати адресу пристрою, до якого відноситься кінцева точка, її номер у пристрої та напрямок передачі даних через цю точку.

Оскільки пристрій не завжди робить абсолютно все на що воно тільки здатне, та й способів вирішення однієї і тієї ж задачі воно може мати декілька, то зазвичай немає необхідності задіяти всі кінцеві точки. Тому вигадали такі поняття, як інтерфейс, конфігураціяі альтернативніустановки. Інтерфейс поєднує кінцеві точки, призначені для вирішення будь-якої однієї задачі. Набори інтерфейсів, що використовуються одночасно, називаються конфігураціями.. Альтернативні установки дозволяють включати або відключати якісь входять до конфігурації кінцеві точки, залежно від способу вирішення завдань для яких призначена ця конфігурація.

Самих конфігурацій та альтернативних установок у кожної з цих конфігурацій для одного логічного пристрою може існувати декілька, але в кожний момент часу лише один із цих наборів може бути активним. Причому хост повинен знати, який саме набір активний і відповідно забезпечувати зв'язок з кінцевими точками, що входять в цей набір. Інші кінцеві точки, що не входять до активного набору, не будуть доступні для зв'язку.

Поясню, що означає «забезпечувати зв'язок із кінцевими точками». Для зв'язку клієнтського програмного забезпечення з кожною активною кінцевою точкою хост створює комунікаційний канал (communication pipe). Клієнтське ПЗ, яке хоче поспілкуватися з кінцевою точкою, має надіслати до відповідного каналу пакет запиту на введення/виведення (IRP— input/output request packet) і чекати на повідомлення про завершення його обробки. У IRP вказується лише адреса буфера, куди треба складати або звідки брати дані та довжина передачі. Все інше за вас зробить хост і драйвери, що обслуговують його (USBD і HCD)

Сьогоднішня стаття буде присвячена, як уже видно з назви, обговоренню основ інтерфейсу USB. Розглянемо основні поняття, структуру інтерфейсу, розберемося, як відбувається передача даних, а в найближчому майбутньому реалізуємо все це на практиці 😉 Коротше приступаємо!

Існує низка різних специфікацій USB. Почалося все з USB 1.0і USB 1.1, Потім інтерфейс еволюціонував у USB 2.0, відносно нещодавно з'явилася остаточна специфікація USB 3.0. Але на даний момент найбільш поширеною є реалізація USB 2. 0.

Ну і для початку основні моменти та характеристики. USB 2.0підтримує три режими роботи:

  • High Speed- До 480 Мб / с
  • Full Speed- До 12 Мб / с
  • Low Speed- До 1.5 Мб / с

Командує на шині USB хост(наприклад, ПК), до якого можна підключити до 127 різних пристроїв. Якщо цього мало, потрібно додати ще один хост. Причому важливо, що пристрій не може послати/прийняти дані хосту/від хоста, необхідно, щоб хост сам звернувся до пристрою.

Майже у всіх статтях про USB, які я бачив використовується термін “ кінцева точкаАле про те, що це таке зазвичай написано досить туманно. Так ось, кінцева точка – це частина пристрою USBз унікальним ідентифікатором. Кожен пристрій USBможе мати кілька кінцевих точок. За великим рахунком – кінцева точка – це лише область пам'яті USBпристрої, де можуть зберігатися будь-які дані (буфер даних). І в результаті ми отримуємо ось що – кожен пристрій має свою унікальну адресу на шині USB, і при цьому кожна кінцева точка пристрою має свій номер. Ось так ось)

Давайте трохи відвернемося і поговоримо про "залізну частину" інтерфейсу.

Існують два типи конекторів - Type A та Type B.

Як зрозуміло з малюнка Type Aзавжди звернений до хоста. Саме такі роз'єми ми бачимо на комп'ютерах та ноутбуках. Конектори Type Bзавжди відносяться до USB-пристроїв, що підключаються. Кабель USB складається з 4 дротів різних кольорів. Ну, власне, червоний – це харчування (+5 В), чорний – земля, білий та зелений призначені для передачі даних.

Крім зображених на малюнку, існують також інші варіанти виконання USB-конекторів, наприклад mini-USB та інші, ну це ви і так знаєте 😉

Напевно, варто трохи торкнутися способу передачі даних, але заглиблюватися в це не будемо.) Отже, при передачі даних по шині USBвикористовується принцип кодування NRZI(Без повернення до нуля з інверсією). Для передачі логічної “1” необхідно підвищити рівень лінії D+ вище +2.8, а рівень лінії D- треба знизити нижче +0.3 В. Для передачі нуля ситуація протилежна - (D-> 2.8 В) і (D+< 0.3 В).

Окремо варто обговорити живлення пристроїв USB. І тут також можливе кілька варіантів.

По-перше, пристрої можуть харчуватися від шини, тоді їх можна розділити на два класи:

  • Low-power
  • High-power

Різниця тут у тому, що low-powerпристрої не можуть споживати більше, ніж 100 мА. А пристрої high-powerповинні споживати не більше 100 мАлише на етапі зміни. Після того, як вони сконфігуровані хостом, їх споживання може становити до 500 мА.

Крім того, пристрої можуть мати власне джерело живлення. У цьому випадку вони можуть отримувати до 100 мАвід шини, а все інше забирати у свого джерела)

З цим як би все, давайте потихеньку переходити до структури даних, що передаються. Все-таки це для нас найбільший інтерес 😉

Вся інформація передається кадрами, що відправляються через рівні проміжки часу. У свою чергу кожен кадр складається з транзакцій. Ось, мабуть, так буде наочніше:

Кожен кадр включає пакет потім слідують транзакції для різних кінцевих точок, ну і завершується все це пакетом EOF (End Of Frame).Якщо говорити зовсім точно, то EOF– це не зовсім пакет у звичному розумінні цього слова – це інтервал часу, протягом якого обмін даними заборонено.

Кожна транзакція має такий вигляд:

Перший пакет (його називають Token пакет) містить у собі інформацію про адресу пристрою USB, а також номер кінцевої точки, якій призначена ця транзакція. Крім того, в цьому пакеті зберігається інформація про тип транзакції (які типи ми ще обговоримо, але трохи пізніше =)). - З ним все зрозуміло, це дані, які передають хост, або кінцева точка (залежить від типу транзакції). Останній пакет – Status

– призначено для перевірки успішності отримання даних. USBВже дуже багато разів прозвучало слово "пакет" стосовно інтерфейсу Token:

, Так що настав час розібратися що він з себе представляє. Почнемо з пакета TokenПакети

  • бувають трьох типів:

Setup Ось для чого я це розповів..) Залежно від типу пакета значення поля PID Tokenв

  • пакет може приймати такі значення: Token пакет типу OUT –
  • PID = 0001 Token пакет типу IN –
  • Token пакет типу SETUP - PID = 1101
  • Token пакет типу SOF – PID = 0101

Переходимо до наступної складової пакета Token– поля Addressі Endpoint– у них містяться адреса USB пристрою та номер кінцевої точки, Якою призначена транзакція.

Ну і поле CRC- Це контрольна сума, з цим зрозуміло.

Тут є ще один важливий момент. Ось для чого я це розповів..) Залежно від типу пакета значення полявключає 4 біти, але при передачі вони доповнюються ще 4-ма бітами, які виходять шляхом інвертування перших 4-их біт.

Отже, на черзі - Тобто пакет даних.

Тут все в принципі так само, як і в пакеті Token, тільки замість адреси пристрою та номера кінцевої точки тут у нас передані дані.

Залишилося нам розглянути - З ним все зрозуміло, це дані, які передають хост, або кінцева точка (залежить від типу транзакції). Останній пакет –пакети та пакети SOF:

Тут Ось для чого я це розповів..) Залежно від типу пакета значення поляможе приймати лише два значення:

  • Пакет прийнято коректно – PID = 0010
  • Помилка прийому пакету – PID = 1010

І наостанок, пакети:

Тут бачимо нове поле Frame– воно містить у собі номер кадру, що передається.

Давайте як приклад розглянемо процес запису даних у USB-пристрій. Тобто, розглянемо приклад структури кадру запису.

Кадр, як ви пам'ятаєте складається з транзакцій і має такий вигляд:

Що являють собою всі ці транзакції? Зараз розберемося! Транзакція SETUP:

Транзакція OUT:

Аналогічно при читанні даних із USB-пристрою кадр виглядає так:

Транзакцію SETUPми вже бачили, подивимося на транзакцію IN 😉

Як бачите, всі ці транзакції мають таку структуру, як ми говорили вище)

Загалом думаю досить на сьогодні 😉 Досить-таки довга стаття вийшла, сподіваюся найближчим часом спробуємо реалізувати інтерфейс USB на практиці!

© 2024 androidas.ru - Все про Android