Регистры устройств
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 могут переопределить значение этого регистра.