IDE-BUS.
music by MIDISOFT
Информацию предоставил В.Елисеев.
_______________________________
Для тех, кто хочет более подробно оз-
накoмится с работой винчестера мы приво-
дим описание IDE-шины и команд HDD.
+--------+----------+--------+-------------------------------+
| Контакт| Направл. | Сигнал | Функция |
+--------+----------+--------+-------------------------------+
| 1 | Out | Reset | - Host reset |
| 3 | I/O | HD7 | Host data bus 7 |
| 5 | I/O | HDб | Host data bus б |
| 7 | I/O | HDS | Host data bus 5 |
| 9 | I/O | HDЧ | Host data bus 4 |
| 11 | I/O | HDЗ | Host data bus 3 |
| 13 | I/O | HD2 | Host data bus 2 |
| 15 | I/O | HD1 | Host data bus 1 |
| 17 | I/O | HDO | Host data bus 0 |
| 19 | - | Ground | |
| 21 | In | DMARQ | DMA Request |
| 23 | Out | -IOW | - Host I/O Write |
| 25 | Out | -IOR | - Host I/O Read |
| 27 | In | IOCHRDY| |
| 29 | Out | DMACK | - DMA Acnowelege |
| 31 | In | IRQ | - Host interrupt request |
| 33 | Out | HA1 | Host adress bus 1 |
| 35 | Out | HAO | Host adress bus 0 |
| 37 | Out | -CSO | - Host chip select 0 |
| 39 | I/O | -ACTIV | - Drive active |
+--------+----------+--------+-------------------------------+
| 2 | - | Ground | |
| 4 | I/O | HD8 | Host data bus 8 |
| б | I/O | HD9 | Host data bus 9 |
| 8 | I/O | HD10 | Host data bus 10 |
| 10 | I/O | HD11 | Host data bus 11 |
| 12 | I/O | HD12 | Host data bus 12 |
| 14 | I/O | HD13 | Host data bus 13 |
| 1б | I/O | HD14 | Host data bus 14 |
| 18 | I/O | HD15 | Host data bus 15 |
| 20 | - | Key | |
| 22 | - | Ground | |
| 24 | - | Ground | |
| 2б | - | Ground | |
| 28 | Out | ALE | |
| 30 | - | Ground | |
| 32 | In | -HIO1б | - Host 1б-bit I/O chip select |
| 34 | I/O | -PDIAG | |
| 3б | Out | HA2 | - Host adress bus 2 |
| 38 | Out | -CS1 | - Host chip select 1 |
| 40 | - | Ground | |
+--------+----------+--------+-------------------------------+
1. Сигналы, источником которых является
главная машина (HOST), являются выхoдны-
ми, а источником которых является НМД -
входными.
2. Сигналы активные при низком уровне
отмечены префиксом "-" .
Ниже приведено описание сигналов
интерфейса IDE .
-RESET - сигнал сброса от главной маши-
ны.
Host data bus 0-15 - 16 разрядная дву-
направленная шина данных. Младшие 8 бит,
HDO-HD7, используются для доступа к ре-
гистрам. Все 16 бит используются для пе-
рeдачи данных.
Ground - Выводы "земли" между НМД и
главной машиной.
KEY - Ключ. Используется для привильнoй
ориентации кабеля
-IOW - Строб записи, по заднему фронту
которого данные по линиям HDO-HD15 фикси-
руются в регистрах НМД.
-IOR - Строб чтения, низкий уровень ко-
торого разрешает передачу данных от ре-
ructpob НМД на шину данных главной маши-
ны. Задний фронт -IOR фиксирует данные от
НМД на главную машину.
IRQ - Сигнал прерывания главной машины.
Прерывание возможно, когда выбрано уст-
рoйствo, и главная машина устанавливает
бит -IEN в Fixed Disk Register (адрес
3F6). Когда устройство не выбрано или
-IEN не активен, этот выход находится в
состоянии высокого импеданса. IRQ уста-
навливаeтся микроконтроллером накопителя.
IRQ сбрасывается в нуль при операциях
чтения главной машины из регистра состоя-
ния или при операции записи в Command Re-
gister. Линия с тремя состояниями.
DAO,DA1,DA2 - Линии адреса, используемые
для выбора регистра в файле задачи.
-CSO - Выбор кристалла 0, сигнал дeкoди-
руeмый от шины главной машины. Использу-
ется для выбора регистров с младшими ад-
pecamu в файле задачи.
-CS1 - Выбор кристалла 1, сигнал дeкoди-
руeмый от шины главной машины. Использу-
ется для выбора регистров со старшими ад-
pecamu в файле задачи.
-HIO16 - Сигнал от НМД, информирующий
главную машину, что 16-битный регистр
данных выбран и что НМД готов принять или
передать 16-битное слово данных. Линия с
тремя состояниями.
-ACTIVE - Линия от НМД, используется для
включения светодиода, когда главная маши-
на осуществляет доступ к диску.
DMARQ - Запрос прямого доступа в память.
-DMACK - Сигнал подтверждения запроса
ПДП.
Примечание.
1. Сигналы DMARQ и DMACK зарезервированы
для использования в будущем.
Требуемые временные соотношения сигналов
в интерфейсе IDE :
Примечание. Все времена даны в HC.
Декодирование адреса.
Главная машина адресуется к НМД, ис-
пользуя программируемый ввод-вывод. При
этом адрес регистра тремя линиями адреса
DAO-DA2 и выбором кристалла -CSO или
-CS1. Шина данных главной машины HD8-HD15
разрешена только когда активен сигнал
-HIO16 и главная машина адресует регистр
данных для передачи данных.
Набор регистров, доступных со стороны
главной машины, называется файлом задачи
(Task File).
В таблице 4.3 показаны адреса и функ-
ции регистров.
Таблица 4.3
+----+----+---+---+---+------------------+-------------------+
|-CSO|-CS1|DA2|DA1|DAO| Функция чтения | Функция записи |
|----+----+---+---+---+------------------+-------------------+
| 1 | 0 | 0 | X | X | высокий импеданс | не используется |
| 1 | 0 | 1 | 0 | X | высокий импеданс | не используется |
| 0 | 1 | 0 | 0 | 0 | Data Register | Data Register |
| 0 | 1 | 0 | 0 | 1 | Еггог Register | не используется |
| 0 | 1 | 0 | 1 | 0 | Sector Count | Sector Count |
| 0 | 1 | 0 | 1 | 1 | Sector Number | Sector Number |
| 0 | 1 | 1 | 0 | 0 | Cylinder Low | Cylinder Low |
| 0 | 1 | 1 | 0 | 1 | Cylinder High | Cylinder High |
| 0 | 1 | 1 | 1 | 0 | SDH Register | SDH Register |
| 0 | 1 | 1 | 1 | 1 | Status Register | Command Register |
| 1 | 0 | 1 | 1 | 0 | Alternativ status|Fixed Disk Registr |
| | | | | | Register | |
| 1 | 0 | 1 | 1 | 1 | Digital Input | не используется |
| | | | | | Register | |
+----+----+---+---+---+------------------+-------------------+
Примечание. X - состояние безразлично.
Описание регистров.
Ниже дано описание регистров интерфей-
са IDE.
Неиспользуемые биты в регистрах чтения
воспринимаются нулями, в регистрах записи
состояние этих битов безразлично. Если
бит активен, он устанавливается в "1",
если неактивен, то в "0".
Data Register.
Регистр данных. Через этот регистр чи-
таются и записываются данные в командах
чтения и записи. Через этот регистр запи-
сывается таблица чередования секторов в
команде форматирования и данные, связан-
ные с командой идентификации. Все данные
передаются словами 16 бит, за исключением
байтов кода исправления ошибок (ECC).
Данные хранятся на диске в следующей пос-
лeдoватeльнoсти: сначала младший байт,
затем старший байт.
Еггог Register.
Регистр ошибок содержит состояние пос-
лeднeй команды, выполненной НМД. Содержа-
ние этого регистра действительно только
тогда, когда в Status Register установлен
бит 0 - ERR.
После выполнения команды диагностики
(код 90) регистр содержит код состояния.
Ниже описаны биты в Error Register.
7 6 5 4 3 2 1 0
+---+---+---+----+---+----+----+----+
|BBK|UNC| - |IDNF| - |ABRT|TRKO|DMNF|
+---+---+---+----+---+----+----+----+
BBK - Bad Block Mark
- индицирует, что найдена метка плохого
блока в поле идентификатора требуемого
сектора.
UNC - Uncorrectable Data Error
- указывает, что имеет место hekoppektu-
руeмая ошибка данных.
IDNF - ID Field Not Found
- указывает, что не обнаружено поле
идентификатора требуемого сектора.
ABRT - Abort
- указывает, что требуемая команда была
прервана вследствие нeдeйствитeльнoгo ко-
да команды, или неготовности или ошибки
записи НМД.
TRKO - Track 0 Not Found
- указывает, что дорожка 0 не обнаружена
во время команды рeкалибрoвки.
DMNF - Data Adress Mark Not Found
- указывает, что адресный маркер данных
не обнаружен после идентификатора требуе-
мого сектора.
Sector Count.
Счетчик секторов определяет количество
секторов данных для команды чтения/запи-
си. Если значение в этом регистре равно
0, то определяется значение 256 секторов.
Этот счетчик уменьшается по мере чте-
ния/записи каждого сектора. Содержание
этого регистра определяет число секторов
на дорожке при выполнении команды Initia-
lize Drive Parametrs.
Sector Number.
Номер сектора. Этот регистр содержит
номер начального сектора для любого дос-
тупа к НМД. При завершении обработки сек-
тора и в конце команды этот регистр ука-
зывает на последний правильно прочитанный
сектор или на сектор, в котором произошла
ошибка.
Cylinder Low
Регистр младших разрядов номера ци-
линдра содержит младшие 8 разрядов на-
чального номера цилиндра при любом обра-
щeнии к НМД. При завершении обработки
сектора и в конце команды этот регистр
изменяется и отображает текущий номер ци-
линдра.
Cylinder High
Регистр старших разрядов номера ци-
линдра содержит 3 старших разряда началь-
ного номера цилиндра при любом обращении
к НМД. При завершении обработки сектора и
в конце команды этот регистр изменяется и
отображает текущий номер цилиндра.
SDH Register
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
| 1 | 0 | 1 |DRV|HSЗ|HS2|HS1|HSO|
+---+---+---+---+---+---+---+---+
DRV - Drive Select Number - 0
- выбран НМД 0, 1 - выбран НМД 1
HSЗ-HSO
- двоично закодированный номер выбора
головки.
Status Register
Этот регистр содержит информацию o
состоянии НМД. Содержание регистра изме-
няется при завершении каждой команды. Ес-
ли бит BSY активен, то другие биты не
действительны. Считывание главной машиной
этого регистра подтверждает получение ею
прерывания и сбрасывает поступившее пре-
рывание.
7 6 5 4 3 2 1 0
+----+----+----+----+----+----+----+----+
|BSY |DRDY|DWF |DSC |DRQ |CORR|IDX |ERR |
+----+----+----+----+----+----+----+----+
BSY - Busy
- Если этот бит "занят" активен, то мик-
рoкoнтрoллeр накопителя имеет доступ к
регистрам файла задачи, а главная машина
нет. Любое чтение главной машиной регист-
ров файла задачи приводит к чтению Status
Register.
DRDY - Drive Ready
- Указатель готовности дисковода.
DWF - Drive Write Fault
- Этот бит указывает, что в накопителе
произошла ошибка записи.
DSC - Drive Seck Complete
- Этот бит показывает, что головки уста-
нoвлeны на требуемой дорожке.
DRQ - Data Request
- Запрос данных. Указывает на то, что
НМД готов к передаче слова или байта дан-
ных по шине данных.
CORR - Corrected Data
- НМД устанавливает этот бит в "1", если
произошла ошибка данных и эта ошибка была
скорректирована.
IDX - Index
- Индекс. Этот бит активен один раз за
оборот диска.
ERR - Error
- Бит ошибки. Указывает главной машине,
что во время последней операции произошла
ошибка. Биты в Error Register oбeспeчива-
ют дополнительную информацию.
Command Register.
Регистр команд. В этот регистр главная
машина записывает 8-разрядный код коман-
ды, которую будет выполнять НМД.
Выполнение команды начинается сразу
после того, как в регистр произведена за-
пись.
Таблица 4.4
+-----------------------------------+---+--------------------+
| | К | Регистры |
| Команда | о +----+----+----+-----+
| | д | SC | SN | CN | SDH |
|-----------------------------------+---+----+----+----+-----+
|Recalibrate | 1X| | | | DRV |
|Read Sector(s) (с повторами) | 20| V | V | V | V |
|Read Sector(s) (без повторов) | 21| V | V | V | V |
|Read Long (с повторами) | 22| V | V | V | V |
|Read Long (без повторов) | 23| V | V | V | V |
|Read Verify Sector(s)(с повторами) | 40| V | V | V | V |
|Read Verify Sector(s)(без повторов)| 41| V | V | V | V |
|Write Sector(s) (с повторами) | 30| V | V | V | V |
|Write Sector(s) (без повторов) | 31| V | V | V | V |
|Write Long (с повторами) | 32| V | V | V | V |
|Write Long (без повторов) | 33| V | V | V | V |
|Format Track | 50| V | | V | V |
|Seek | 7X| | V | V | V |
|Execute Drive Diagnostic | 90| | | | DRV |
|Initialize Drive Parameters | 91| V | | | V |
|Read Sector Buffer | E4| | | | DRV |
|Write Sector Buffer | E8| | | | DRV |
|Identify Drive | EC| | | | DRV |
+-----------------------------------+---+----+----+----+-----+
Примечание.
1. X - означает, что значение битов без-
различно;
V - означает, что данный регистр ис-
пользуется.
Регистры: SC - Sector Count
SN - Sector Number
CN - Cylinder Low & High
SDH - SDH Register
DRV - означает, что в SDH Register
ипoльзуeтся только бит DRV, все остальные
биты не действительны.
2. Команды даны в шестнадцатеричной сис-
теме.
3. "C повторами" означает, что в коман-
дах Записи и Чтения поиск идентификатора
осуществляется для 10 индексных импуль-
сов, а "без повторов" - для 2-х.
Alternativ Status Register.
Альтернативный регистр состояния сов-
падает с Status Register, но настроен на
другие адреса. Единственное отличие от
Status Register это то, что чтение этого
регистра не приводит к подтверждению пре-
рывания или очистке запроса прерывания.
7 6 5 4 3 2 1 0
+----+----+----+----+----+----+----+----+
|BSY |DRDY|DWF |DSC |DRQ |CORR|IDX |ERR |
+----+----+----+----+----+----+----+----+
Описание битов этого регистра дано в опи-
сании Status Register.
Fixed Disk Register.
Этот регистр используется для прог-
раммного сброса НМД и для управления раз-
решением прерывания.
7 6 5 4 3 2 1 0
+----+----+---+---+-------+----+----+---+
| 0 | 0 | 0 | 0 |HSЗEN=1|SRST|-IEN| 0 |
+----+----+---+---+-------+----+----+---+
HSЗEN - Head Select 3 Enable
- в этот бит всегда записывается "1".
SRST - Host Software Reset
- программный сброс - выработка этого
бита приводит к сбросу НМД.
-IEN - Interrupt Enable
- разрешение прерывания. Когда -IEN=0 и
НМД выбран, то разрешается выработка пре-
рывания по выходу IRQ. Когда -IEN=1, то
выход IRQ в состояние высокого импeд.
Digital Input Register.
Этот регистр показывает, какой НМД
выбран и какая головка выбрана в данный
момент.
7 6 5 4 3 2 1 0
+----+----+----+----+----+----+----+----+
|HIZ |-WTG|-HSЗ|-HS2|-HS1|-HSO|-DS1|-DSO|
+----+----+----+----+----+----+----+----+
HIZ
- когда читается этот регистр, вывод DD7
устанавливается в состояние высокого им-
пeданса.
-WTG - Write Gate
- НМД вырабатывает -WTG во время команд
записи.
(-HSЗ)-(-HSO) - Head Select
- Двоичное дополнение к адресу выбранной
головки. Например, если HSЗ-HSO=1010, то
выбрана 5-я головка.
-DS1,-DSO - Drive Select
- Показывает, какой из двух дисководов
выбран и активен в данное время.
Описание команд.
Все команды дeкoдируются из Command
Register.
Чтобы подать команду, необходимо заг-
рузить соответствующие регистры в файле
задачи, активировать бит разрешения пре-
рывания -IEN и записать код команды в
Command Register. Исполнение команды на-
чинаeтся после записи команды в Command
Register.
Recalibrate.
Эта команда перемещает головки запи-
си/чтения на цилиндр 0. Получив команду,
НМД устанавливает BSY и выполняет поиск
цилиндра 0. Затем НМД ожидает окончания
поиска, обновляет состояние регистров
файла задачи, очищает BSY и генерирует
прерывание.
В таблице 4.7 показан протокол обмена
для данной команды.
Read Sector(s)
Эти команды позволяют считывать от 1
до 256 секторов по 512 байт, начиная с
сектора заданного в Sector Number. Если
Sector Count = 0, то будет считываться
256 секторов.
В таблице 4.5 показан протокол обмена
для данных команд.
Если НМД находится не на выбранной до-
рожке, осуществляется поиск. Если НМД на-
ходится на выбранной дорожке, то oсущeст-
вляется поиск идентификатора для 2-х ин-
дeксных импульсов, для Read Sector(s) без
повторов и для 10, для Read Sector(s) с
повторами. Если ID считан правильно, то
байт синхронизации поля данных должен
быть найден до следующего импульса секто-
ра, иначе будет выставлена ошибка DMNF.
До завершения команды регистры файла за-
дачи содержат номер цилиндра, головки и
сектора для последнего прочитанного сек-
тора. Если происходит ошибка, то чтение
прекращается на секторе, где эта ошибка
обнаружена. В этом случае регистры файла
задачи содержат номер цилидра, головки и
сектора, где произошла ошибка. Sector Co-
unt содержит число нeпeрeданных секторов.
Если данная ошибка была ошибкой hekoppek-
тируeмых данных, то эти данные будут дос-
тупны для чтения главной машине, а ос-
тальные сектора передаваться не будут.
После успешного завершения команды
Sector Count = 0.
Если выполняется команда Read Long, то
НМД не проверяет ECC байты для определе-
ния ошибки в поле данных. НМД возвращает
в главную машину не только данные, но и 7
байт коррекции ошибки (ECC). Байты данных
передаются 16-битными посылками, а байты
ECC - 8-битными.
Команды Read Long всегда oднoсeктoрныe
команды.
ПРОТОКОЛ ВЫПОЛНЕНИЯ КОМАНД ЧТЕНИЯ
Таблица 4.5
+---+--------------------------+-----------------------------+
|ШАГ| ГЛАВНАЯ МАШИНА | НМД |
|---+--------------------------+-----------------------------+
|1 | Проверка, что BSY=0 и | |
| | DRDY=1 | |
|2 | Запись в регистры: | |
| | Sector Count | |
| | Sector Number | |
| | Cylinder Low | |
| | Cylinder High | |
| | SDH | |
|3 | Запись в CommandRegister | |
|4 | |Устанавливает BSY=1 |
|5 | |Подготовка к передаче данных |
| | |(загружает данные в буфер |
| | |данных) |
|б | |Устанавливает DRQ=1,BSY=0 и |
| | |вырабатыавет IRQ |
|7 | Читает Status Register | |
|8 | |Сбрасывает IRQ |
|9 | Читает блок данных | |
|10 | |Устанавливает DRQ=0 |
|11 | |Если многосекторная команда, |
| | |то возвращение на шаг 4 |
|12 | Готовность к седующей | |
| | команде | |
+---+--------------------------+-----------------------------+
Примечание. Данный протокол применим к
следующим командам:
Identify Drive
Read Buffer
Read Sector(s).
Write Sector(s)
Эти команды позволяют записывать от 1
до 256 секторов по 512 байт, начиная с
сектора заданного в Sector Number. Если
Sector Count = 0, то будет записано 256
секторов.
В таблице 4.6 показан протокол обмена
для этих команд.
Если НМД находится не на выбранной до-
рожке, осуществляется поиск. Если НМД на-
ходится на выбранной дорожке, то oсущeст-
вляется поиск идентификатора для 2-х ин-
дeксных импульсов, для Write Sector(s)
без повторов и для 10, для Write Sec-
tor(s) с повторами. Если ID не найден, то
устанавливается ошибка IDNF.
ПРОТОКОЛ ВЫПОЛНЕНИЯ КОМАНД ЗАПИСИ
Таблица 4.6
+---+--------------------------+-----------------------------+
|ШАГ| ГЛАВНАЯ МАШИНА | НМД |
|---+--------------------------+-----------------------------+
|1 | Проверка, что BSY=0 и | |
| | DRDY=1 | |
|2 | Запись в регистры: | |
| | Sector Count | |
| | Sector Number | |
| | Cylinder Low | |
| | Cylinder High | |
| | SDH | |
|3 | Запись в CommandRegister | |
|4 | |Устанавливает DRQ=1 |
|5 | Читает Status Register | |
| | (DRQ=1)(необезательно) | |
|б | Записывает блок данных | |
| | в Data Register | |
|7 | |Устанавливает DRQ=0,BSY=1 |
|8 | |Oбрабатывае данные |
|9 | |Устанавливает BSY=0,выраба- |
| | |тывает IRQ и устанавливает |
| | |DRQ=1,если будет переда- |
| | |ваться еще один блок данных |
|10 | Читает Status Register | |
| | (в ответ на IRQ) | |
|11 | |Сбрасывает IRQ |
|12 | |Если многосекторная команда, |
| | |то возвращение на шаг 5 |
|13 | Готовность к следующей | |
| | команде | |
+---+--------------------------+-----------------------------+
Примечание. Данный протокол применим к
следующим командам:
Format Track
Write Buffer
Write Sector(s).
Если ID считан правильно, данные, заг-
ружeнныe в буфер, записываются в поле
данных сектора, сопровождаемые внутренним
генерированием кода ECC. Если произошла
ошибка во время записи более чем одного
сектора, то запись прекращается на секто-
ре, где произошла ошибка и файл задачи
содержит номер цилиндра, головки и секто-
ра, где произошла ошибка. По завершении
команды регистры содержат номера цилинд-
ра, головки и сектора, соответствующие
последнему записанному сектору.
После успешного завершения команды
Sector Count = 0.
Необходимо учесть, что НМД может при-
нимать от машины дополнительные блоки
данных для обеспечения высoкoпрoизвoди-
тельной записи. Команда Write Long запи-
сываeт данные и 7 байт ECC прямо из буфе-
ра сектора, при этом НМД сам не генериру-
ет байты ECC. Байты данных передаются по-
сылками 16 бит, байты ECC 8-бит. Команды
Write Long всегда oднoсeктoрныe команды.
Read Verify Sector(s).
Эта команда идентична Read Sector(s),
за исключением того, что данные не пере-
даются в главную машину.
ПРОТОКОЛ ВЫПОЛНЕНИЯ КОМАНД,
HE ИСПОЛьЗУЮЩИХ ПЕРЕДАЧУ ДАННЫХ
Таблица 4.7
+---+--------------------------+-----------------------------+
|ШАГ| ГЛАВНАЯ МАШИНА | НМД |
|---+--------------------------+-----------------------------+
|1 | Проверка, что BSY=0 и | |
| | DRDY=1 | |
|2 | Запись в регистры: | |
| | Sector Count | |
| | Sector Number | |
| | Cylinder Low | |
| | Cylinder High | |
| | SDH | |
|3 | Запись в CommandRegister | |
|4 | |Устанавливает BSY=1 |
|5 | |Выполняет действия соответ- |
| | |ствующие команде |
|б | |Устанавливает BSY=0 и |
| | |вырабатывает IRQ |
|7 | Читает Status Register | |
|8 | |Сбрасывает IRQ |
|9 | Готовность к следующей | |
| | команде | |
+---+--------------------------+-----------------------------+
Примечание. Данный протокол применим к
следующим командам:
Execute Drive Diagnostic
Read Verify Sector(s)
Recalibrate
Seek
Initialize Drive Parameters.
Format Track.
Эта команда форматирует дорожку, за-
данную в файле задачи. Адрес дорожки оп-
рeдeляeтся значением в Cylindr High & Cy-
linder Low Registers, а количество секто-
ров определено в Sector Count. Когда вы-
рабатываeтся команда, НМД устанавливает
бит DRQ и ожидает поступления от главной
машины 512 байт данных формата. Когда
данные получены, НМД ожидает DRQ, уста-
навливаeт BSY, начинает выполнение коман-
ды. Если НМД не находится на заданной до-
рожке, начинает выполнять поиск дорожки.
Когда НМД находится на заданной дорожке,
НМД начинает форматирование, используя
данные, полученные от главной машины.
Содержание данных, полученных от глав-
ной машины, интерпретируются следующим
образом:
Таблица 4.8
+-----------------+------------------+
|DD15-DDO8 | DDO7-DDO |
+-----------------+------------------+
| первый сектор |
+-----------------+------------------+
|номер сектора | дескриптор |
+-----------------+------------------+
| последний сектор |
+-----------------+------------------+
|номер сектора | дескриптор |
+-----------------+------------------+
|оставшиеся байты записываются нулями|
+------------------------------------+
Каждый сектор характеризуется 16-бит-
ным словом. DD15-DD8 содержат номер сек-
тора. Обычно номера секторов следуют по
порядку, начиная с 1, для обеспечения че-
рeдoвания секторов 1:1. DD7-DDO содержат
число-дескриптор, где:
00H - форматирование сектора как хоро-
шего;
80H - форматирование сектора как пло-
xoro.
Значения,отличные от 00 и 80 uhtepnpe-
тируются как хорошие сектора.
В таблице 4.6 показан протокол для
данной команды.
Seek.
Эта команда инициализирует поиск до-
рожки и выбирает головку, определенную в
файле задачи. Для выполнения этой команды
НМД не обязательно должен быть фoрматирo-
ван.
НМД может генерировать прерывания до
завершения поиска.
В таблице 4.7 показан протокол для
данной команды.
Execute Drive Diagnostic.
Выполнить диагностику НМД. После полу-
чения этой команды НМД выполняет внутрен-
ние тесты. После выполнения диагностики в
Error Register 8-битный код, описанный
ниже:
код описание
01 нет ошибок
02 ошибка контроллера
03 ошибка буфера сектора
05 ошибка микроконтроллера
Примечание: НМД может выдавать в глав-
ную машину и другие коды, значения кото-
рых уточняются на этапе проектирования.
В таблице 4.7 показан протокол для
данной команды.
Initialize Drive Parameters.
Инициализация параметров НМД. Позволя-
ет управляющей машине устанавливать число
секторов на дорожке и максимальное число
головок, которое должно эмулироваться
НМД. При получении команды НМД установит
BSY, сохранит данные параметры, очистит
BSY и сгенерирует прерывание.
Этой командой используются только ре-
гистры Sector Count, который указывает
максимальное чисo головок. Бит DRV выби-
рает соответственно НМД 0 или НМД 1. Sec-
tor Count и SDH Register не проверяются
на правильность по этой команде. Если они
не верны, то сообщение об ошибке не будет
выдаваться до выполнения какой-либо ко-
манды, использующей эти значения.
В таблице 4.7 показан протокол для
данной команды.
Read Buffer.
Чтение буфера. Позволяет главной маши-
не читать 512 байт данных из буфера сек-
тора НМД. При получении этой команды НМД
устанавливает BSY, подготавливает буфер
для операции чтения, устанавливает DRQ,
ожидает BSY, генерирует прерывание. Глав-
ная машина затем считывает байты данных
из этого буфера.
В таблице 4.6 показан протокол для
данной команды.
Write Buffer.
Записать буфер. Эта команда позволяет
главной машине перезаписать содержимое
буфера данных НМД.
В таблице 4.6 показан протокол для
данной команды.
Identify Drive.
Идентифицировать НМД. Позволяет глав-
ной машине получить от НМД информацию o
нем. При получении данной команды НМД ус-
танавливаeт BSY, записывает в буфер ин-
формацию, устанавливает DRQ и генерирует
прерывание. Главная машина считывает эту
информацию из буфера.
Структура вoзвращаeмoй НМД информации
выглядит следующим образом.
Байт Содержание
00-01 HEX ?
02-03 HEX количество цилиндров
04-0б HEX 0
07 HEX количество головок
08-09 HEX байт на дорожке
OA-OB HEX байт на сектор
0C HEX 0
0D HEX секторов на дорожке
0E-13 HEX ?
14-27 ASCII Serial Number (конец со-
общения 00h)
28 HEX 0
29-2D HEX ?
2E-35 ASCII Firmware Revision
Зб-SD ASCII Model Number (конец со-
общения 80h)
В ячейках, где числа занимают два бай-
та, информация располагается следующим
образом: в младшей ячейке находится стар-
ший байт числа, а в следующей ячейке
младший байт этого числа.
_______________________________
Other articles: