Главная » Ассемблер, Железо » Коды обязательных команд АТА

0

В соответствии со стандартом команды интерфейса АТА делятся на три основные группы:

•          обязательные (Mandatory) команды;

•          дополнительные (Optional) команды;

•       специфические команды изготовителя (Vendor specific implementation).

Как и в случае с устройствами других типов, программисты, не связанные непосредственно с изготовителями оборудования, не имеют доступа к полной документации и вынуждены ограничиваться командами первой группы, полностью определенными в стандарте. В таблице 6.43 дано описание команд, необходимых для работы с современными дисководами и потому обязательных для всех выпускаемых устройств (многие команды уже либо устарели, либо могут применяться только изготовителями дисков, и программистам

их использовать не рекомендуется). Для регистров младшего и старшего байта номера цилиндра в графе «Используемые регистры» применяются общее обозначение CY. В графе регистра номера устройства и головки DH обозначение D говорит о том, что используется только номер устройства, а информация о номере головки игнорируется; обозначение D* показывает, что, хотя команда адресована устройству 0, выполняют ее оба устройства. В графе «Протокол» используются следующие обозначения:

•      DM — обмен данными в режиме DMA;

•     ND — команда не требует обмена данными;

•      PI — ввод данных в режиме РЮ;

•      РО — вывод данных в режиме РЮ.

Таблица 6.43. Коды команд основных дисковых операций


Команда

Код

Прото

Используемые регистры

 

 

 

кол

 

 

 

 

 

 

 

 

FB SC

SN

CY

DH

 

EXECUTE DEVICE DIAG

90h

ND

 

 

 

D*

 

NOSTIC — выполнить

 

 

 

 

 

 

 

диагностику устройства

 

 

 

 

 

 

 

IDENTIFY DEVICE – иден

ECh

PI

 

 

 

D

 

тифицировать устройство

 

 

 

 

 

 

 

INITIALIZE DEVICE PARA

91h

ND

Да

 

 

Да

 

METERS — установить

 

 

 

 

 

 

 

параметры устройства

 

 

 

 

 

 

 

READ DMA (w/ retry) —

C8h

DM

Да

Да

Да

Да

 

чтение в режиме DMA

 

 

 

 

 

 

 

с повторами

 

 

 

 

 

 

 

READ DMA (w/o retry) —

C9h

DM

Да

Да

Да

Да

 

чтение в режиме DMA

 

 

 

 

 

 

 

без повторов

 

 

 

 

 

 

 

READ MULTIPLE —

C4h

PI

Да

Да

Да

Да

 

чтение группы секторов

 

 

 

 

 

 

 

READ SECTOR(S) (w/

20h

PI

Да

Да

Да

Да

 

retry) — чтение секторов

 

 

 

 

 

 

 

с повторами

 

 

 

 

 

 

 

READ SECTOR(S) (w/o

21h

PI

Да

Да

Да

Да

 

retry) — чтение секторов

 

 

 

 

 

 

 

без повторов

 

 

 

 

 

 

 

READ VERIFY SECTOR(S)

40h

PI

Да

Да

Да

Да

 

(w/ retry) — контрольное чте

 

 

 

 

 

 

 

ние секторов с повторами

 

 

 

 

 

 

 

Команда

Код

Прото

Используемые регистры

 

 

кол

 

 

 

 

 

 

 

 

FR

SC

SN

CY

DH

READ VERIFY SECTOR(S)

41h

PI

 

Да

Да

Да

Да

(w/o retry) — контрольное чте

 

 

 

 

 

 

 

ние секторов без повторов

 

 

 

 

 

 

 

SEEK — поиск сектора

70h

ND

 

 

Да

Да

Да

SET FEATURES — установ

EFh

ND

Да

 

 

 

D

ка свойств устройства

 

 

 

 

 

 

 

SET MULTIPLE MODE —

C6h

ND

 

Да

 

 

D

установить параметры

 

 

 

 

 

 

 

множественного режима

 

 

 

 

 

 

 

WRITE DMA (w/ retry) —

CAh

DM

 

Да

Да

Да

Да

запись в режиме DMA

 

 

 

 

 

 

 

с повторами

 

 

 

 

 

 

 

в режиме DMA без повторов

CBh

DM

 

Да

Да

Да

Да

WRITE MULTIPLE — запись

C5h

PO

 

Да

Да

Да

Да

группы секторов

 

 

 

 

 

 

 

WRITE SECTOR(S)(w/

30h

PO

 

Да

Да

Да

Да

retry) — запись секторов

 

 

 

 

 

 

 

с повторами

 

 

 

 

 

 

 

WRITE SECTOR(S) (w/o

31h

PO

 

Да

Да

Да

Да

retry) — запись секторов

 

 

 

 

 

 

 

без повторов

 

 

 

 

 

 

 

Далеко не все команды из табл. 6.29 нужны рядовому пользователю. Следует особо отметить подгруппу команд, которая реально применяется при работе с дисками: IDENTIFY DEVICE, READ DMA (w/ retry), READ SECTOR(S) (w/ retry), WRITE DMA (w/ retry), WRITE SECTOR(S) (w/ retry). Первая команда из данного списка позволяет проверить наличие устройства и определить его параметры, а остальные служат для ввода и вывода данных.

Примеры использования базовых команд АТА будут рассмотрены в конце главы. Отметим, что команду IDENTIFY DEVICE нужно использовать только при запуске программы, непосредственно работающей с жестким диском, чтобы удостовериться в том, что он подключен к контроллеру и может работать в тех режимах, на которые раст считана программа — например, многие старые диски объемом до 500 Мбайт не поддерживают режим LBA. При выполнении команды IDENTIFY DEVICE диск выдает всю информацию о себе в виде структуры данных из 256 слов по 16 разрядов, которая описана в табл. 6.44.

Таблица 6.44. Информация об устройстве, выдаваемая по команде IDENTIFY DEVICE


Номерх

F/V

Описание

слоаа

 

 

0

F

Общая информация о конфигурации устройства:

бит 0 — зарезервирован;

биты 1-5 — определяются изготовителем;

бит 6 — устройство с несменным носителем, если

данный разряд установлен в 1;

бит 7 — устройство со сменным носителем, если

данный разряд установлен в 1;

биты 8-14 — определяются изготовителем;

бит 15 — тип интерфейса (0 — устройство АТА)

1

F

Число логических цилиндров

2

R

Зарезервировано

3

F

Число логических головок

4

X

Определяется изготовителем

5

X

Определяется изготовителем

6

F

Число логических секторов на дорожке

7-9

X

Определяются изготовителем

10-19

F

Серийный номер (20 ASCII-символоа)

20

X

Определяется изготовителем

21

X

Определяется изготовителем

22

F

Не используется (устарело)

23-26

F

Версия встроенного в ПЗУ устройства программного обеспечения (8 ASCII-символов)

27-46

F

Номер модели устройства (40 ASCII-символов)

47

F

Биты 0-7 — значение 0 зарезервировано, значения 01 h-FFh соответствуют максимальному количеству секторов, которое можно передавать в командах группового чтения и записи;

 

X

биты 8-15 — определяются изготовителем

48

R

Зарезервировано

49

 

Возможности устройства:

 

X

биты 0-7 — определяются изготовителем;

 

R

биты 8-9 — зарезервированы, но должны быть установлены в 1;

 

F

бит 10 — если в данном разряде установлена 1, то сигнал IORDY может быть запрещен;

 

F

бит 11 — поддержка IORDY (0 — может отсутствовать, 1 — присутствует);

Номерх

F/V

Описание

 

слова

 

 

 

 

R

бит 12 — зарезервирован;

 

 

F

бит 13 — способ задания значений таймера Standby (0 — значения задаются изготовителем устройства, 1 — значения задаются по правилам интерфейса АТА);

 

 

R

биты 14-15 — зарезервированы

 

50

F

Возможности устройства, бит 0 — имеет значение 1; биты 1-13 — зарезервированы; бит 14 —имеет значение 1; бит 15 — имеет значение 0

 

51

X

Биты 0-7 — определяются изготовителем;

 

 

F

биты 8-15 — номер используемого режима передачи РЮ

 

52

R

Зарезервировано

 

53

V

Бит 0 — значения в словах 54-58: 0 — недействительны; 1 — действительны;

 

 

F

бит 1 — значения в словах 64-70: 0 — недействительны; 1 — действительны;

 

 

F

бит 2 — значение слова 88:

0       — недействительно;

1       — действительно;

 

 

R

биты 3-15 зарезервированы

 

54

V

Текущее число логических цилиндров

 

55

V

Текущее число логических головок

 

56

V

Текущее число логических секторов на дорожке

 

57-58

V

Текущая емкость в секторах

 

59

V

Биты 0-7 — текущее количество секторов, которое может быть передано за одно прерывание в групповых операциях чтения/записи;

 

 

V

бит 8 — параметры групповых операций действительны, если данный разряд установлен в 1;

 

 

R

биты 9-15 — зарезервированы

 

60-61

F

Общее число секторов, адресуемых пользователем в режиме LBA

 

62

R

Зарезервировано

 

63

 

Поддерживаемые режимы Multiword DMA (режим поддерживается, если соответствующий разряд установлен в 1):

 

 

F

бит 0 — поддержка режима Multiword DMA 0;

 

Таблица 6.44 (продолжение)


Номер х

F/V

Описание

слова

 

 

 

F

бит 1 — поддержка режима Multiword DMA 1;

 

F

бит 2 — поддержка режима Multiword DMA 2;

 

R

биты 3-7 зарезервированы

Выбор используемого режима Multiword DMA (режим активен, если соответствующий разряд установлен в 1):

 

V

бит 8 — выбран режим Multiword DMA 0;

 

V

бит 9 — выбран режим Multiword DMA 1;

 

V

бит 10 — выбран режим Multiword DMA 2;

 

R

биты 3-7 зарезервированы

64

F

Поддерживаемые улучшенные режимы РЮ (режим

поддерживается, если соответствующий бит

установлен в 1):

бит 0 — поддержка режима 3;

бит 1 — поддержка режима 4;

биты 2-7 зарезервированы для последующих версий улучшенных режимов РЮ;

 

R

биты 8-15 — зарезервированы

65

F

Минимальное время цикла передачи слова Multiword DMA в наносекундах

66

F

Рекомендованное изготовителем время цикла передачи Multiword DMA в наносекундах

67

F

Минимальное время цикла передачи РЮ (без проверки сигнала готовности) в наносекундах

68

F

Минимальное время цикла передачи РЮ (с проверкой сигнала готовности) в наносекундах

69-70

R

Зарезервированы для будущих команд, реализующих «очереди» и «перекрытие»

71-74

R

Зарезервированы

75

F

Глубина очереди:

биты 0-4 — максимально допустимвя глубина очереди; биты 5-15 зарезервированы

76-79

R

Зарезервированы

80

F

Основной номер версии АТА (номер версии соответствует номеру бита, значение которого установлено в 1; если данное слово содержит кодООООЬ или код FFFFh, то его значение не действительно): бит 0 зарезервирован; бит 1 — поддерживается АТА-1;

Номер х

F/V

Описание

 

слова

 

 

 

 

 

бит 2 — поддерживается АТА-2;

 

 

 

бит 3 — поддерживается АТА-3;

 

 

 

бит4 — поддерживается ATA/ATAPI-4; бит 5 — поддер

 

 

 

живается ATA/ATAPI-5;

 

 

 

бит 6 — поддерживается ATA/ATAPI-6;

 

 

 

бит 7 зарезервирован для ATA/ATAPI-7; бит 8 зарезер

 

 

 

вирован для ATA/ATAPI-8;

 

 

 

бит 9 зарезервирован для ATA/ATAPI-9;

 

 

 

бит 10 зарезервирован для ATA/ATAPI-10;

 

 

 

бит 11 зарезервирован для ATA/ATAPI-11;

 

 

 

бит 12 зарезервирован для ATA/ATAPI-12;

 

 

 

бит 13 зарезервирован для ATA/ATAPI-13;

 

 

 

бит 14 зарезервирован для ATA/ATAPI-14;

 

 

 

бит 15 зарезервирован

 

81

F

Номер реализации версии АТА (если в поле записано значение OOOOh или FFFFh, то данное поле не действительно)

 

82

F

Поддерживаемые устройством «свойства» и группы

команд («свойство» или группа команд поддерживается,

если соответствующий разряд установлен в 1; если

в словах 82 и 83 записаны значения OOOOh или FFFFh,

то данное поле не действительно):

бит 0 — поддерживается набор команд Smart;

бит 1 — поддерживается набор команд секретности;

бит 2 — поддерживается набор команд для устройств

со сменными носителями;

бит 3 — поддерживается набор команд управления энергопотреблением;

бит 4 — поддерживается набор пакетных команд;

бит 5 — разрешено кэширование при записи;

бит 6 — разрешено упреждение;

бит 7 — разрешено прерывание при освобождении

шины;

бит 8 — разрешено прерывание SERVICE;

бит 9 — поддерживается команда DEVICE RESET;

бит 10 — поддерживается защищенная область хоста; -

бит 11 — не используется (устарел);

бит 12 — поддерживается команда WRITE BUFFER;

бит 13 — поддерживается команда READ BUFFER;

 

Таблица 6.44 (продолжение)

Номер х

F/V

Описание

слова

 

 

 

 

бит 14— поддерживается команда NOP;

 

 

бит 15 — не используется (устарел)

83

F

Поддерживаемые устройством «свойства» и группы команд («свойство» или группа команд поддерживается, если соответствующий разряд установлен в 1; если в словах 82 и 83 записаны значения OOOOh или FFFFh, то данное поле недействительно): бит 0 — поддерживается команда DOWNLOAD MICROCODE;

бит 1 — поддерживаются очереди в режиме DMA;

бит 2 — поддерживается флэш-память;

бит 3 — поддерживается «улучшенное» управление

энергопотреблением;

бит 4 — поддерживается извещение о состоянии

сменного носителя;

биты 5-13 зарезервированы;

бит 14 должен быть установлен в 1;

бит 15 должен быть сброшен в 0

84

F

Признак наличия поддержки расширенного набора

команд и свойств (если в словах 82, 83 и 84 записаны

значения OOOOh или FFFFh, то данное поле

недействительно):

биты 0-13 зарезервированы;

бит 14 должен быть установлен в 1;

бит 15 должен быть сброшен в 0

85

V

Разрешенные «свойства» и группы команд («свойство» или группу команд разрешено использовать, если соответствующий разряд установлен в 1; если в словах 85, 86 и 87 записаны значения OOOOh или FFFFh, то данное поле недействительно):

бит 0 — разрешено использовать набор команд Smart;

бит 1 — разрешено использовать набор команд секретности;

бит 2 — разрешено использовать набор команд

для устройств со сменными носителями;

бит 3 — разрешено использовать набор команд

управления энергопотреблением;

бит 4 — разрешено использовать набор пакетных

команд;

Номер х

F/V

Описание

 

слова

 

 

 

 

 

бит 5 — разрешено использовать кэширование при

 

 

 

записи;

 

 

 

бит 6 — разрешено использовать упреждение;

 

 

 

бит 7 — разрешено использовать прерывание

 

 

 

при освобождении шины;

 

 

 

бит 8 — разрешено использовать прерывание SERVICE;

 

 

 

бит 9 — разрешено использовать команду DEVICE

 

 

 

RESET;

 

 

 

бит 10 — разрешено использовать защищенную

 

 

 

область хоста;

 

 

 

бит 11 — не используется (устарел);

 

 

 

бит 12 — разрешено использовать команду WRITE

 

 

 

BUFFER;

 

 

 

бит 13 — разрешено использовать команду READ

 

 

 

BUFFER;

 

 

 

бит 14 — разрешено использовать команду NOP;

 

 

 

бит 15— не используется (устарел)

 

86

V

Разрешенные «свойства» и группы команд («свойство»

 

 

 

или группу команд разрешено использовать, если

 

 

 

соответствующий разряд установлен в 1; если в словах

 

 

 

85, 86 и 87 записаны значения OOOOh или FFFFh,

 

 

 

то данное поле недействительно):

 

 

 

бит 0 — разрешено использовать команду DOWNLOAD

 

 

 

MICROCODE;

 

 

 

бит 1 — разрешено использовать очереди в режиме DMA;

 

 

 

бит 2— разрешено использовать команды,

 

 

 

предназначенные для работы с флэш-памятью;

 

 

 

бит 3 — разрешено использовать «улучшенное»

 

 

 

управление энергопотреблением;

 

 

 

бит 4 — разрешено использовать извещение

 

 

 

о состоянии сменного носителя;

 

 

 

биты 5-15 зарезервированы

 

87

V

Признак достоверности слов 85 и 86 (если в словах 85,

 

 

 

86 и 87 записаны значения OOOOh или FFFFh, то данное

 

 

 

поле недействительно):

 

 

 

биты 0-13 зарезервированы;

 

 

 

бит 14 должен быть установлен в 1;

 

 

 

бит 15 должен быть сброшен в 0

 

88

 

Признаки наличия поддержки и использования режимов

 

 

 

Ultra DMA (установка разряда в 1 означает наличие

 

 

 

соответствующего свойства):

 

Таблица 6.44 (продолжение)


Номер х

F/V

Описание

слова

 

 

 

F

бит 0 — поддержка режима Ultra DMA 0;

 

F

бит 1 — поддержка режима Ultra DMA 1;

 

F

бит 2 — поддержка режима Ultra DMA 2;

 

R

биты 3-7 зарезервированы;

 

V

бит 8 — выбран режим Ultra DMA 0;

 

V

бит 9 — выбран режим Ultra DMA 1;

 

V

бит 10 — выбран режим Ultra DMA 2;

 

R

биты 11-15 зарезервированы

89

F

Время, необходимое для очистки (стирания) логического устройства в режиме секретности (время задается в минутах и вычисляется путем умножения значения данного поля на 2; код OOh означает, что значение времени очистки не определено)

90

F

Время, необходимое для «улучшенной» очистки логического устройства в режиме секретности (время задается в минутах и вычисляется путем умножения значения данного поля на 2; код OOh означает, что значение времени «улучшенной» очистки не определено)

91

V

Текущее значение кода управления энергопотреблением

92-126

R

Зарезервировано

127

F

Поддержка извещения о состоянии сменного носителя:

биты 0-1 — код способа поддержки извещения о состоянии сменного носителя (00Ь — извещение о состоянии носителя не поддерживается устройством, 00Ь — извещение поддерживается, коды 10Ь и 11Ь зарезервированы);

биты 2-15 зарезервированы

128

F

Статус секретности:

бит 0 — поддержка секретности (0 — отсутствует, 1 — имеется);

бит 1 — использование секретности (0 — запрещено, 1 — разрешено);

бит 2 — блокировка режима секретности

(0 — отсутствует, 1— имеется);

бит 3 — приостановка режима секретности

(0 — отсутствует, 1 — имеется);

бит 4 — счетчик секретности (0 — отсутствует,

1 — имеется);

Номер х

F/V

Описание

 

слова

 

 

 

 

 

бит 5 — поддержка улучшенного режима стирания

 

 

 

(0 — отсутствует, 1 — имеется);

 

 

 

биты 6-7 зарезервированы;

 

 

 

бит 8 — уровень секретности (0 — высокий,

 

 

 

1 — максимальный);

 

 

 

биты 9-15 зарезервированы

 

129-159

X

Определяется изготовителем

 

160-255

R

Зарезервировано

 

В колонке «F/V» табл. 6.44, которая показывает, является ли значение поля константой или может изменяться, используются следующие сокращенные обозначения:

•           F — значение поля фиксировано;

•       V — значение поля может изменяться в зависимости от состояния устройства и выполняемой команды;

•           R — поле зарезервировано и должно содержать нулевое значение;

•       X — значение поля является неопределенным (зависит от изготовителя).

Номера слов в таблице даны в десятичном коде. Чтобы вычислить смещение какого-либо нужного вам поля данных от начала таблицы, нужно умножить номер начального слова этого поля на 2.

Источник: Кулаков В. К90 Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. — СПб.: Питер, 2003. — 847 е.: ил.

По теме:

  • Комментарии