Команды управления устройствами CD-ROM
здесь рассмотрены все основные команды управления CD-ROM. При этом в категорию поддерживаемых приводов входят не только устройства с интерфейсом SCSI, но и более распространенным — IDE. Поэтому можно применять эти команды к любым приводам CD-ROM. Некоторые из команд могут не поддерживаться отдельными приводами, и при описании материала будут оговариваться данные ограничения. Изучение главы даст возможность самостоятельно разрабатывать различные программы для работы с CD-ROM: аудиоплейеры, модули управления скоростью привода, программы для прямого считывания информации с лазерного диска (например, для цифрового копирования музыкальных дисков на компьютер) и другие полезные программы.
Как известно, существуют различные стандарты хранения данных на лазерном диске. Это могут быть музыкальные, видео-, компьютерные, а также смешанные диски. Любой диск имеет определенную структуру размещения информации и имеет от 1 до 99 записываемых дорожек (для аудиодисков треков). Для доступа к данным используется система адресации двух типов: по логическому адресу (ЛА) и по абсолютному адресу (МСФ — минута, секунда, фрейм).
Блоком называется набор байтов, имеющий единичное значение логического адреса. Он содержит определенное количество байтов, зависящее от формата диска. Несколько блоков образуют сектор. Сектор определяет единицу хранения информации в зависимости от формата диска (например, для аудиодиска значение сектора равно 1/75 с). Стандартный сектор CD-ROM содержит 2352 байта. Из них 2048 байт используются для данных, 12 байтов — для синхронизации, 4 байта определяют адрес сектора и оставшиеся 288 байтов могут содержать дополнительные сведения. Кроме этого, размер физического сектора может иметь несколько других стандартных значений: 2048 байт на сектор, 2336 байт на сектор и 2340 байт на сектор. Определенное количество секторов образуют дорожку. Длина дорожки не может иметь менее 300 секторов. Стандартный диск (74 мин) содержит 333 000 секторов (74 мин х 60 с х 75 секторов в секунду). Исходя из этого, полный размер диска в байтах будет равен: для аудиодиска — 333000x2352 байт, а для диска с данными — 333 000 x 2048 байт. Каждый сектор состоит из определенного количества логических блоков, которые могут иметь один из следующих размеров: 512, 1024 или 2048 байт.
Стандартом CD-ROM предусмотрены небольшие участки на диске между треками, являющиеся участками перехода. Для аудиодисков они называются паузами, а для дисков с данными их можно называть промежутками с отсутствием данных. Стандартом определены минимальные (150 секторов) значения промежутка, но максимальное значение может быть любым.
Адрес (МСФ) начала дорожки для диска с данными имеет точное значение, а для аудио может изменяться ±75 секторов. Необходимо это учитывать при работе с определенным диском. Кроме того, информация об индексах не содержится в оглавлении диска. Сектор без заданного значения индекса имеет тот же индекс, что и предыдущий сектор. Можно записать диск с одной дорожкой и одним индексом, а можно использовать до 99 дорожек, каждая из которых будет иметь до 99 индексов.
Формат сектора для CD-ROM Data Mode 1 выглядит так:
- 12 байтов синхронизации;
- 4 байта заголовка (М — абсолютное значение от 00 до 99, С — абсолютное значение от 00 до 59, Ф — абсолютное значение от 00 до 74, поле типа диска);
- 2048 байт поля пользовательских данных;
- 4 байта кода ошибки;
- 8 байтов, равных нулю;
- 276 байтов многоуровневого кода коррекции ошибок.
Формат сектора для CD-ROM Data Mode 2 выглядит так:
- 12 байтов синхронизации;
- 4 байта заголовка (М — абсолютное значение от 00 до 99, С — абсолютное значение от 00 до 59, Ф — абсолютное значение от и 00 до 74, поле типа диска);
- 2336 байт поля пользовательских данных (2048 байт формата Mode 1 плюс 288 байт дополнительных данных).
Формат подканала имеет восемь составляющих, обозначаемых английскими буквами Р, Q, R, S, T, U, V, W. Значение Р является битом флага, который может использоваться для управления выключением звука и определения границы дорожки диска. Значение Q содержит определенную информацию, длиной 98 бит и выглядит так:
- 2 бита подканала синхронизации;
- 4 бита поля адреса, определяющего тип данных подканала;
- 4 бита контрольного поля, содержащего информацию о типе сектор;
- 8 битов содержат значение номера трека;
- 8 битов содержат значение номера индекса;
- 24 бита кодируют значение адреса МСФ;
- 8 битов зарезервировано;
- 24 бита кодируют абсолютный адрес в формате МСФ;
- 16 битов содержат код ошибки.
При работе с аудиодиском получение информации о подканале является единственным способом определить границы сектора.
Значение Q может иметь еще два определения, которые являются необязательными. Одно служит для обеспечения непрерывного потока информации и определения номера диска (так называемый код UPC/EAN, Universal Product Code/European Article Numbering). Второй определяет международный код стандартизации ISRC (International Standard Recording Code).
После того как вставлен диск, происходит инициализация готовности устройства к считыванию данных, а также получение необходимой информации о диске из его заголовочной области. Неготовность устройства CD-ROM к чтению данных может быть вызвана следующими причинами:
- Отсутствует диск.
- Устройство считывания не может загрузить или выгрузить диск.
- Не удается прочитать заголовочную область диска.
- Контроллер устройства неисправен.
После того как диск инициализирован, он устанавливается в начальную позицию воспроизведения, хотя это не является правилом, поскольку до инициализации могли выполняться и другие команды. Когда диск вставлен в дисковод и должным образом определен, можно посылать ему любые команды управления.
Каждая команда управления представляет собой числовой код в шестнадцатеричном исчислении (например, BDh) и состоит из нескольких байт. Первый байт содержит код команды, а остальные служат для передачи дополнительных параметров и получения возвращаемых значений после выполнения команды. Список команд управления CD-ROM с интерфейсом SCSI приведен в табл. 1.
Таблица 1. Команды управления CD-ROM (SCSI)
Имя команды | Код команды | Поддержка CD-ROM |
---|---|---|
CHANGE DEFINITION | 40h | Необязательная |
COMPARE | 39h | Необязательная |
СОРУ | 18h | Необязательная |
COPY AND VERIFY | 3Ah | Необязательная |
INQUIRY | 12h | Обязательная |
LOCK/UNLOCK CASHE | 36h | Необязательная |
LOG SELECT | 4Ch | Необязательная |
LOG SENSE | 4Dh | Необязательная |
MODE SELECT (6) | 15h | Необязательная |
MODE SELECT (10) | 55h | Необязательная |
MODE SENSE (6) | 1Ah | Необязательная |
MODE SENSE (10) | 5Ah | Необязательная |
PAUSE/RESUME | 4Bh | Необязательная |
PLAY AUDIO (10) | 45h | Необязательная |
PLAY AUDIO (12) | A5h | Необязательная |
PLAY AUDIO MSF | 47h | Необязательная |
PLAY AUDIO TRACK/INDEX | 48h | Необязательная |
PLAY TRACK RELATIVE (10) | 49h | Необязательная |
PLAY TRACK RELATIVE (12) | A9h | Необязательная |
PRE-FETCH | 34h | Необязательная |
PREVENT/ALLOW MEDIUM REMOVAL | 1Eh | Необязательная |
READ (6) | 08h | Необязательная |
READ (10) | 28h | Обязательная |
READ (12) | A8h | Необязательная |
READ BUFFER | 3Ch | Необязательная |
READ CD-ROM CAPACITY | 25h | Обязательная |
READ HEADER | 44h | Необязательная |
READ LONG | 3Eh | Необязательная |
READ SUB-CHANNEL | 42h | Необязательная |
READ TOC | 43h | Необязательная |
RECEIVE DIAGNOSTIC RESULTS | 1Ch | Необязательная |
RELEASE | 17h | Обязательная |
REQUEST SENSE | 03h | Обязательная |
RESERVE | 16h | Обязательная |
RE ZERO UNIT | 01h | Необязательная |
SEARCH DATA EQUAL (10) | 31h | Необязательная |
SEARCH DATA EQUAL (12) | B1h | Необязательная |
SEARCH DATA HIGH (10) | 30h | Необязательная |
SEARCH DATA HIGH (12) | B0h | Необязательная |
SEARCH DATA LOW (10) | 32h | Необязательная |
SEARCH DATA LOW (12) | B2h | Необязательная |
SEEK (6) | 0Bh | Необязательная |
SEEK (10) | 2Bh | Необязательная |
SEND DIAGNOSTIC | 1Dh | Обязательная |
SET LIMITS (10) | 33h | Необязательная |
SET LIMITS (12) | B3h | Необязательная |
START STOP UNIT | 1Bh | Необязательная |
SYNCHRONIZE CACHE | 35h | Необязательная |
TEST UNIT READY | 00h | Обязательная |
VERIFY (10) | 2Fh | Необязательная |
VERIFY (12) | AFh | Необязательная |
WRITE BUFFER | 3Bh | Необязательная |
Следующие коды команд могут использоваться производителями CD-ROM по своему усмотрению: 02h, 05h, 06h, 09h, OCh-llh, 13h, I4h, I9h—24h. 26h, 27h, 29h, и COh—FFh. Остальные коды зарезервированы для последующих расширений стандарта CD-ROM. Описание специальных кодов изготовителей устройств CD-ROM следует искать у конкретного производи теля привода.
Теперь приведем таблицу команд управления для CD-ROM с интерфейсом IDE (табл. 2).
Таблица 2. Команды управления CD-ROM (IDE)
Имя команды | Код команды | Поддержка CD-ROM |
---|---|---|
INQUIRY | 12h | Обязательная |
LOAD/UNLOAD CD | A6h | Необязательная |
MECHANISM STATUS | BDh | Обязательная |
MODE SELECT (10) | 55h | Обязательная |
MODE SENSE (10) | 5Ah | Обязательная |
PAUSE/RESUME | 4Bh | Необязательная |
PLAY AUDIO (10) | 45h | Необязательная |
PLAY AUDIO MSF | 47h | Необязательная |
PLAY CD | BCh | Необязательная |
PREVENT/ALLOW MEDIUM REMOVAL | 1Eh | Обязательная |
READ (10) | 28h | Обязательная |
READ (12) | A8h | Обязательная |
READ CD-ROM CAPACITY | 25h | Обязательная |
READ CD | BEh | Обязательная |
READ CD MSF | B9h | Обязательная |
READ HEADER | 44h | Обязательная |
READ SUB-CHANNEL | 42h | Обязательная |
READ TOC | 43h | Обязательная |
REQUEST SENSE | 03h | Обязательная |
SCAN | BAh | Необязательная |
SEEK | 2Bh | Обязательная |
SET CD SPEED | BBh | Необязательная |
STOP PLAY/SCAN | 4Eh | Обязательная |
START STOP UNIT | 1Bh | Обязательная |
TEST UNIT READY | 00h | Обязательная |
Как видно из таблицы, команды управления CD-ROM с интерфейсом IDE практически не отличаются от аналогичных команд для интерфейса SCSI. Однако появилось и несколько новых команд: LOAD/UNLOAD CD, MECHANISM STATUS, READ CD, SCAN и STOP PLAY/SCAN. Поскольку команды не имеют больших отличий, не будем описывать их два раза, а рассмотрим в алфавитном порядке с учетом различий и дополнений. Как видно из таблицы, часть команд являются стандартными, истинными для всех совместимых устройств.
2021-04-01
Google сообщил о запуске проекта Dunant
Проект Dunant, начатый в 2018 году, был запущен в эксплуатацию. Трансатлантический интернет-кабель соединяет США и континентальную Европу. Общая протяженность...
подробнее2020-04-06
Новшества в обновленной Windows 10
Корпорация Microsoft завершила разработку обновления, в котором добавлено множество функций. Обновление содержит как доработку уже имеющихся систем, так...
подробнее