- Изохронные конечные точки - это только один способ. Но одиночная изохронная передача IN описывается в различных источниках (например, здесь http://www.beyondlogic.org/usbnutshell/usb4.shtml#Isochronous) как один пакет токена IN (от хоста к устройству), за которым следует один пакет DATA (от устройства к хосту). Поэтому я вижу общение в обоих направлениях. Является ли токен-пакет от хоста полученным тем же IN изохронным конечным пунктом, который затем отправляет данных?
- Что такое синхронизация? ЗДЕСЬ: http://wiki.osdev.org/Universal_Serial_Bus#Supporting_Isochronous_Transfers мы читаем: «Благодаря частоте дискретизации конкретных приложений, различным технологиям аппаратных часов, политикам планирования в операционной системе или даже физическим аномалиям, хост и изохронное устройство могут выпасть из синхронизации». Но как? Я понимаю последовательность событий вроде этого: устройство заполняет свой исходящий буфер данными и ждет токена (возможно, некоторое прерывание). Хост отправляет токен-пакет и ждет пакет данных, который (я думаю) должен прибыть мгновенно. Последовательность повторяется каждый кадр (@ F.S.), И все счастливы. Не является ли токен-пакет синхронизирующим ответ с устройства?
- Здесь http://wiki.osdev.org/Universal_Serial_Bus#SYNC_Field мы читаем: «Все USB-пакеты начинаются с поля SYNC, что неудивительно, что механизм синхронизации между получателем и отправителем». Поэтому я снова спрашиваю: зачем синхронизировать изохронные передачи другим способом, чем это?
ответ
Все операции USB всегда инициируются хостом. Например. для изохронной транзакции IN Хост сначала запросит устройство для следующего фрагмента данных. Это, конечно, поток данных к устройству, но на более низком уровне протокола (Token Packets). Таким образом, некоторые данные управления отправляются на устройство, но значимые данные (Data Packts) отправляются только от устройства (в направлении IN). Когда вы разрабатываете программное обеспечение для устройства, вы часто можете абстрагироваться от деталей протокола шины, потому что они обрабатываются аппаратным обеспечением (периферийное устройство USB). Сообщения низкого уровня не входят в конечную точку. Конечные точки находятся на более высоком уровне.
Рассмотрите USB-микрофон: он записывает аудиоданные с очень определенной частотой дискретизации, которая основана на локальном генераторе устройства. Это только вопрос времени, когда часы Хоста и микрофона будут дрейфовать. Через несколько минут появится пробел в данных (или произойдет переполнение буфера), потому что микрофон записывает данные с немного иной скоростью, чем ожидает USB (из дескриптора конфигурации устройства). Поэтому им нужна какая-то синхронизация.
Поле SYNC находится на нижнем слое. Это только для битовой синхронизации и не следует путать с синхронизацией для изохронных конечных точек (2)
Вы можете захотеть взглянуть на официальный USB 2.0 Specification (usb_20.pdf) вместо всех третьих лиц wikis, который вас смутил.
- 1. Android, AOA2, USB Isochronous Audio Streaming
- 2. Android isochronous data transfer
- 3. Указатель на путаницу указателя
- 4. Передает ли данные в USB-протокол, специфичный для конечной точки?
- 5. Desktop java app копирует и передает данные андроида через USB
- 6. NPM установить глобальную путаницу
- 7. Аудированная аудированная_изменяет путаницу
- 8. Rails найти путаницу
- 9. # включить путаницу и классы
- 10. C: Выделяя путаницу памяти
- 11. Модуль Nodejs экспортирует путаницу
- 12. Сохранять и освобождать путаницу?
- 13. ccTouchesMoved [затрагивает anyObject] путаницу?
- 14. SQL объединяет путаницу
- 15. SQL Синтаксис вызывает путаницу
- 16. has_many: через путаницу
- 17. Python импортирует путаницу
- 18. Твиттер, ограничивающий путаницу?
- 19. Linq содержит путаницу
- 20. Показать/скрыть угловую путаницу
- 21. nginx прослушать директиву путаницу
- 22. Дженерики переопределяют путаницу
- 23. Закладка искать путаницу
- 24. Ruby Hash инициализировать путаницу
- 25. Вставить или обновить путаницу
- 26. класс Строка сделать путаницу
- 27. Чувствуете путаницу в отношении EKEventStatus
- 28. Имея некоторую путаницу с LINQ
- 29. Включение Procs в путаницу блоков
- 30. Данные сервера сокетов принимают путаницу