Форматы блоков дескрипторов команд: а-б байт, б-10 байт, в-12 байт
Рисунок 5.8. Форматы блоков дескрипторов команд: а-б байт, б-10 байт, в-12 байт
Обратим внимание на порядок байт: первыми передаются старшие байты (бит MSB - самый старший), за ними - млад- шие (бит LSB - самый младший). Зарезервированные поля для совместимости с будущими стандартами должны иметь нулевые значения.
Исполнение команды завершается в фазе Status передачей байта состояния Status Byte. Байт не передается, если ко- манда завершена по сообщению Abort, Abort Tag, Bus Device Reset, Clear Queue, по условию Hard Reset или в случае не- ожиданного разъединения. В байте состояния используются только биты [5:1], возможные состояния приведены в табл. 5.13 (остальные зарезервированы).
Биты
76543210 | Состояние | Значение | |||
RROOOOOR | Good | Успешное завершение команды | |||
RR00001R | Check Condition | Указание на асинхронное событие | |||
R R 0 0 0 1 0 R | Condition Met | Запрошенная операция выполнена (команды Search Data и Pre-Fetch) | |||
R R 0 0 1 0 0 R | Busy | Занято (невозможен прием команды) | |||
R R 0 1 0 0 0 R | Intermediate | Успешное выполнение команды в цепочке | |||
RR01010R | Intermediate Condition Met | Удовлетворение запрошенной опера- ции в цепочке команд | |||
R R 0 1 1 0 0 R | Reservation Conflict | Попытка обратиться к ЛУ, зарезер- вированному другим И У | |||
RR10001R | Command Terminated | Завершение текущего процесса по сообщению Terminate I/O Process или по асинхронному событию | |||
R R 1 0 1 0 0 R | QueueFull | Очередь (маркированная) заполнена, процесс в очередь не поставлен |
Набор команд для устройств классов 0-9 приведен в табл. 5.14. Любое ЦУ SCSI-2 обязано поддерживать четыре команды: Inquiry, Request Sense, Send Diagnostic, Test Unit Ready. Они используются для конфигурирования системы, тестирования устройств и сообщений об ошибках и исклю- чительных ситуаций. Команда Inquiry позволяет получить информацию о ЛУ через стандартизованный блок данных длиной 96 байт: тип подключенного ПУ, возможность сме- ны носителя, поддержка 32- или 16-битного расширения, син- хронного обмена, относительной адресации, цепочек ко- манд, очередей и уведомления об асинхронных событиях.
Здесь же описываются уровень поддержки стандартов SCSI (ISO, ANSI, ECMA), идентификаторы производителя, уст- ройства и т. п. Формат блока по усмотрению производителя может быть расширен.
В графе "Применимость" указаны номера типов ПУ, соот- ветствующие табл. 5.12 (символ * соответствует всем ти- пам). Команды для каждого типа устройств могут быть обя- зательными - номер сопровождается символом m (Mandatory) - или необязательными - номер типа сопро- вождается символом о (Optional). Часть команд в устрой- ствах разных классов реализуется по-разному, что отмече- но обозначением *z.
Команда |
Код |
Применимость |
Назначение |
Change Definition |
40h |
*0 |
Модификация определений операций для ЛУ |
Compare |
39h |
*0 |
Побайтное сравнение данных двухЛУ1 |
Copy |
18h |
*0 |
Копирование данных с одно- го ЛУ на другое' |
Copy And Verify |
3Ah |
*0 |
Копирование данных с одно- го ЛУ на другое с верифи- кацией1 |
Erase |
19h |
1m |
Стирание (участка или до конца носителя) |
Erase (10) |
2Ch |
7o |
То же с 10-байтным блоком дескриптора |
Erase (12) |
ACh |
7o |
То же с 12-байтным блоком дескриптора |
Exchange Medium |
A6h |
80 |
Обмен носителями между двумя элементами устройства |
Format |
04h |
2o |
Выбор шрифтов и форм |
Format Unit |
04h |
Om 7o |
Форматирование устройства |
Get Data Buffer Status |
34h |
60 |
Опрос состояния буфера данных |
Get Message |
08h |
9o |
Прием пакета из коммуни- кационного устройства |
Команда |
Код |
Применимость |
Назначение |
Get Message (10) |
28h |
9o |
To же с 10-байтным блоком дескриптора |
Get Message (12) |
A8h |
9o |
То же с 12-байтным блоком дескриптора |
Get Window |
25h |
60 |
Получение информации о предварительно определен- ном окне |
Initialize Element Status |
07h |
8o |
Инициализация состояния элемента |
Inquiry |
12h |
*m |
Опрос типа устройства, уров- ня стандарта, идентифика- тора производителя, модели и т. п. |
Load Unload |
IBh |
lo |
Загрузка/разгрузка носителя |
Locate |
2Bh |
lo |
Позиционирование на заданный логический блок |
Lock-Unlock Cache |
36h |
Oo 4o 5o 7o |
Фиксация заданных логи- ческих блоков в кэше устройства и ее отмена |
Log Select |
4Ch |
*o |
Запись статистической ин- формации, обработка которой поддерживается устройством, в ЦУ или ЛУ |
Log Sense |
4Dh |
*o |
Считывание статистической информации с ЦУ или ЛУ |
Medium Scan |
38h |
4o7o |
Сканирование - поиск не- прерывной области чистых или записанных блоков |
Mode Select (6) |
15h |
*z |
Запись параметров носителя, ЦУ или ЛУ (с 6-байтным блоком дескриптора) |
Mode Select (10) |
55h |
*z |
То же с 10-байтным блоком дескриптора |
Mode Sense (6) |
lAh |
*z |
Считывание параметров носителя, ЦУ или ЛУ (с 6-байтным блоком де- скриптора) |
Команда |
Код |
Прииенимость |
Назначение |
Mode Sense (10) |
5Ah |
*г |
То же с 10-байтньш блоком дескриптора |
Move Medium |
A5h |
8ro |
Передача носителя |
Object Position |
31h |
6о |
Позиционирование (загруз- ка/выгрузка) сканируемого объекта |
Pause/Resume |
4Bh |
5о |
Пауза/продолжение воспро- изведения аудио |
Play Audio (10) |
45h |
5о |
Аудиовоспроизведение ука- занных логических блоков |
Play Audio (12) |
A5h |
5о |
То же с 12-байтньш блоком дескриптора |
Play Audio MSF |
47h |
5о |
Аудиовоспроизведение с адре- сацией MSF |
Play Audio Track/Index |
48h |
5о |
Аудиовоспроизведение с ука- занием треков и индексов |
Play Track Relative (10) |
49h |
5о |
Аудиовоспроизведение с адре- сацией относительно трека |
Play Track Relative (12) |
A9h |
5о |
То же с 12-байтным блоком дескриптора |
Position To Bement |
2Bh |
8о |
Позиционирование транс- портного элемента к указан- ному элементу |
Pre-Fetch |
34h |
Оо 4о 5о 7о |
Считывание блоков данных в кэш (без передачи ИУ) |
Prevent Allow Medium Removal |
lEh |
Оо 1о 4о 5о 7о 8о |
Запрет/разрешение смены носителя в ЛУ |
Print |
OAh |
2т |
Печать блока данных |
Read (6) |
08h |
От 1т 4о 5о 7о |
Чтение данных (с 6-байтным блоком дескриптора) |
Read(10) |
28h |
От 4т 5т 6т 7т |
То же с 10-байтньш блоком дескриптора |
Read(12) |
A8h |
4о 5о 7о |
То же с 12-байтным блоком дескриптора |
Read Block Limits |
05h |
1т |
Запрос ограничений на дли- ну блока (минимальная и максимальная длины) |
Команда |
Код |
Применимость |
Назначение |
Read Buffer |
3Ch |
*0 |
Чтение буфера |
Read Capacity |
25h |
Om 4m 7m |
Определение емкости Л У |
ReadCd-Rom Capacity |
25h |
5m |
Определение емкости CD-ROM (возможно быстрое определение с погрешностью) |
Read Defect Data |
37h |
Oo7o |
Чтение списков дефектных блоков (Plist - исходный список от изготовителя, Glist - список, заполняемый при эксплуатации) |
Read Defect Data (12) |
B7h |
7o |
То же с 12-байтным блоком дескриптора |
Read Bement Status |
B8h |
80 |
Чтение состояния элементов |
Read Generation |
29h |
7o |
Чтение максимально возмож- ного поколения для указан- ного логического блока |
Read Header |
44h |
5o |
Чтение заголовка логического блока CD-ROM |
Read Long |
3Eh |
Oo 4o 5o 7o |
"Длинное" чтение - данные блока и поля ЕСС |
Read Position |
34h |
lo |
Запрос позиции данных, находящихся в буфере (адрес начала и конца, количество блоков и байт) |
Read Reverse |
OFh |
lo |
Чтение блоков с текущей по- зиции в обратном направ- лении |
Read Sub-Channel |
42h |
5o |
Чтение данных субканала CD-ROM |
Read Toe |
43h |
5o |
Чтение таблицы содержимого CD-ROM |
Read Updated Block |
2Dh |
7o |
Чтение определенного поко- ления обновленного логичес- кого блока |
Reassign Blocks |
07h |
Oo4o7o |
Переназначение дефектных блоков |
Команда |
Код |
Применимость |
Назначение |
Receive |
08h |
3o |
Прием пакета |
Receive Diagnostic Results |
ICh |
*o |
Получение результатов диа- гностики |
Recover Buffered Data |
14h |
lo2o |
Восстановление данных, по- сланных в буфер, но не запи- санных (не напечатанных) из-за ошибки |
Release |
17h |
Om 2m 4m 5m 6m 7m 80 |
Освобождение зарезервиро- ванного ЛУ, экстента или элемента |
Request Sense |
03h |
Jj |
Опрос уточненного состояния |
Request Volume Element Address |
B5h |
80 |
Передача результатов коман- ды SEND VOLUME TAG |
Reserve |
16h |
Om 1m 2m 4m 5m 6m 7m 80 |
Предотвращение использо- вания Л У (его экстента или элемента) другим ИУ |
f i\yflliJ |
Olh |
1m |
Перемотка носителя к началу раздела |
Rezero Unit |
Olh |
Oo 4o 5o 7o 80 |
Приведение ЛУ в определен- ное состояние |
Scan |
IBh |
6o |
Сканирование данных в определенном окне |
Search Data Equal |
31h |
Oo 4o 5o 7o |
Поиск данных, (не) совпа- дающих с эталоном2 |
Search Data Equal (12) |
Blh |
4o 5o 7o |
То же с 12-байтным блоком дескриптора2 |
Search Data High |
30h |
Oo 4o 5o 7o |
Поиск данных, (не) больших эталона2 |
Search Data High (12) |
BOh |
4o 5o 7o |
То же с 12-байтным блоком дескриптора2 |
Search Data Low |
32h |
Oo5o7o |
Поиск данных, (не) меньших эталона2 |
Search Data Low (12) |
B2h |
4o 5o 7o |
То же с 12-байтным блоком дескриптора2 |
Seek(6) |
OBh |
Oo 4o 5o 7o |
Позиционирование (с 6-байт- ным блоком дескриптора)3 |
Команда |
Код |
Применимость |
Назначение |
Seek(10) |
2Bh |
Oo 4o 5o 7o |
Позиционирование - поиск логического адреса (с 10-байт- ным блоком дескриптора)3 |
Send |
OAh |
3m |
Посылка пакета |
Send (10) |
2Ah |
60 |
Посылка данных в устройство |
Send Diagnostic |
IDh |
*m |
Запуск теста ЦУ. Ответом будет состояние Good, если тест прошел успешно, или Check Condition в случае ошибки |
Send Message |
OAh |
9m |
Посылка пакета в коммуни- кационное устройство |
Send Message (10) |
2Ah |
9o |
То же с 10-байтным блоком дескриптора |
Send Message (12) |
AAh |
9o |
То же с 12-байтным блоком дескриптора |
Send Volume Tag |
B6h |
80 |
Посылка тега тома (шаблона) для поиска его в элементах или создания нового тега |
Set Limits |
33h |
Oo 4o 5o 7o |
Определение области логи- ческих адресов, над которыми могут выполняться операции цепочки команд |
Set Limits (12) |
B3h |
4o 5o 7o |
То же с 12-байтным блоком дескриптора |
Set Window |
24h |
6m |
Определение окна сканиро- вания |
Slew And Print |
OBh |
2o |
Прогон бумаги и печать |
Space |
llh |
1m |
Относительное позициони- рование (вперед и назад) на заданное число блоков, файлов, маркеров и т. п. |
Start Stop Unit |
IBh |
Oo 4o 5o 7o |
Разрешение/запрет операций с носителем, извлечение но- сителя* |
Stop Print |
IBh |
2o |
Останов печати с очисткой буфера или без нее |
Конаида |
Код |
Применимость |
Назначение |
Synchronize Buffer |
lOh |
2o |
Синхронизация буфера - печать всего содержимого, при невозможности - сооб- щение об ошибке |
Synchronize Cache |
35h |
Oo 4o 5o 7o |
Синхронизация кэша - запись несохраненных дан- ных заданного диапазона ад- ресов на носитель |
Test Unit Ready |
OOh |
*m |
Опрос готовности ЛУ |
Update Block |
3Dh |
7o |
Обновление логического блока |
Verify |
2Fh |
Oo5o7o |
Верификация - проверка возможности безошибочного считывания блоков данных с носителя |
Verify |
13h |
lo |
Тоже |
Verify (10) |
2Fh |
4o5o7o |
То же или проверка чистоты блоков (с 10-байтным блоком дескриптора) |
Verify (12) |
AFh |
4o 5o 7o |
То же с 12-байтным блоком дескриптора |
Write (6) |
OAh |
Oo 1m 4o 7o |
Запись блоков данных, переданных ИУ (с 6-байт- ным блоком дескриптора) |
Write (10) |
2Ah |
Oo4m 7m |
Запись блоков данных, переданных ИУ (с 10-байт- ным блоком дескриптора) |
Write (12) |
AAh |
4o7o |
То же с 10-байтным блоком дескриптора |
Write And Verify |
2Eh |
Oo4o7o |
Запись блоков данных, переданных ИУ, с верифика- цией записи |
Write And Verify (12) |
AEh |
7o4o |
То же с 12-байтным блоком дескриптора |
Write Buffer |
3Bh |
*o |
Запись в буфер (но не на носитель) или загрузка микрокода |
Команда |
Код |
Применимость |
Назначение |
Write Filemarks |
lOh |
1m |
Запись маркера файлов |
Write Long |
3Fh |
Oo4o7o |
"Длинная" запись - блока данных и поля ЕСС |
Write Same |
41h |
Oo |
Запись блока данных, пере- данных ИУ, в группу смеж- ных блоков или до конца носителя5 |
2 Данные ищутся сравнением указанного числа логических записей с эталоном. Логические записи определяются длиной, начальным логи- ческим блоком и смещением внутри него. Можно потребовать попада- ния искомых данных в один логический блок.
3 Команда эффективна для ленточных устройств прямого доступа.
4 Команда STOP UNIT для устройств с кэшированием перед остановом автоматически выполняет синхронизацию кэша.
5 Первые 4 байта в записываемых блоках могут быть заменены на физи- ческий или логический адрес блока.