USB MSD. Часть 6. Команды SCSI (перевод)
- переводы |
- USB |
- MSD |
- Mass Storage Device |
- AN3927
Обработка команд и событий
Приняв команду, программное обеспечение устройства должно её декодировать и подготовить адекватный ответ.
Состояние UNIT ATTENTION
Когда происходит событие о котором хост должен знать перед обращением к носителю, устройство должно сформировать состояние "UNIT ATTENTION". Обстоятельства, требующие состояния "UNIT ATTENTION", включают изменение данных структуры "INQUIRY", подключение съёмного носителя и сброс устройства или логического накопителя.
В состоянии "UNIT ATTENTION" устройство должно отвергать все команды за исключением "INQUIRY", "REPORT LUNS" и "REQUEST SENSE". Приняв любую другую команду, устройство должно возвратить значение "0x01" ("Ошибка исполнения") в поле "bCSWStatus" (CSW), после чего хост сделает запрос "REQUEST SENSE", чтобы получить информацию о состоянии.
В процессе подготовки к ответу на команду "REQUEST SENSE" устройство присваивает полю "SENSE KEY" значение "0x06" ("UNIT ATTENTION") и инициализирует поля "ADDITIONAL SENSE CODE" и "ADDITIONAL SENSE CODE QUALIFIER" значениями, поясняющими причину смены состояния. Устройство выходит из состояния "UNIT ATTENTION" сразу после передачи хосту поясняющей информации.
Оповещение хоста о смене носителя
Устройства, использующие съёмные карты памяти, должны информировать хост о появлении носителя. Кроме того, устройство должно сообщать хосту о попытках доступа к отсутствующему носителю или иной причине неготовности к выполнению операций чтения, записи или сравнения.
Для оповещения хоста о появлении съёмного носителя устройство должно перейти в состояние "UNIT ATTENTION" и присвоить полю "ADDITIONAL SENSE CODE" значение "0x28", а полю "ADDITIONAL SENSE CODE QUALIFIER" - "0x00", определённые в спецификации для блоковых устройств (SPC) как "NOT READY TO READY CHANGE, MEDIUM MAY HAVE CHANGED" ("Переход из состояния "не готов" в состояние "готов", возможна смена носителя").
По приёме команды, обращающейся к отсутствующему носителю, устройство должно присвоить полю "SENSE KEY" значение "0x02" (NOT READY), полю "ADDITIONAL SENSE CODE" значение "0x3A", а "ADDITIONAL SENSE CODE QUALIFIER" - "0x00", определённых в спецификации SPC как "MEDIUM NOT PRESENT" ("Носитель отсутствует").
После сообщения "MEDIUM NOT PRESENT" хост может делать циклический запрос "TEST UNIT READY" для обнаружения момента появления носителя. После сообщения о смене носителя хост может запросить его параметры.
Аналогично, если самому устройству необходимо получить доступ к содержимому собственного диска (напрямую, а не через USB хост), оно должно уведомить хост обо всех внесённых в содержимое диска изменениях. Сделать это можно через состояние "UNIT ATTENTION", как было описано выше. Другим вариантом является разрешение на доступ к собственному носителю только в отключенном от шины USB состоянии. Например, регистрирующее устройство может собирать и записывать данные в полевых условиях. По возвращении устройство подключается к шине USB, процесс сбора данных прекращается, а вместо него начинается выполнение команд хоста. Выяснить возможность самостоятельной работы с носителем устройство может по наличию напряжения "VBUS" или успешному завершению процедуры опознания хостом.
- блог пользователя teap0t
- 177311 просмотров
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика 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
5 лет 19 недель назад
5 лет 34 недели назад
5 лет 45 недель назад
5 лет 46 недель назад
6 лет 2 недели назад
6 лет 26 недель назад
6 лет 28 недель назад
6 лет 31 неделя назад
6 лет 42 недели назад
7 лет 21 неделя назад