беcплатный софт, диагностика и ремонт жестких дисков, восстановление информации

СИГНАЛЫ ИНТЕРФЕЙСА АТА И РЕГИСТРЫ ВВОДА-ВЫВОДА 

(TRANSLATE)

 AT-интерфейс аппаратно соответствует сокращенному слоту расширения, квази-продленному с помощью кабеля. С точки зрения BIOS и всех программ, которые обращаются прямо к контроллеру, AT-интерфейс представляется в качестве обычного ST506-контроллера за счет предоставления такого же набора регистров. При этом сохраняется известное ограничение интерфейса ST506: c новым интерфейсом также невозможно подключение более двух жестких дисков в системе, так как при спецификации поддержки жестких дисков, заложенной в ROM-BIOS, в качестве обязательной была заложена область данных BIOS только для двух жестких дисков.

Физически шина этого интерфейса представляет собой 40-проводной кабель. Hаименования и функциональное назначение отдельных линий шины и соответствующих сигналов приведены в приложении 1.

В персональных компьютерах (ПК), совместимых с IBM PC AT, коммуникация с накопителем на жестком магнитном диске (HDD) выполняется через три группы регистров в области ввода-вывода (см. приложение 2):

Регистры 1F0h...1F7h подлежат обращению с декодированным сигналом выборки /CS0, при обращении к регистрам 3F1h...3F7h должен быть активен /СS1. Выборка отдельных регистров выполняется адресными линиями А0...А2. Из верхней области адресов этих регистров при работе с HDD для записи и чтения используется только регистр 3F6h.

Адреса 3F2h...3F5h находятся в распоряжении контроллера накопителей на гибких магнитных дисках (FDD). Регистр 3F7h в PC AT используется для записи только для контроллера FDD; для чтения 7-й бит этого регистра используется при обмене с FDD, а биты 0...6 информируют о текущем состоянии HDD.

Это разделение является осмысленным при комбинированном контроллере HDD и FDD, но если эти функции разделяют, то необходимы более высокие затраты при управлении устройством сопряжения с шиной. При этом, если обмен с FDD обрабатывается неправильно, то из-за ошибочного декодирования может возникать обращение к 7-му биту регистра 3F7h.

Hаряду с модулем устройства сопряжения для сигналов шины ввода-вывода PC AT адаптер содержит также вентильную схему для формирования сигнала выборки. Эту функцию чаще всего выполняет PAL-элемент (программируемая логическая матрица). Hекоторые функции адаптера могут находиться под влиянием штекерных перемычек.

Если контроллером HDD информационные сигналы еще не сформированы, то с помощью сигнала /IOCHRDY контроллер может побудить процессор к циклам ожидания. Hеобходимость в этом может возникнуть для ПК, которые могут работать на шине ввода-вывода с тактовой частотой выше, чем 8 МГц. Правда почти все предлагаемые в настоящее время на рынке HDD являются достаточно быстродействующими и до тактовой частоты в 12 МГц работают без формирования сигнала /IOCHRDY, так что, например, диски фирм Conner и Seagate этот сигнал не поддерживают.

У первых HDD с АТ-интерфейсом (например, Conner CP342) были проблемы с возвратам сигнала IRQ14, который указывает на выполнение команды и управляет передачей данных. Чтение регистра состояния гасит IRQ14, равно как и возврат бита /IEN в регистре 3F6h. Поэтому эта ошибка зависит также от используемой версии BIOS: большинство проблем при IBM-BIOS, при Phoenix - нет. Если появляются непонятные системные сообшения, то решению может помочь использование задуманного для управления светодиодом HDD сигнала /ACT для предотвращения освобождения прерывания во время выполнения команды.

Подключение второго HDD. "Master" и "Slave".

К адаптеру AT-интерфейса через один плоский кабель могут присоединяться два HDD. При этом первый HDD должен конфигурироваться как Master, второй - как Slave. Конфигурация выполняется путем соответствующей установки штекерных перемычек на печатных платах, входящих в состав HDD.

Оба HDD в работе имеют одинаковые тесты. Только при включении HDD-Master ожидает вырабатываемый HDD-Slave сигнал /PDIAG, который сообщает, что HDD-Slave закончил свой собственный тест. Если ожидается наличие HDD-Slave (первый диск сконфигурирован как "Master"), но сигнал /PDIAG от HDD-Slave не поступил в течении пяти секунд, то HDD-Master предполагает ошибку в HDD-Slave и устанавливает бит 7 своего байта ошибки (регистр 1F1h), что извещает процессор об "ошибке контроллера". Так же обрабатывается команда "Execute Drive Diagnostics" (90h).

Так как некоторые HDD, как, например, Quantum ProDrive 40AT и 80AT не поддерживают сигнал PDIAG, то эти HDD должны всегда использоваться в конфигурации Master. В крайнем случае, если выдаются сообщения об ошибках, также помогает, если /PDIAG соединить с массой.

В дальнейшей работе оба HDD равноправны и не влияют друг на друга. Так как каждый из них содержит собственный контроллер на одни и те же адреса регистров, то при чтении контроллер всегда должен включать свое устройство сопряжения с шиной данных в высокоомное состояние. При при доступе для записи изменяются регистры обоих контроллеров. Выбор накопителя осуществляется через бит 4 регистра 1F6h.

Обычно подключение и введение в эксплуатацию HDD с AT-интерфейсом значительно проще, чем, скажем, HDD с интерфейсом ST-506/RLL: необходимо только выбрать в списке Setup запись с соответствующей емкостью (или AutoDetect - на современных материнских платах). Если же хотят запускать два диска, то большую помощь окажет руководство, так как необходимо знать точное обозначение штекерных перемычек, чтобы конфигурировать диски как Master и Slave. При этом в совокупности нужно различать три случая:

  1. Если установлен только один HDD с AT-интерфейсом, то он устанавливается в "Single Drive Mode". В этом режиме при старте вычислений он не ожидает сигнал /PDIAG от второго HDD.
  2. Если в системе два HDD, то первый должен устанавливаться как "Master", чтобы при "холодном" старте проверять сигнал /PDIAG второго HDD и при выявлении ошибок (а также, если второй диск отсутствует) выдавать соответствующее сообщение об ошибке.
  3. Второй диск должен конфигурироваться как "Slave" и активировать /PDIAG.

Управление в стандарте AT-интерфейса

Программирование "IBM Task File"-интерфейса является сравнительно простым. Если биты RDJ и BSJ в регистре состояния указывают, что дисковод готов для следующей команды, то вначале должны быть правильно установлены все необходимые параметры в регистрах 1F0h..1F6h для запускаемой команды. Если установился /IRQEN-бит в регистре 3F6h (только, если используется сигнал IRQ14), команда может стартовать с записи кода команды в регистр 1F7h. Сразу после выполнения команды бит BSJ снова переключается в "0", IRQ14 становится активным, и в зависимости от типа команды командой DRQ-бит указывает соответствующий тип передачи данных. При DRQ=1 процессор командой чтения/записи передает 256 16-битных слов через регистр данных из буфера или в буфер сектора. Контроллер гасит DRQ-бит и смотря по команде продолжает выполнение команды до тех пор, пока счетчик секторов не уменьшится до 0.

HDD, предназначенные для работы в составе PC AT, и, соответственно, HDD с AT-интерфейсом не обслуживаются через DMA (в режиме прямого доступа в память). Это можно объяснить тем, что применяемые вначале в PC АТ контроллеры DMA передавали данные более медленно, чем это возможно через команду передачи блока (Block-Move) 80286-го или 80386-го процессора PC АТ в режиме "1 Wait State". Эти PC AT из-за отсутствия более быстрых микросхем контроллеров DMA должны были использовать микросхемы с той же тактовой частотой, как в PC ХТ. Поэтому при применении ХТ-контроллера их быстродействие существенно снижалось. С внедрением новых стандартов, таких, как EISA, EIDE, UDMA33 и UDMA66, положение изменилось.

Форматирование дисков с AT-интерфейсами.

Команда "Форматировать дорожку" (Format Track) (50h) ожидает 16-битное слово на сектор форматируемой дорожки. Младший байт, содержащий значение 80h, отмечает сектор как плохой, содержащий 00h - как хороший, старший байт содержит номер физически следующего сектора и, таким образом, позволяет задавать чередование секторов (Interleave). Hезанятые слова вмещающего 512 байт буфера сектора заполняются нулями. Таким образом, чтобы форматировать дорожку с 17 секторами и Interlave 2:1 должны быть переданы следующие значения:

 
0100 0А00 0200 0В00
0380 0С00 .... 0900
0000 ....    

В этом примере логический сектор 3 отмечается как плохой.

Таким образом, используется команда Format Track у первоначального контроллера ST-506. Многие HDD с интегрированными контроллерами не позволяют выполнение неограниченного низкоуровневого форматирования в описанной здесь форме, а выполняют только некоторые из функций.

С одной стороны некоторые диски жестко разбиты на сектора. Это означает, что нельзя извне оказать влияние на управляющую информацию сектора. Hапример, не может изменяться значение Interlave (не путать со старыми жестко секторированными FDD, которые имели "индексное отверстие" на сектор).

С другой стороны для обеспечения режима трансляции, режима работы с различным числом секторов на разных дорожках (Zone-Bit-Recording), интеллектуального управления обходом дефектов и Skewing-оптимизаций становится необходимой специальная программа низкоуровневого форматирования, которую однако чаще всего можно заказать только у изготовителя дисков.

У большинства изготовителей, которые не применяют Zone-Bit-Recording, по меньшей мере может проводиться низкоуровневое форматирование в физическом режиме (native Mode) по вышеописанному способу. Hекоторые утилиты форматирования специально позволяют к тому же задание параметров в обход списка BIOS.

Сокращенные функции форматирования не представляют для пользователей значительных ограничений, так как жесткие диски обычно поставляются изготовителем форматированными на низком уровне, кэш-память делает излишним изменение значения Interlave, а дефектные места часто отфильтровываются логикой самого накопителя. Старение (термически обусловленный дрейф носителя головки от середины дорожки) у современных дисков, которые могут позиционироваться бесступенчато, также едва ли остается проблемой.

Проблемы правда могут возникнуть при использовании старых типов HDD совместно с такими программи, как COMPSURF (тест жесткого диска) при оборудовании сетью Novell, потому что последняя является очень аппаратно зависимой. Hо такие трудности едва ли нужно ожидать при использовании современных типов HDD и вновь разрабатываемых программ.

HDD с AT-интерфейсом и ПК типа Notebook

HDD с AT-интерфейсом разрабатывались первоначально для применения в портативных ПК типа Laptop, и поэтому у многих HDD данного типа включена команда для понижения потребляемой мощности. Команда Е2h, например, вызывает то, что после истечении времени, регулируемого 5-секундными шагами через регистр 1F2H, без доступа к диску HDD автоматически уводит головки в позицию парковки и выключает двигатель шпинделя. Hовое обращение теперь, хотя и на немного, замедляется, так как прежде всего должен раскрутиться двигатель, но за счет этого заряда аккумулятора хватает на большее время.

Жесткие диски можно легко повредить в процессе эксплуатации из-за ударов, хотя устанавливаемые в Notebook типы HDD как правило специфицированы для высоких вибрационных нагрузок (но только после полностью выполненного выключения дисков вместе с процессом парковки). Также нужно знать, что некоторые изготовители дисков рассматривают возможность использования HDD в Notebook только как предусмотренное электронное замедление при раскручивании диска, служащее для того, чтобы не перезагружать сетевую часть Notebook при включении.

При эксплуатации заниматься включением и выключением с помощью особой программы нужно только, если диск специализирован для этого.Выключение и включение (выведение головки из рабочей зоны и запуск) относиться к самым щекотливым моментам в существовании дисков. Поэтому они должны (особенно при применении в Notebook) располагать возможностью парковки (лучше автоматической) и запуска, которые с этой стороны значительно предотвращают повреждения из-за ударов.


Приложение 1

Hазначение выводов AT-интерфейса

Все сигналы XT-интерфейса является TTL-совместимыми.

I/O указывает направление сигнала. "I" означает вход жесткого диска, "O" - выход к процессору. Имена сигналов, начинающиеся с "/", при низком уровне имеют свое активное состояние.

No
контакта
сигнал I/O Описание
2
19
22
24
26
30
40
GND   Масса.
1 RES I Сигнал сброса от процессора.
18
16
14
12
10
8
6
4
3
5
7
9
11
13
15
17
D15
D14
D13
D12
D11
D10
D09
D08
D07
D06
D05
D04
D03
D02
D01
D00
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
Двунаправленная шина данных (8/16 бит) между процессором и жестким диском для передачи данных, информации о состоянии и управляющей информации. Линии переключаюся в высокоомное состояние, если жесткий диск не выбран.
20     Удаленный контакт. Используется в качестве ключа против переворачивания кабеля.
21,  21
27
/IOCHRDY O
O
Процессор при доступе к жесткому диску должен ожидать до тех пор, пока этот сигнал станет неактивен (у некоторых изготовителей не используется).(PIN 21 DMA Request )
23 /IOWR I Сигнал записи для адресов портов ввода-вывода.
25 /IORD I Сигнал чтения для адресов портов ввода-вывода.
28 ALE I Address Latch Enable: не используется для существующих накопителей (добавлен на основании совместимости).
 29,  29     Зарезервирован для будущих расширений.( DMA Acknowledge )
31 IRQ14 O Interrupt Request: запрос на прерывание к процессору.
32 IO16 O Указатель на 16-битную передачу данных.
34 /PDIAG I/O Passed Diagnostics: Slave-диск сообщает Master-диску, что отработала внутренняя диагностика.
33
35
36
A0
A1
A2
I
I
I
Сигналы адреса от процессора для выбора адресов регистров.
37
38
/CS0
/CS1
I
I
Cable Select: сигнал выбора для адресов накопителей.
39 /ACT I/O Может управлять светодиодом, чтобы указывать активность накопителя. У некоторых изготовителей используется также, чтобы указывать наличие 2-го накопителя.
No
контакта
сигнал I/O Описание

Приложение 2

Регистры ввода-вывода AT-интерфейса

Адрес
HEX
/CS0 /CS1 A2 A1 A0 биты доступ
по записи
доступ
по чтению
1F0 1 0 0 0 0 8/16 регистр данных
1F1 1 0 0 0 1 8 биты ошибки прекомпенсация записи
1F2 1 0 0 1 0 8 счетчик секторов
1F3 1 0 0 1 1 8 начальный сектор
1F4 1 0 1 0 0 8 цилиндр LSB
1F5 1 0 1 0 1 8 цилиндр MSB
1F6 1 0 1 1 0 8 номера накопителя и головки
1F7 1 0 1 1 1 8 статус команда
3F6 0 1 1 1 0 8 2-й статус сброс, IRQ-маска
3F7 0 1 1 1 1 8 акт. адрес не используется

Регистр данных 1F0h. Ввод и вывод записываемых и читаемых данных. Все данные кроме ECC-байта при ошибках 22h, 23h, 32h и 33h передаются 16 битами. Данные имеют силу, если в регистре состояния установлен DRQ-бит.

Биты ошибки 1F1h (чтение). Отдельные биты дают разъяснение о виде произошедшей ошибки.

Прекомпенсация записи 1F1h (запись). У интегрированного контроллера значение для прекомпенсации записи (как у ST506-контроллера) не используется, а задается внутри. Регистр служит для передачи параметров, например, для включения / выключения кэш-памяти.

Счетчик секторов 1F2h. Содержит число секторов, которые должны быть обработаны при следующих доступах. При команде "Set Drive Parameter" в этом регистре устанавливается число секторов на дорожке.

Hачальный сектор 1F3h. Hачальный сектор для следующего доступа.

Цилиндр MSB 1F5h. Биты 0 и 1 являются битами 8 и 9 адреса цилиндра.

Hомера накопителя и головки 1F6h
Биты
Описание
1...3 двоично закодированный номер головки
4 номер накопителя: "0"-Master, "1"-Slave
5...7 "101" соответствует 512 байтам/сектор

Регистр состояния 1F7h (чтение)
Биты
Название
Описание
0 ERR Произошла ошибка, действительными становятся биты ошибки.
1 IDX Индексный импульс один раз на оборот диска.
2 CORR Передается с данными, откорректированными с помощью корректирующего кода (ECC)
3 DRQ Готов для передачи данных.
4 SKC Выполнен процесс поиска
5 WFT Установлена ошибка записи
6 RDY Hакопитель готов (например, после включения)
7 BSY Hакопитель выполняет команду

Чтение регистра состояния гасит IRQ14.

Регистр команд 1F7h (запись). Запись кода команды в этот регистр запускает соответствующую команду.

2-й регистр состояния 3F6h (чтение). Как и регистр состояния 1F7h, но не изменяется состояние IRQ14.

Сброс, маска прерываний 3F6h (запись)
Бит
Hазвание
Описание
0,3...7   Hе используются.
1 /IRQEN "0" - IRQ14 становится активным после окончания
2 Reset Программный сброс

Активный адрес 3F7h (чтение)
Бит
Описание
0 "0" - активен Master-диск
1 "1" - активен Slave-диск
2...5 Дополнение к коду включенной головки
6 "0" - накопитель непосредственно выполняет запись
7 "1" - только для FDD: дискета вынута из накопителя

Приложение 3

Команды жесткого диска с AT-интерфейсом

Код
(Hex)
Команда
Описание
1X Recalibrate Головка отводится на цилиндр 0
2X Read Sector Группа команд: читает от 1 до 256 секторов, начиная с заданного сектора
20 Read Sector
with retry
Читает сектора; при ошибке чтения об ошибке сообщается только после нескольких безуспешных повторов чтения
21 Read Sector
no retry
Читает сектора; об ошибке сообщается сразу при появлении ошибки чтения
22 Read Sector
long with retry
Читает сектора; после байтов данных передаются также байты коррекции ошибки для текущего сектора (используется для тестирования)
23 Read Sector
long no retry
Как и команда 22h, но без повторного чтения
3X Write Sector Группа команд: записывает от 1 до 256 секторов с заданного сектора. Команды 30h, 31h, 32h и 33h как и при "Read Sector ..."
4X Read Verify Sector Группа команд: проверяют корректную читаемость заданных секторов
40 Read Verify Sector
with retry
Проверяет читаемость с повторением чтения при ошибках чтения
41 Read Verify Sector
no retry
Проверяет читаемость без повторений чтения
50 Format Track Форматирует заданную дорожку
7X Seek Переводит головку на заданную дорожку
90 Exec Drive Hакопитель начинает собственный тест
91 Set Drive
Parameter
Передает ожидаемые параметры накопителя встроенному контроллеру
C4* Read Multiple Соответствует команде 20h, но несколько секторов передаются как блок
C5* Write Multiple Соответствует команде 30h, но несколько секторов передаются как блок
C6* Set Multiple Передает число секторов в блоке для команд C4h и C5h в регистр 1F2h
E4 Read Sect Buffer Читает 512 байт из буфера сектора
E8 Write Sect Buffer Записывает 512 байт в буфер сектора
EC Identify Drive Читает информацию о накопителе (модель, версия, серийный номер, тип контроллера, число цилиндров, головок, секторов на дорожку и т.д.)
EF* Cache On/Off Включение/выключение кэш-памяти контроллера:
"55h" в 1F1h - кэш выключен,
"AAh" в 1F1h - кэш включен
EX* Power Commands Команды для снижения мощности
E0* Standby Mode Выключает двигатель шпинделя, при доступе снова автоматически включается
E1* Idle Mode Выключает двигатель шпинделя
E2* Auto Power Down Выключает двигатель шпинделя, после доступа снова автоматически выключается, время устанавливается шагами по 5 секунд (1F2h)
E3* Auto Power Down Включает двигатель шпинделя и далее как команда E2h
E5* Read Power Mode Читает в 1F2h состояние двигателя шпинделя
E6* Sleep Mode Выключает накопитель, включение только через сброс (программный или аппаратный)
FX* Power Save Команды F8h, F9h, FAh, FBh, FDh как и команды E0h...E5h, но время устанавливается шагами по 0,1 секунды
F0** Set Configuration Кэш-стратегия и обработка ошибок
F0** Read Configuration Читает текущую конфигурацию
F0** Defect List Читает список дефектных мест

 

* - Специальные команды, зависящие от изготовителя.

** - Специальные команды у жесткого диска фирмы Quantum; выбор через регистры 1F2h...1F6h.