USB MSD. Часть 6. Команды SCSI (перевод)


Пояснительные данные (SENSE DATA)

Столкнувшись с проблемами при исполнении команды или получив неизвестную команду, устройство заполняет структуру, содержащую подробную информацию о состоянии и устанавливает значение поля "bCSWStatus" (CSW) равным "0x01" (ошибка исполнения). Структура с информацией о состоянии называется пояснительными данными ("SENSE DATA") и передаётся с ответ на команду "REQUEST SENSE".

Пояснительные данные могут использоваться устройством для сообщения о событиях, требующих внимания хоста, таких как появление сменного носителя в устройстве. Для сообщения о событии устройство должно присвоить полю "SENSE KEY" значение "0x06" ("UNIT ATTENTION").

Содержимое структуры с пояснительными данными зависит от команды, типа устройства и состояния бита "DESC" в командном блоке запроса "REQUEST SENSE": "0" соответствует фиксированному формату, а "1" - переменному. Фиксированный формат использует для передачи данных о состоянии описанную в спецификации структуру, показанную в таблице 6-2. Структура переменного формата зависит от типа пересылаемой информации, будь то данные, связанные с конкретной командой, условия, касающиеся параметров исключения, или сведения, относящиеся к набору блоковых команд.

В сеансах обмена по аппаратному интерфейсу SCSI устройство возвращает коды состояния после каждой команды и состояние "CHECK CONDITION" указывает задатчику на шине SCSI на необходимость отправки запроса "REQUEST SENSE". При обмене через шину USB код состояния посылается в контейнере состояния (CSW).


Table 6-2. Фиксированный формат структуры "Sense Data"
 
Byte Bit Description
0 7 VALID
Устанавливается в "1", если поле "INFORMATION" содержит действительные данные
6..0 RESPONSE CODE
Для сведений о текущих ошибках устанавливается в "0x70". Для сведений об отложенных ошибках (для команд использующих кэширование) устанавливается в "0x71"
1   Выведен из употребления.
2 7..5 Используются ленточными накопителями
4 Зарезервирован
3..0 SENSE KEY
Содержит данные, классифицирующие ошибку
3..6   INFORMATION
Данные, зависящие от устройства или команды
7   ADDITIONAL SENSE LENGTH
Длина дополнительных пояснительных данных, следующих за данным полем, в байтах. 244 байта максимум
8..11   COMMAND-SPECIFIC INFORMATION
Данные, зависящие от команды
12   ADDITIONAL SENSE CODE ("ASC")
Код ошибки. Устанавливается в нуль, если не используется
13   ADDITIONAL SENSE CODE QUALIFIER ("ASCQ")
Расширенный код ошибки. Устанавливается в нуль, если не используется
14   FIELD REPLACEABLE UNIT CODE
Уточняет сбойный компонент. Устанавливается в нуль при отсутствии компонента для идентификации
15 7 SKSV
Если равен "1", то байты 15..17 содержат зависящие от "SENSE KEY" данные
6..0 Если SKSV равен "1", то поле содержит зависящие от "SENSE KEY" данные
16..17   Если SKSV равен "1", то поле содержит зависящие от "SENSE KEY" данные
18..n   Additional sense bytes (optional)
Необязательные пояснительные данные, добавляемые производителем оборудования

Некоторые значения поля "SENSE KEY"

S_NOT_READY 0x02 Не готов
S_MEDIUM_ERROR 0x03 Ошибка носителя
S_ILLEGAL_REQUEST 0x05 Некорректный запрос
S_UNIT_ATTENTION 0x06 Устройство требует внимания

Некоторые коды ошибок

ASC_PERIPHERAL_DEVICE_WRITE_FAULT 0x03 Ошибка записи переферийного устройства
ASCQ_PERIPHERAL_DEVICE_WRITE_FAULT 0x00
ASC_UNRECOVERED_READ_ERROR 0x11 Невосстановимая ошибка чтения
ASCQ_UNRECOVERED_READ_ERROR 0x00
ASC_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE 0x21 Адрес вышел из допустимого диапазона
ASCQ_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE 0x00
ASC_WRITE_PROTECTED 0x27 Установлена защита от записи
ASCQ_WRITE_PROTECTED 0x00
ASC_MEDIUM_NOT_PRESENT 0x3a Носитель отсутствует
ASCQ_MEDIUM_NOT_PRESENT 0x00

ПредпросмотрAttachmentSize
usb_msd_6.zip17.66 КБ