Интерфейсы ПК

       

Регистры устройств


6.2. Регистры устройств

Каждое устройство АТА имеет стандартный набор регист- ров, адресуемых сигналами от хост-адаптера (CSOff, CS1#, DA2, DA1, DAO, DIOR# и DIOW#). Набор регистров (табл. 6.3)

состоит из двух блоков, выбираемых сигналом CSO/CS1#. Блок командных регистров служит для посылки команд уст- ройству и чтения информации о его состоянии. Блок управ- ляющих регистров используется для управления устройством и получения более подробной информации о его состоянии. На действительность содержимого регистров командного бло- ка и альтернативного регистра состояния указывает нулевое значение бита BSY регистра состояния. Если устройство под- держивает управление энергопотреблением, в "спящем" ре- жиме содержимое этих регистров недействительно.

Адрес

Назначение (R - чтение, W - запись)

CSOff



CS1#

DA2

DA1

DAO

1

1

X

X

X

Не используется (шина данных в третьем состоянии)

Control Block Registers - блок управляющих регистров

1

0

0

X

X

Не используется (шина данных в третьем состоянии)

1

0

1

0

X

Не используется (шина данных в третьем состоянии)

1

0

1

0

R: Alternate Status (AS) - альтернативный регистр состояния W: Device Control (DC) - регистр управления устройством

1

0

1

1

1

Не используется1

Command Block Registers - блок командных регистров

0

1

0

0

0

R/W: Data (DR) - регистр данных

0

1

0

0

1

R: Error (ER) - регистр ошибок W: Features (FR) - регистр свойств

о

1

0

1

0

R/W: Sector Count (SC) - регистр счетчика секторов

0

1

0

1

1

R/W: Sector Number (SN) - регистр номера сектора LBA [7:0]2

Адрес

Назначение (R - чтение, W - запись)

CSO"

CSIff

DA2

DA1

ОАО

Command Block Registers - блок командных регистров

0

1

1

0

0

R/W: Cylinder Low (CL) - регистр младшего байта номера цилиндра LBA[15:8]2

0

1

1

0

1

R/W: CyhnderHigh (CH) - регистр старшего байта номера цилиндра LBA[23:16]2

0

1

1

1

0

R/W: Deuice/Head (DH) - регистр номера устройства и головки LBA[27:24]2

0

1

1

1

1

R: Status (SR) - регистр состояния W: Command (CR) - регистр команд

о

0

X

X

X

Недопустимый адрес

<
' Регистр выпадает из блока. Рекомендуется, чтобы на сигнал чтения по этому адресу устройство не отвечало. Если устройство отвечает, то оно не должно управлять битом DD7 во избежание конфликта с контроллером НГМД.

2 Регистры сектора, цилиндра и головки в режиме LBA содержат ука- занные биты логического адреса.

Регистр состояния SR отражает текущее состояние устрой- ства в процессе выполнения команд. Чтение регистра состо- яния разрешает дальнейшее изменение его бит и сбрасывает запрос аппаратного прерывания.

Назначение бит регистра SR:

т Бит 7 - BSY(Busy) указывает на занятость устройства. При BSY=1 устройство игнорирует попытки записи в команд- ный блок регистров, а чтение этих регистров дает неопре- деленный результат. При BSY=0 регистры командного блока доступны, а устройство может изменять только значение бит IDX, DRDY, DF, DSC и CORR. Бит устанавливается при аппаратном/программном сбросе устройства и по получе- нии команды. Бит может устанавливаться на кратковре- менный интервал, так что хост может этого не заметить.

is Бит 6 - DRDY(Device Ready) указывает на готовность ус- тройства к восприятию любых кодов команд. Если со- стояние бита изменилось, оно не может измениться обратно до чтения регистра состояния. При DRDY=0 уст- ройство воспринимает только команды Execute Device Diagnostic и Initialize Device Parameters, прекращая выпол- нение текущей команды и сообщая об этом флагом ABRT в регистре ошибок и ERR в регистре состояния. Другие команды приводят к непредсказуемым результатам.

Бит 5 - DF(Device Fault) - индикатор отказа устройства.

Бит 4 - DSC(Device Seek Complete) - индикатор завер- шения поиска трека. В командах, допускающих перекры- тие (см. 6.6), бит называется SERV (Service Required) - устройство требует обслуживания.

Бит 3 - DRQfData Request) - индикатор готовности к об- мену словом или байтом данных.

Бит 2 - CORR(Corrected Data) - индикатор исправлен- ной ошибки данных.

Бит 1 - IDX (InDeX) - индекс, трактуется особо каждым производителем.



Бит 0 - ERR (Error) - индикатор ошибки выполнения пре- дыдущей операции. Дополнительная информация содер- жится в регистре ошибок. Если установлен бит ERR, до приема следующей команды, программного или аппарат- ного сброса устройство не изменит состояние этого бита, а также регистра ошибок, регистра количества секторов и регистров цилиндра, головки и номера сектора.

В стандарте АТА-4 для некоторых команд биты 4 и 5 могут иметь иное назначение, а биты 1 и 2 объявлены устаревшими.

Альтернативный регистр состояния AS имеет те же биты, что и основной, но его чтение не приводит ни к каким изме- нениям состояния устройства.

Назначение регистра команд CR очевидно из названия. Уст- ройство начинает исполнять команду сразу, как только ее код записан в данный регистр.

Регистры номера цилиндра (старшего СН и младшего байта CL) и номера сектора SN имеют двоякое назначение в зави- симости от выбранной системы адресации (CHS или LBA).

Они инициализируются хост-адаптером, а в случае возник- новения ошибки при операции устройство поместит в них адрес, по которому встретилась ошибка.

Регистр номера устройства и головки DH кроме хранения части адресной информации служит для выбора ведущего или ведомого устройства и метода адресации.

Назначение бит регистра DH:

йя Биты 7 и 5 зарезервированы.

т Бит 6 - L - единичным значением указывает на приме- нение режима адресации LBA. При нулевом значении би- та используется режим CHS.

as Бит 4 - DEV (Device) - выбор устройства. При DEV=0 выбрано ведущее, при DEH=1 - ведомое.

Биты [3:0] имеют двоякое назначение в зависимости от выбранной системы адресации. В режиме CHS они со- держат номер головки, в режиме LBA - старшие биты логического адреса. Как и предыдущие, этот адресный регистр инициализируется хост-адаптером, а в случае возникновения ошибки при операции устройство помес- тит в них адрес, по которому встретилась ошибка.

До принятия АТА-2 считалось, что адресные регистры дол- жны модифицироваться и после успешного выполнения опе- рации, отражая текущее значение адреса в носителе.



После включения питания, сброса или выполнения диаг- ностики устройство в блоке командных регистров содержит сигнатуру, определяющую его тип:

т SC=01h, S/V=01h, CL=OOh, CH==OOh, DH-OOh - устройст- ва ATA;

Щ SC=01h, SA/=01h, CL=Uh, CH=EBh, DH=OOh или Olh -

устройства ATAPI.

Регистр данных DR может использоваться как 8-битный или 16-битный в зависимости от типа данных, передаваемых в текущей команде.

Из регистра управления устройством CR используются толь- ко два бита.

Назначение бит регистра CR:

ш Биты [7:3] зарезервированы.

iss Бит 2 - SRST(Software Reset) - программный сброс, дей- ствует все время, пока бит не будет снят. Оба устройства на шине воспринимают программный сброс одновре- менно. На устройства ATAPI не действует.

Бит 1 - nlEN(Interrupt Enable) - инверсный бит разреше- ния прерывания. При нулевом значении бита выбранное устройство может вырабатывать сигнал INTRQ через три- стабильный выход.

Бит 0 всегда должен быть нулевым.

Регистр ошибок ER хранит состояние выполнения последней операции или диагностический код. После завершения опе- рации на наличие ошибки указывает бит ERR регистра со- стояния.

Назначение бит регистра ER:

Бит 7 зарезервирован.

Бит 6 - UNC(Uncorrectable Data Error) -неисправимая ошибка данных.

Бит 5 - МС (Media Changed) - смена носителя. После смены носителя первая команда обращения отвергается и устанавливается данный бит. После сброса бита следу- ющие команды будут выполняться нормальным образом.

Бит 4 - IDNFfID Not Found) - указывает на ненайденный идентификатор сектора.

Бит 3 - ABRT(AbortedCommand) - устанавливается, если команда отвергнута как недействительная или в случае возникновения иной ошибки.

Бит 2 - MCR(Media Change Requested) - индикатор за- проса смены носителя. После обнаружения запроса сме- ны носителя следующие команды Door Lock будут воз- вращать бит ошибки ERR и установленный бит MCR. Бит MCR сбрасывается командами Door Unlock, Media Eject или аппаратным сбросом.

Бит 1 - TKONF(Track 0 Not Found) - указывает на то, что по команде Recalibrate не удалось найти нулевой трек.



Бит 0 - AMNF( Address Mark Not Found) - не найден ад- ресный маркер данных в заголовке сектора.

После включения питания, сброса или команды Execute Device Diagnostic регистр ошибок содержит диагностический код.

Регистр свойств FR используется в зависимости от команды. В команде Set Features через него задается код подкоманды. Не- которые устройства могут игнорировать запись в этот регистр. До принятия АТА-2 в этот регистр помещали значение реко- мендуемого номера цилиндра для предкомпенсации записи.

Регистр счетчика секторов SC содержит число секторов, уча- ствующих в обмене. Хост инициализирует этот регистр до подачи команды (нулевое значение соответствует 256 секто- рам). По успешному завершению операции доступа' к дан- ным регистр должен обнулиться. Если команда завершилась с ошибкой, в регистре будет число секторов, которые долж- ны быть переданы для успешного завершения предыдущего запроса. Команды Initialize Device Parameters или Write Same могут переопределить значение этого регистра.


Содержание раздела