2017-01-02 5 views
0

В основном после каждой транзакции IN, OUT или SETUP у нас есть пакет ACK/NAK в конце транзакции. Если пакет рукопожатия является частью каждой передачи, как это происходит после пакета данных, которому предшествует токен-пакет, то зачем нам нужен этап статуса? Кажется, это присутствует в передаче управления.Что требуется фазе состояния передачи USB?

ответ

1

В конечных точках протокола находится в состоянии: ACTIVE, HALT, БЛОКИР.ДВИГ, ... в фазе состояния определяется этот статус (GET_STATUS (0x00) запрос (http://www.beyondlogic.org/usbnutshell/usb6.shtml))

Проверки фазового состояния является немного похож на контрольную сумму CRC на весь запрос не по каждому отдельному пакету.

http://www.beyondlogic.org/usbnutshell/usb4.shtml:..

"

Статус Stage сообщает о состоянии общего запроса и это еще раз изменяется в зависимости от направления передачи отчетов о состоянии всегда выполняется с помощью функции

В: Если хост отправил токены IN на этапе данных для приема данных, то хост должен подтвердить успешный прием этого данные. Это делается хостом, отправляющим токен OUT, за которым следует пакет данных нулевой длины. Теперь функция может сообщать о своем статусе на этапе подтверждения связи. ACK указывает, что функция завершила команду, теперь готова принять другую команду. Если во время обработки этой команды произошла ошибка, функция выдает STALL. Однако, если функция все еще обрабатывается, она возвращает NAK, указывающую хосту повторить этап состояния позже.

OUT: Если хост отправил токены OUT на этапе передачи данных для передачи данных, функция подтвердит успешный прием данных, отправив пакет нулевой длины в ответ на токен IN. Однако, если произошла ошибка, он должен выпустить STALL или если он все еще занят обработкой данных, он должен выпустить NAK, чтобы хост повторил фазу состояния позже.

"

или увидеть http://wiki.osdev.org/Universal_Serial_Bus

" Наконец, транзакция СТАТУС от функции к хосту указывает, был ли [контроль] передача успешной. "

+0

Я вижу, спасибо, что подтвердили это – quantum231