Я хотел бы смоделировать сценарий, в котором устройство USB физически удалено из порта, однако я не совсем уверен, будет ли Windows рассматривать сценарий отключения порта точно так же, как внезапное и неожиданное удаление физического устройства. ,

Если поведение не идентично, как они отличаются?

1 ответ1

0

Windows отключит USB-порт только в случае катастрофического сбоя связи, когда устройство не сможет ответить правильным протоколом после трех попыток транзакции (обычно устанавливается аппаратно). Если произойдет ошибка порта, контроллер перейдет в "отключенное состояние", см. Раздел 11.5.1 спецификаций USB 2.0. Затем программное обеспечение хоста попытается сбросить порт, если он все еще подключен (поддерживает D+ = высокий уровень), и если сброс не восстанавливает связь три или четыре раза, порт / устройство будет считаться мертвым, и не более попытки будут сделаны.

В случае "неожиданного удаления" устройства сценарий другой: порт будет воспринимать событие "отключение". Если в режиме HS завершение будет потеряно, и отражение с двойной амплитудой установит флаг отключения во время удлиненной фазы EOP пакета SOF. В режиме LS/FS порт имеет таймер, который определяет состояние "одностороннего нуля", также известного как "SE0". Если кабель / устройство пропали, состояние линии SE0 будет оставаться дольше 2,5 мкс, и снова состояние отключения будет сообщаться хосту. См. Раздел 11.5.2.

При обнаружении отключения порт автоматически перейдет в "отключенное состояние". Затем, если подтягивание действительно потеряно из-за физического разъединения, порт переходит в состояние "отключено". Поскольку должно быть прерывание "отключить" вместо прерывания «ошибка порта / ошибка транзакции», хост не будет пытаться связаться с этим портом. См. Рисунок 11-10 для диаграммы состояния порта в нисходящем направлении и следующих описаний состояний.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .