- •Лекція. Послідовні шини usb і FireWire.
- •1.1. Організація шини usb
- •4.1.2. Модель передачі даних
- •4.1.3. Протокол
- •Мал. 4.4. Послідовності пакетів: а — вивід, б—ввод
- •Мал. 4.5. Потік кадрів usb
- •4.1.4. Типи передач даних
- •4.1.5. Синхронізація при ізохронній передачі
- •4.1.6. Хост
- •4.1.7. Застосування шини usb
- •4.1.8. Розробка власних пристроїв usb
- •4.2. Шина ieee 1394 – FireWire
- •4.2.1. Фізичний рівень мережі
- •4.2.3. Пристрої і адаптери 1394
- •4.2.4. Використання 1394
4.1.6. Хост
У кожної шини USB повинен бути один (і лише один!) хост—компьютер з контроллером USB. Хост ділиться на три основні рівні.
• Інтерфейс шини USB забезпечує фізичний інтерфейс і протокол шини. Інтерфейс шини реалізується хост-контроллером, що має вбудований кореневий хаб, що забезпечує точки фізичного підключення до шини (гнізда USB типу «А»). Хост-контроллер відповідає за генерацію (мікро) кадрів. На апаратному рівні хост-контроллер обмінюється інформацією з основною пам'яттю комп'ютера, використовуючи пряме управління шиною (bus-mastering) з метою мінімізації навантаження на центральний процесор.
• Система USB, використовуючи хост-контроллер(ы), транслює клієнтське «бачення» обміну даними з пристроями в транзакції, що виконуються з реальними пристроями шини. Система відповідає і за розподіл ресурсів USB—полосы пропускання і потужності джерел живлення (для пристроїв, що харчуються від шини). Система складається з трьох основних частин:
• Драйвер хост-контроллера. — HCD (Host Controller Driver) — модуль, прив'язаний до конкретної моделі контроллера, забезпечує абстрагування драйвера USB і що дозволяє в одну систему включати декілька різнотипних контроллерів.
• Драйвер USB — USBD (USB Driver) — забезпечує основний інтерфейс (USBDI) між клієнтами і пристроями USB. Інтерфейс HCDI (Host Controller Driver Interface) між USBD і HCD специфікацією USB не регламентується. Він визначається розробниками ОС і повинен підтримуватися розробниками хост-контроллеров, охочих мати підтримку своїх виробів конкретними ОС. Клієнти не можуть користуватися інтерфейсом HCDI; для них призначений інтерфейс USBDI. USBD забезпечує механізм обміну у вигляді пакетів IRP (I/O Request Packet — пакет запиту введення-виводу), що складаються із запитів на транспортування даних по заданому каналу. Крім того, USBD відповідає за деяке абстрактне представлення пристрою USB клієнтові, яке дозволяє виконувати конфігурацію і управління станом пристроїв (включаючи і стандартне управління через кінцеву точку «О»). Реалізація інтерфейсу USBDI визначається операційною системою; у специфікації USB висловлюються тільки загальні ідеї.
• Програмне забезпечення хоста реалізує функції, необхідні для функціонування системи USB в цілому: виявлення підключення і відключення пристроїв і виконання відповідних дій з цих подій (завантаження необхідних драйверів), нумерацію пристроїв, розподіл смуги пропускання і споживаної потужності і тому подібне
• Клієнти USB — програмні елементи (додатки або системні компоненти), що взаємодіють з пристроями USB. Клієнти можуть взаємодіяти з будь-якими пристроями (їх кінцевими крапками), підключеними до системи USB. Проте система USB ізолює клієнтів від безпосереднього обміну з якими-небудь портами (у просторі введення-виводу) або елементами пам'яті, що представляють інтерфейсну частину контроллера USB.
В сукупності рівні хоста мають наступні можливості:
• виявлення підключення і від'єднання пристроїв USB;
• маніпулювання потоками управління між пристроями і хостом;
• маніпулювання потоками даних;
• збір статистики активності і станів пристроїв;
• управління електричним інтерфейсом між хост-контроллером і пристроями USB, включаючи управління електроживленням.
Хост-контроллер є апаратним посередником між пристроями USB і хостом. Програмна частина хоста в повному об'ємі реалізується операційною системою. До завантаження ОС може функціонувати лише усічена частина ПО USB, що підтримує тільки пристрої, потрібні для завантаження. Так, в BIOS сучасних системних плат є підтримка клавіатури USB, що реалізовує функції сервісу Int 10h. При завантаженні системи USB ця «дозагрузочная» підтримка ігнорується — система починає роботу з контроллером «з чистого листа», тобто з скидання і визначення всіх підключених пристроїв. Після закінчення роботи ОС передача стану USB «дозагрузочной» підтримці не передбачається, так що для неї ця подія теж може розглядатися як первинне включення. У специфікації PC'2001 висувається вимога до BIOS підтримки USB такою мірою, щоб забезпечувалося завантаження ОС з пристроїв USB.
USB підтримує динамічне підключення і відключення пристроїв. Нумерація (перенумерация) пристроїв шини йде постійно, відстежуючи зміни фізичній топології.
Всі пристрої підключаються через порти хабов. Хаби визначають підключення і відключення пристроїв до своїх портів і повідомляють стан портів при запиті від контроллера. Хост вирішує роботу порту і адресується до пристрою через канал управління, використовуючи нульову адресу — USB Default Address. При початковому підключенні або після скидання всі пристрої адресуються саме так.
Хост визначає, є новий підключений пристрій хабом або функцією, і призначає йому унікальну адресу USB. Хост створює канал управління (control pipe) з цим пристроєм, використовуючи призначену адресу і нульовий номер точки призначення.
Якщо новий пристрій є хабом, хост визначає підключені до нього пристрої, призначає ним адреси і встановлює канали. Якщо новий пристрій є функцією, повідомлення про підключення передається диспетчером USB зацікавленому ПО.
Коли пристрій відключається, хаб автоматично забороняє відповідний порт і повідомляє про відключення контроллеру, який видаляє відомості про даний пристрій зі всіх структур даних. Якщо відключається хаб, процес видалення виконується для всіх підключених до нього пристроїв. Якщо відключається функція, повідомлення посилається зацікавленому ПО.
