USB MSD. Часть 3. USB класс накопителей данных (перевод)
- переводы |
- USB |
- MSD |
- Mass Storage Device
Подробнее о состоянии останова (STALL)
Класс накопителей данных отличается необычным использованием состояния "STALL" для квинтирования передачи неструктурированных данных (bulk). В USB-устройствах других классов посылающая сторона может обозначать окончание обмена передачей короткого пакета с длиной блока данных меньшей, чем величина "wMaxPacketSize", включая нулевое значение. Накопители данных для окончания обмена или сообщения об ошибке используют состояние "STALL".
После того, как оконечная точка сообщила о состоянии "STALL", она переходит в режим останова. Для возобновления обмена с данной точкой хост должен послать запрос "Setup" с опцией "Clear Feature(ENDPOINT_HALT)" и адресом интересующей оконечной точки в поле "wIndex".
(Нулевая оконечная точка тоже может использовать состояние "STALL" для подтверждения связи. Приняв запрос "Get Max LUN" устройство с единственным логическим накопителем может возвратить "STALL" для сообщения о том, что команда не поддерживается. Но нулевая оконечная точка возобновляет нормальную работу с началом новой управляющей ("Setup") транзакции.)
Накопитель данных должен в обязательном порядке перевести в состояние останова одну или обе оконечные точки в случае:
- если на этапе пересылки данных устройство передало меньше данных, чем было запрошено, оно должно остановить передающую (IN) оконечную точку.
- если принят недействительный командный контейнер (CBW), устройство должно перевести в состояние останова передающую (IN) оконечную точку и, кроме того, либо перевести в состояние останова принимающую (OUT) оконечную точку, либо принимать и отбрасывать любые приходящие к ней данные.
- в случае появления внутренней ошибки, требующей вмешательства хоста, устройство может либо перевести в останов оконечную точку, с которой ведётся обмен, и выставить значение поля "bCSWStatus" в 0x02, либо перевести в останов обе оконечные точки до проведения процедуры сброса-восстановления.
Накопители данных могут переводить "bulk" оконечные точки в останов в следующих ситуациях:
- если устройство собралось передать больше данных, чем запрашивает хост. После завершения пересылки запрошенного в командном контейнере (CBW) объёма данных, устройство может перевести в останов передающую (IN) оконечную точку.
- если устройство собралось принять отличный от указанного хостом в командном контейнере (CBW) объём данных, оно может перевести в останов принимающую (OUT) оконечную точку.
- если на этапе пересылки данных устройство выяснило, что не может закончить команду, оно, в зависимости от ситуации, может перевести в останов принимающую (OUT) или передающую (IN) точку.
Ниже описываются тринадцать возможных вариантов использования останова (STALL) в командах для накопителей данных.
- блог пользователя teap0t
- 137909 просмотров
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика Imprecise Bus Faults в микроконтроллерах Cortex-M3/M4/M4F
- Self-powered камера
- Фоновый модулятор: беспроводная связь из ничего (перевод)
- Texas Instruments Analog Applications Journal SLYT612 "Снижение искажений в аналоговых КМОП ключах" (перевод)
- USB MSD. Часть 6. Команды SCSI (перевод)
- USB MSD. Часть 3. USB класс накопителей данных (перевод)
- Texas Instruments Application Report SBAA042 "Кодовые схемы, используемые в аналогово-цифровых преобразователях" (перевод)
- 10 принципов правильного интерфейса
- Релиз SDK на русский микропроцессор КРОЛИК
Recent comments
12 часов 28 минут назад
22 часа 28 минут назад
1 день 4 часа назад
1 день 13 часов назад
3 дня 2 минуты назад
3 дня 18 минут назад
3 дня 2 часа назад
3 дня 3 часа назад
4 дня 18 часов назад
4 дня 22 часа назад