а также других устройств) набора
6.7. Пакетный интерфейс АТДР1
Для подключения к интерфейсу АТА накопителей CD-ROM и стриммеров ( а также других устройств) набора регистров и системы команд АТА недостаточно. Для них существует аппаратно-программный интерфейс ATAPI (АТА Package Interface - пакетный интерфейс АТА). Устройство ATAPI поддерживает минимальный набор команд АТА, который
неограниченно расширяется 16-байтным командным паке- том, посылаемым хост-контроллером в регистр данных уст- ройства по команде Packet. Структура командного пакета пришла от SCSI, что обеспечивает схожесть драйверов для устройств со SCSI и ATAPI. Классификация устройств совпа- дает с принятой в SCSI (см. табл. 5.12), класс устройства сообщается им в начале блока параметров идентификации.
Интерфейс ATAPI может использоваться с неинтеллектуаль- ными адаптерами АТА, поскольку для хост-адаптера поддержка ATAPI может выполняться чисто программно. Сложные кон- троллеры АТА, имеющие кэш-память и собственный процес- сор, неориентированные на интерфейс ATAPI, могут не дога- даться, что в регистр данных устройства кроме 512-байтных блоков данных можно записывать 16-байтный с командным пакетом. Устройства ATAPI имеют следующие особенности:
Команду Identify Device они должны отвергать, чтобы хост не пытался к ним обратиться как к АТА-устройствам. Для идентификации устройств ATAPI предназначена специ- альная команда Identify Packet Device, а блок параметров, сообщаемых устройством, трактуется иначе (табл. 6.12).
Для программного сброса устройства ATAPI предназна- чена команда Device Reset, которую устройства АТА от- вергают. Программный сброс через регистр управления не прекращает выполнения команды Packet
Специфические команды вместе с необходимыми пара- метрами передаются по команде Packet, код которой яв- ляется недействительным для устройств АТА.
Слово |
F/V |
Назначение |
о |
F |
Общая конфигурационная информация Биты [15:14] = 10 для всех устройств ATAPI Бит 13 - зарезервирован Биты 12-8 - набор поддерживаемых команд (класс устройства) Бит 7: 1 - устройство со сменным носителем Бит 6-5: 00 - устройство установит DRQ в течение 3 мс после получения комавды Packet, |
Слово |
F/V |
Назначение |
01 - устройство введет INTRQ по установке DRQ после получения команды Packet, 10 - устройство установит DRQ в течение 50 мкс после получения команды Packet, 11 -зарезервировано Биты 4-2 - зарезервированы Биты 1-0 - длина командного пакета: 00-12 байт, 01 -16 байт, 1х - зарезервировано |
||
1-9 |
R |
Зарезервировано |
10-19 |
F |
Серийный номер (20 символов ASCII), если слово 10 не нулевое; иначе - специфичная информация |
20-22 |
R |
Зарезервировано |
23-26 |
F |
Версия встроенного ПО (8 символов ASCII), если слово 23 не нулевое; иначе - специфичная информация |
27-46 |
F |
Номер модели (40 символов ASCII), если слово 27 не нулевое; иначе - специфичная информация |
47-48 |
R |
Зарезервировано |
49 |
Возможности: |
|
F |
Бит 15: 1 - поддержка чередующегося (interleaved) DMA |
|
F |
Бит 14: 1 - поддержка очередей команд |
|
F |
Бит 13: 1 - поддержка перекрывающихся команд |
|
F |
Бит 12: 1 - требуется программный сброс (устарело) |
|
F |
Бит 11: 1 - IORDY поддерживается (для PIO Mode 3 и выше - обязательно), 0 - IORDY не обязано поддерживаться |
|
F |
Бит 10: 1 - сигнал IORDY может быть запрещен командой Set Features |
|
F |
Бит 9: 1 - поддержка LBA |
|
F |
Бит 8: 1 - поддержка DMA |
|
X |
Биты 7-0 специфичны |
Слово |
F/V |
Назначение |
50 |
R |
Зарезервировано |
51 |
F X |
БИТЬ! 15-8: номер PIO Mode Биты 7-0 специфичны |
52 |
R |
Зарезервировано |
53 |
R F F V |
Биты 15-3 зарезервированы Бит 2: 1 - поля в слове 88 действительны, О-нет Бит1: 1 - поля в словах 64-70 действительны, 0-нет Устройство, поддерживающее PIO Mode 3 и старше или Multiword DMA Mode 1 и выше, должно использовать эти поля Бит 0: 1 - поля в словах 54-58 действительны, 0 - поля могут быть действительны |
54-62 |
R |
Зарезервировано |
63 |
R R V |
Режим множественного обмена Multiword DMA: Биты 15-11 зарезервированы Биты 10-8: активный режим: бит 8=1 - Mode 0, бит 9=1 - Mode 1 и т. д. Единичное значение может иметь только один бит Биты 7-3 зарезервированы Биты 2-0: поддерживаемые режимы: бит 0=1 - Mode 0, бит 1-1 - Mode 1 и т. д. |
64 |
R F |
Биты 15-8 зарезервированы Биты 7-0 - поддерживаемые прогрессивные режимы, программного обмена (Advanced PIO): бит 0=1 - PIO Mode 3, бит l-l - PIO Mode 4, биты 2-7 - зарезервированы |
65 |
F |
Минимальная длительность цикла передачи множественного DMA (в наносекувдах) |
66 |
F |
Рекомендованная длительность цикла передачи множественного DMA (в наносекувдах). При многосекторной передаче обеспечивает оптимальную скорость, при которой устройство не тормозит поток снятием запроса DMARQ |
Слово |
F/V |
Назначение |
67 |
F |
Минимальная длительность цикла передачи PIO без использования сигнала готовности (в наносекундах) |
68 |
F |
Минимальная длительность цикла передачи PIO с использованием сигнала готовности (в наносекундах) |
69-70 |
R |
Зарезервированы для поддержки перекрытия команд и очередей |
71 |
F |
Типовое время от получения команды Packet до освобождения шины (в наносекундах) |
72 |
F |
Типовое время от получения команды Service до сброса BSY (в наносекундах) |
73-74 |
R |
Зарезервирован о |
75 |
F |
Глубина очереди команд: биты 15-5 - зарезервированы, биты 4-0 - максимальная глубина очереди |
76-79 |
R |
Зарезервировано |
80 |
F |
Номер основной версии интерфейса (если не OOOOh или FFFFh): 1 - АТА-1, 2 - АТА-2 и т. д. |
81 |
F |
Младший номер версии интерфейса (если не OOOOh или FFFFh) |
82 |
F |
Поддержка команд и свойств (если слова 82 и 83 не равны OOOOh или FFFFh): Бит 15 - не используется Бит 14 - команды Nop Бит 13 - команды Read Buffer Бит 12 - команды Write Buffer Бит 11 - не используется Бит 10 - ограничение доступного пространства Бит 9 - команда Device Reset Бит 8 - вырабатывание прерывания во время команды Service Бит 7 - прерывание по освобождению шины Бит 6 - кэширование с упреждающим чтением Бит 5 - кэширование записи Бит 4 - команда Packet Бит 3 - управление энергопотреблением Бит 2 - смена носителя Бит 1 - команды Security Бит 0 - SMART |
Слово |
F/V |
Назначение |
83 |
F |
Поддержка команд и свойств (как и слово 82): Бит 15=0 Бит 14 = 1 Биты 13-5 -зарезервированы Бит 4 - уведомление о смене носителя Биты 3-1 - зарезервированы Бит 0 - команда Download Microcode |
84 |
F |
Поддержка команд и свойств (если слова 82, 83 и 84 не равны ООООЬ или FFFFh): Бит 15-0 Бит 14 = 1 Биты 13-0-зарезервированы |
85-87 |
F |
Разрешенные команды и свойства - поля и правила аналогичны словам 82-84 |
88 |
R R V |
Режим Ultra DMA: Биты 15-11 -зарезервированы Биты 10-8 - активный режим Ultra DMA: бит 8°1 - Mode 0, бит 9=1 - Mode 1 и т. д. Единичное значение может иметь только один бит Биты 7-3 - зарезервированы Биты 2-0 - поддерживаемые режимы одиночного обмена DMA: бит 0=1 - Mode 0, бит i=°i - Mode 1 и т. д. |
89-126 |
R |
Зарезервировано |
127 |
R F |
Биты 15-2 -зарезервированы Биты 1-0 - уведомление о смене носителя: 00 - не поддерживается, 01 -поддерживается, 1х - зарезервированы |
128 |
V |
Состояние защиты: Биты 15-9 - зарезервированы Бит 8 - уровень защиты: 0 - высокий, 1 -максимальный Биты 7-6 - зарезервированы Бит 5: 1 - поддержка расширенного защитного стирания Бит 4: 1 - счетчик попыток иссяк Бит 3: 1 - команды защиты блокированы |
Слово |
F/V |
Назначение |
Бит 2: 1 - устройство заблокировано Бит 1:1- защита разрешена Бит 0: 1 - защита поддерживается |
||
129-159 |
X |
Специфично |
160-255 |
R |
Зарезервировано |
Бит 0 - DMA - является указанием на использование DMA или Ultra DMA для обмена данными.
Бит 1 - OVL - является признаком возможности пере- крывающегося выполнения.
Регистры СН и CL содержат лимит счетчика байт данных, передаваемых по каждому введению DRQ в режиме PIO. Если команда не предусматривает обмена данными, поле игнори- руется. Если общее число требуемых байт данных превыша- ет лимит, значение лимита задается четным. Если оно равно или меньше лимита, лимит нечетен. Значение лимита FFFFh воспринимается устройством как FFFEh. Лимит счетчика, как и бит DMA, к передаче пакета отношения не имеет.
Регистр DH используется только для выбора устройства. Для устройств, поддерживающих очереди команд, биты [7:3] ре- гистра SC содержат тег (Tag).
После подачи команды регистр SC кроме тега будет содер- жать следующие биты:
Бит 2 - PEL (Release) - признак освобождения шины (для перекрывающихся команд).
Бит 1 - I/O (Input/Output) - указатель направления пе- редачи данных (0 - передача к устройству, 1 - к хосту).
т Бит 0 - C/D (Command/Data) - признак передачи коман- ды (1) или данных (0).
В регистре состояния некоторые биты получают новое на- значение:
Бит 5 - DMRDY(DMA Ready) - при ОЯО=1 использует- ся как признак готовности к обмену в режиме (Ultra)
DMA. При DRQ=0 является признаком отказа устрой- ства DF (Device Fault).
Бит 4 - SERV (Service) - признак готовности к обслужи- ванию команды, освободившей шину.
Биты 1, 2 не используются.
щ Бит 0 - СНК (Check) - признак ошибки.
Остальные биты сохранили обычное назначение.
После подачи команды Packet хост определяет состояние устройства, прочитав его регистры. Возможны следующие варианты:
Ожидание команды Packet в регистре SC биты C/D= 1, 1/0=0, REL=0, поле Tag содержит ранее установленное зна- чение.
В регистре состояния BSY-0, DMRDY=0, СНК=0, DRQ=i, бит SERV может указывать на наличие команды, ожидающей обслуживания.
т Передача данных: в регистре SC биты C/D=Q, REL=0, I/O указывает на направление передачи. Регистры СН, CL при использовании PIO содержат счетчик байт данных. В ре- гистре состояния BSY=0, DRQ-i, СНК=0, DMRDY указы- вает на использование DMA, бит SERV может указывать на наличие команды, ожидающей обслуживания.
Освобождение шины: в регистре SC биты C/D=0, 1/0=0, REL=i, поле Tag содержит тег. В регистре состояния BSY=0, DMRDY=0, СНК=0, DRQ=0, бит SERV может ука- зывать на наличие команды, ожидающей обслуживания.
йй Запрос обслуживания: в регистре SC биты C/D=0, //0=0, REL=i, поле Tag содержит тег. В регистре состояния BSY=0, DMRDY=0, CHK-0, DRQ-0, бит SERV=i.
m Успешное завершение: в регистре SC биты C/D=1,1/0=1, REL=0, поле Tag содержит тег. В регистре состояния BSY=0, DRDY=i, CHK=0, DRQ=0, бит SERV может указы- вать на наличие команды, ожидающей обслуживания.
m Завершение с ошибкой (только после передачи последнего байта пакета): в регистре SC биты C/D=1, //0=1, REL=0, поле Tag содержит тег. В регистре состояния BSY=0, DRDY=i, DRQO, DF=1 при отказе устройства, CHK=i, если
регистр ошибок содержит код ошибки" бит SERV может указывать на наличие команды, ожидающей обслужива- ния. В регистре ошибок биты 0 и 1 трактуются в зависи- мости от команды, бит 2 - признак отвергнутой команды (ABR7), биты [7:4] могут содержать уточненное состояние.
Структуру командного пакета см. в 5.5. При любой длине блока дескрипторов, определяемой кодом команды (нулевой байт пакета), передаваемый пакет имеет длину 16 байт, но используется только указанное количество байт. Систему команд и структуру пакетов стандарт ATA/ATAPI-4 не опи- сывает, но для каждого класса устройств существует стан- дартизованный набор команд с определенной структурой пакетов.