Регистр состояния SR
(1F7h, 177h) отражает текущее состояние устройства в процессе выполнения команд: занятость, готовность, наличие ошибок и др. Чтение регистра состояния разрешает дальнейшее изменение его битов и сбрасывает запрос аппаратного прерывания.
Назначение битов регистра SR
описано ниже.
♦ Бит 7 — BSY
(Busy) указывает на занятость устройства, значение этого бита действительно всегда. При BSY
=1 устройство игнорирует попытки записи в командный блок регистров, а чтение этих регистров дает неопределенный результат. При BSY
=0 регистры командного блока доступны, в это время устройство не может устанавливать бит DRQ
, изменять значение битов ЕRR
и содержимое остальных командных регистров (могут меняться только значения битов IDX
, DRDY
, DF
, DSC
и CORR
). Бит может устанавливаться на кратковременный интервал, так что хост может этого не заметить. Бит устанавливается:
• при сбросе устройства;
• по получении команды, если не устанавливается DRQ
;
• между передачами блоков данных в режиме PIO и после них, пока не обнулился DRQ
;
• во время передач данных в режиме DMA.
♦ Бит 6 — DRDY
(Device Ready) указывает на готовность устройства к восприятию любых кодов команд. Если состояние бита изменилось, оно не может вернуться обратно до чтения регистра состояния. При DRDY
=0 устройство воспринимает только команды Execute Device Diagnostic
и Initialize Device Parameters
, прекращая выполнение текущей команды и сообщая об этом флагом ABRT
в регистре ошибок и флагом ERR
в регистре состояния. Другие команды приводят к непредсказуемым результатам. Устройства ATAPI сбрасывают бит по любому сбросу и команде Execute Device Diagnostic
. Бит устанавливается устройством ATA, когда оно готово к выполнению всех команд. Устройство ATAPI устанавливает бит до завершения выполнения команд, за исключением команд Device Reset
и Execute Device Diagnostic
.
♦ Бит 5 — DF
(Device Fault) — индикатор отказа устройства.
♦ Бит 4 — DSC
(Device Seek Complete) — индикатор завершения поиска трека. В командах, допускающих перекрытие, бит называется SERV
(Service Required) — устройство требует обслуживания.
♦ Бит 3 — DRQ
(Data Request) — индикатор готовности к обмену словом или байтом данных.
♦ Бит 2 — CORR
(Corrected Data) — индикатор исправленной ошибки данных.
♦ Бит 1 — IDX
(Index) — индекс, трактуется особо каждым производителем.
♦ Бит 0 — ERR
(Error) — индикатор ошибки выполнения предыдущей операции.
Дополнительная информация содержится в регистре ошибок. Если установлен бит ERR
, до приема следующей команды, программного или аппаратного сброса устройство не изменит состояние этого бита, а также регистра ошибок, регистра количества секторов и регистров цилиндра, головки и номера сектора. Для команд Packet
и Service
бит называется CHK
и служит признаком исключительной ситуации.
В стандарте ATA/ATAPI-4 для некоторых команд биты 4 и 5 могут иметь иное назначение, а биты 1 и 2 объявлены устаревшими.
Назначение регистра команд CR
(1F7h, 177h) очевидно из названия. Устройство начинает исполнять команду сразу, как только ее код записан в данный регистр. Команда Device Reset
выполняется устройством ATAPI независимо от состояния битов BSY
и DRQ
, и даже в состоянии Sleep .
Полный список команд ATA приведен в литературе [4, 5, 9].
Протоколы и режимы передачи данных
Программа общается с устройствами ATA через регистры, используя инструкции ввода-вывода IN
и OUT
. Для передачи данных с максимальной скоростью применяют программный доступ PIO к регистру данных инструкциями INSW
/ OUTSW
или по каналу DMA. Тип обмена (PIO или DMA) определяется командой обращения. Программный доступ PIO обязателен для всех устройств, команды режима DMA устройствами могут не поддерживаться. Параметры различных режимов обмена приведены в табл. 9.7.
Таблица 9.7. Параметры режимов передачи
Режим передачи |
Минимальное время цикла, нс |
Скорость передачи, Мбайт/с |
Интерфейс |
PIO mode 0 |
600 |
3,3 |
ATA |
PIO mode 1 |
383 |
5,2 |
ATA |
PIO mode 2 |
240 |
8,3 |
ATA |
PIO mode 3 |
180 |
11,1 |
E-IDE, ATA-2 (используется IORDY) |
PIO mode 4 |
120 |
16,6 |
E-IDE, Fast ATA-2 (используется IORDY) |
Singleword DMA Mode 0 |
960 |
2,08 |
ATA |
Singleword DMA Mode 1 |
480 |
4,16 |
ATA |
Singleword DMA Mode 2 |
240 |
8,33 |
ATA |
Multiword DMA Mode 0 |
480 |
4,12 |
ATA |
Multiword DMA Mode 1 |
150 |
13,3 |
ATA-2 |
Multiword DMA Mode 2 |
120 |
16,6 |
FastАТА-2 |
Ultra DMA Mode 0 |
120¹ |
16,6 |
ATA/ATAPI-4 |
Ultra DMA Mode 1 |
80¹ |
25 |
ATA/ATAPI-4 |
Ultra DMA Mode 2 |
60¹ |
33 |
ATA/ATAPI-4 |
Ultra DMA Mode 3 |
45¹ |
44,4 |
ATA/ATAPI-5 |
Ultra DMA Mode 4 |
30¹ |
66,6 |
ATA/ATAPI-5 |
Ultra DMA Mode 5 |
20¹ |
100 |
ATA/ATAPI-6 |
¹ В пакете данных режима Ultra DMA за каждый такт передаются два слова данных, один по фронту синхронизирующего сигнала, другой по спаду. Период следования синхросигналов равен удвоенному времени цикла.
Читать дальше