SB-пристрою;
· Планування транзакцій.
Логічне пристрій USB являє собою набір незалежних кінцевих точок, з якими клієнтське програмне забезпечення обмінюється інформацією. Кожному логічному влаштуванню USB призначається свою адресу, унікальний на даній шині USB. Кожна кінцева точка логічного пристрою ідентифікується своїм номером і напрямом передачі (IN - передача до хоста, OUT - від хоста).
Транзакція на шині USB - це послідовність обміну пакетами між хостом і периферійним пристроєм, в ході якої може бути переданий або прийнятий один пакет даних. Коли клієнтське програмне забезпечення передає IRP рівню системного драйвера, USB-драйвер перетворює їх в одну або кілька транзакцій шини і потім передає отриманий перелік транзакцій драйверу контролера хоста.
Системний драйвер USB складається з драйвера USB і драйвера хост-контролера. Коли клієнтський рівень передає IRP рівню системного забезпечення USB, USB-драйвер перетворює їх в одну або кілька транзакцій шини і потім передає отриманий перелік транзакцій драйверу контролера хоста. Драйвер контролера хоста приймає від системного драйвера шини перелік транзакцій і виконує наступні дії:
· планує виконання отриманих транзакцій, додаючи їх до списку транзакцій;
· витягує зі списку чергову транзакцію і передає її рівню хост-контролера інтерфейсу шини USB;
· відстежує стан кожної транзакції аж до її завершення.
При виконанні всіх пов'язаних з командним пакетом транзакцій системний рівень повідомляє про це клієнтський рівень.
Рівень хост-контролера інтерфейсу шини USB отримує окремі транзакції від драйвера контролера хоста (у складі рівня системного забезпечення USB) і перетворює їх у відповідну послідовність операцій шини. У результаті цього USB-пакети передаються уздовж всієї фізичної ієрархії хабів до периферійного USB-пристрої.
Нижній рівень периферійного USB-пристрою називається рівнем інтерфейсу шини USB. Він взаємодіє з інтерфейсним рівнем шини USB на стороні хоста і передає пакети даних від хоста до периферійного пристрою у форматі, визначеному специфікацією USB. Потім він передає пакети вгору - рівню логічного USB-пристрої.
Середній рівень периферійного пристрою USB-пристрою називається рівнем логічного USB-пристрої. Кожне логічне USB-пристрій представляється набором своїх кінцевих точок, з якими може взаємодіяти системний рівень USB-хоста. Ці точки є джерелами і приймачами всіх комунікаційних потоків між хостом і периферійними USB-пристроями.
Самий верхній рівень периферійного USB-пристрою називається функціональним рівнем. Цей рівень відповідає рівню клієнтського забезпечення хоста. З погляду клієнтського рівня, нижележащие рівні потрібні для організації між ним і кінцевими точками прямих «каналів даних», які йдуть аж до функціонального рівня. А з точки зору нашої схеми функціональний рівень виконує наступні дії:
· отримує дані, що посилаються клієнтським рівнем хоста з кінцевих точок каналів даних нище рівня логічного USB-пристрої;
· посилає дані клієнтського рівню хоста, направляючи їх в кінцеві точки каналів даних нище рівня логічного USB-пристрої.
Логічно передача даних між кінцевою точкою і програмним забезпеченням проводиться за допомогою виділення каналу і обміну даними по цьому каналу, а з точки зору представлених рівнів, передача даних виглядає наступним чином:
Рис. 4. Рівні передачі даних
Кінцева точка (Endpoint) - це частина USB-пристрої, яка має унікальний ідентифікатор і є одержувачем або відправником інформації, що передається по шині USB. Простіше кажучи, це буфер, який зберігає кілька байт. Зазвичай це блок даних у пам'яті або регістр мікроконтролера. Дані, що зберігаються в кінцевій точці, можуть бути або прийнятими даними, або даними, які очікували передачу. Хост також має буфер для прийому і передачі даних, але хост не має кінцевих точок.
Кінцева точка має наступні основні параметри:
· частота доступу до шини;
· допустима величина затримки обслуговування;
· необхідна ширина смуги пропускання каналу;
· номер кінцевої точки;
· спосіб обробки помилок;
· максимальний розмір пакету, який кінцева точка може приймати або відправляти;
· використовуваний кінцевою точкою тип посилок;
· напрямок передачі даних.
Будь USB-пристрій має кінцеву точку з нульовим номером (Endpoint Zero). Ця точка дозволяє хосту опитува...