31 декабря 1997

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:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
News - Call 100-Hz BBS.
Iron - technology improvements for the Pentagon's screwing the system slot.
Reprinted with cont. - How to break the half-line (end of part 3).

В этот день...   28 April