2012-04-26 5 views
0

Я использую ядро ​​Synopsys OTG в режиме устройства. Программирование изохронной высокоскоростной конечной точки IN (USB 2.0) для максимальной передачи на микрокадр (3 пакета 1024 байта) с использованием периодического FIFO, предназначенного для этой конечной точки. Он работает 99%% времени. Но иногда передача усекается. Например, первые 1024 байта перейдут на шину с помощью PID DATA0 (вместо правильного PID DATA2), а остальные 2048 байт не будут отправлены. Поскольку я запрограммировал количество пакетов, многоканальный, максимальный размер пакета и размер передачи правильно, я не уверен, что вызывает это.Synopsys USB OTG Controller (2.65a) иногда обрезает изохронный вход IN в режиме USB-устройства

Очевидно, что это очень конкретный вопрос, и у меня нет большой надежды получить ответ, но я решил, что выстрел в темноте стоит попробовать. Заранее спасибо.

ответ

1

Изохронные переводы не гарантируют доставку пакетов. Поэтому, если хост-контроллер имеет другие активные передачи, он будет тихо отбрасывать изохронные пакеты. Если вам нужна гарантированная упакованная доставка, вы должны использовать массовые переводы (но тогда это не гарантирует срок поставки).

Isochronous идеально подходит для приложений, таких как передача звука или видео, где требуется постоянное время доставки, но потеря некоторых кадров в порядке.

Спецификация устанавливает ограничения на шину, позволяя распределять не более 90% любого кадра для периодических передач (прерывание и изохронный) на полной скорости. На высокоскоростных шинах это ограничение уменьшается до 80% микрокадра может быть выделено для периодических передач. (c) http://www.beyondlogic.org/usbnutshell/usb4.shtml

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