2013-10-25 2 views
2
  1. Изохронные конечные точки - это только один способ. Но одиночная изохронная передача IN описывается в различных источниках (например, здесь http://www.beyondlogic.org/usbnutshell/usb4.shtml#Isochronous) как один пакет токена IN (от хоста к устройству), за которым следует один пакет DATA (от устройства к хосту). Поэтому я вижу общение в обоих направлениях. Является ли токен-пакет от хоста полученным тем же IN изохронным конечным пунктом, который затем отправляет данных?
  2. Что такое синхронизация? ЗДЕСЬ: http://wiki.osdev.org/Universal_Serial_Bus#Supporting_Isochronous_Transfers мы читаем: «Благодаря частоте дискретизации конкретных приложений, различным технологиям аппаратных часов, политикам планирования в операционной системе или даже физическим аномалиям, хост и изохронное устройство могут выпасть из синхронизации». Но как? Я понимаю последовательность событий вроде этого: устройство заполняет свой исходящий буфер данными и ждет токена (возможно, некоторое прерывание). Хост отправляет токен-пакет и ждет пакет данных, который (я думаю) должен прибыть мгновенно. Последовательность повторяется каждый кадр (@ F.S.), И все счастливы. Не является ли токен-пакет синхронизирующим ответ с устройства?
  3. Здесь http://wiki.osdev.org/Universal_Serial_Bus#SYNC_Field мы читаем: «Все USB-пакеты начинаются с поля SYNC, что неудивительно, что механизм синхронизации между получателем и отправителем». Поэтому я снова спрашиваю: зачем синхронизировать изохронные передачи другим способом, чем это?

ответ

4
  1. Все операции USB всегда инициируются хостом. Например. для изохронной транзакции IN Хост сначала запросит устройство для следующего фрагмента данных. Это, конечно, поток данных к устройству, но на более низком уровне протокола (Token Packets). Таким образом, некоторые данные управления отправляются на устройство, но значимые данные (Data Packts) отправляются только от устройства (в направлении IN). Когда вы разрабатываете программное обеспечение для устройства, вы часто можете абстрагироваться от деталей протокола шины, потому что они обрабатываются аппаратным обеспечением (периферийное устройство USB). Сообщения низкого уровня не входят в конечную точку. Конечные точки находятся на более высоком уровне.

  2. Рассмотрите USB-микрофон: он записывает аудиоданные с очень определенной частотой дискретизации, которая основана на локальном генераторе устройства. Это только вопрос времени, когда часы Хоста и микрофона будут дрейфовать. Через несколько минут появится пробел в данных (или произойдет переполнение буфера), потому что микрофон записывает данные с немного иной скоростью, чем ожидает USB (из дескриптора конфигурации устройства). Поэтому им нужна какая-то синхронизация.

  3. Поле SYNC находится на нижнем слое. Это только для битовой синхронизации и не следует путать с синхронизацией для изохронных конечных точек (2)

Вы можете захотеть взглянуть на официальный USB 2.0 Specification (usb_20.pdf) вместо всех третьих лиц wikis, который вас смутил.

Смежные вопросы