Архив статей
Обновление: 24.05.2014
Всего статей: 17


Ремонт и сервис
Обновление: 01.05.2014
Документов: 8


Программирование
Обновление: 18.04.2014
Разделов: 2


Скачать
Общий объём: 4.3 Mb
Файлов: 12


ICQ: 680172615
rumit-71@mail.ru

Наши новости
24.05.2014 Полность переработано содержимое и обновлён интерфейс сайта
01.05.2014 Добавлены статьи в разделы "Ремонт и сервис", "Железо"
01.05.2014 Добавлены несколько нужных программы для бесплатного пользования
Устройство и работа накопителей

Не будет преувеличением, если назвать жёсткий диск - Вершиной научных достижений! Статья поможет понять принципы работы современных накопителей и содержит несколько советов о том, как продлить им жизнь.


ОГЛАВЛЕНИЕ:
I. ВВЕДЕНИЕ
• Техническое описание
• Служебная информация жёстких дисков
III. РЕМОНТ ЖЁСТКИХ ДИСКОВ
• Порты ввода/вывода
• Схема терминала
• Описание команд ЖД

II. ИНТЕРФЕЙСЫ
• Интерфейс АТА/IDE
• Команды интерфейса АТА
• Serial ATA
IV. ПРОБЛЕМЫ ЭКСПЛУАТАЦИИ
• Типичные проблемы жёстких дисков
• Способы их устранения
• Заключение


Техническое описание HDD
СТРУКТУРА ДИСКА

В накопителях чтение/запись производится универсальными головками, с поверхности вращающихся магнитных дисков. Диски разбиты на дорожки и секторы. Обычно имеется несколько дисков, и данные записываются на обеих сторонах каждого из них. В современных накопителях есть по меньшей мере 5 дисков, что позволяет выполнять запись на 10 сторонах.

Одинаково расположенные дорожки на всех сторонах, объединяются в цилиндр (см.рис). Для каждой стороны диска предусмотрена своя дорожка, при этом все головки смонтированы на общем стержне. Головки не могут перемещаться независимо и двигаются только синхронно.

ДОРОЖКИ И СЕКТОРЫ

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

При форматировании диска в начале и конце каждого сектора создаются дополнительные области, для записи их номеров (и прочей служебной инфы), благодаря которой контроллёр идентифицирует начало и конец сектора. Это позволяет отличать неформатированную и форматированную ёмкости диска. После форматирования ёмкость диска уменьшается, т.к. некоторый процент забирает служебная информация. Остальное пространство является пользовательским.

В начале каждого сектора ставится заголовок (префикс), по которому определяется начало и номер сектора, а в конце - заключение (суффикс), в котором находится контрольная сумма (CRC). Помимо указанных областей служебной информации, каждый сектор содержит область данных ёмкостью 512 байт. При низкоуровневом форматировании всем байтам данных присваивается значение F6h.

Утверждать, что размер сектора равен 512 байт, не корректно. На самом деле в каждом секторе 571 байт, 59 из которых занято под сервисные инструкции. (~10%)

ОБРАТНАЯ СВЯЗЬ

Как известно, данные с дисков считываются головками чтения/записи. Головки расположены на раме, которая при позиционировании приводится в движение приводом. Для управления приводом имеется 3 способа построения петли обратной связи:

* со вспомогательным клином
* со встроенным кодом
* со специализированным диском

Они различаются технической реализацией, но предназначены для одной и той же цели: обеспечивать постоянную корректировку головок и их позиционирование на соответствующий цилиндр. При всех способах для её работы необходима специальная информация (сервокоды), которая записывается на диск при его изготовлении.

Запись сервокодов выполняется на спец-устройстве - "серворайдере". Для точной установки головок в таких устройствах используется лазерный прицел, а расстояния определяются с точностью до долей волны лазерного излучения. Сервокоды записываются на диск производителем и не изменяются в течение всего срока его эксплуатации.

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

Недостаток данной системы состоит в том, что считывание происходит только один раз при каждом обороте диска. Это означает, что для коррекции положения головок, диск должен совершить несколько оборотов. Сейчас не используется.

Метод со встроенным кодом - улучшенный вариант системы "клин". В данном случае сервокоды пишутся не только в начале каждого цилиндра, но и перед началом каждого сектора. Это означает, что сигналы обратной связи поступают на схему привода головок несколько раз в течение каждого оборота диска, и головки устанавливаются в нужное положение намного быстрее.

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

Система со встроенным сервокодом более эффективна чем "клин", т.к. сервокоды считывается несколько раз за каждый оборот диска! Очевидно, что ещё более эффективной должна быть система, при которой цепь обратной связи работает непрерывно, т.е. сервокоды считываются постоянно.

Такой метод получил название система со специализированным диском. При реализации данного способа сервокоды записываются вдоль всей дорожки, а не один раз вначале сектора. Естественно, что если так поступить со всеми дорожками накопителя, то в нём не останется места для данных, поэтому одна сторона одного из дисков выделяется исключительно для записи сервокодов и данные здесь не хранятся.

При сборке накопителей со специализированным диском одна из сторон определенного диска изымается из операций чтения/записи. Обслуживающая эту сторону диска сервоголовка работает только на чтение, тем-самым предотвращая потерю серво-данных. На рисунке схема сервоголовки:

Практически во всех накопителях большой ёмкости используется описанный способ записи сервокодов, благодаря которому их считывание происходит постоянно, независимо от положения головок. Это позволяет добиться максимальной точности позиционирования головок.

СЛУЖЕБНАЯ ИНФОРМАЦИЯ

Служебная информация необходима для функционирования схем самого накопителя, и как правило, скрыта от пользователя. Её можно разделить на 6 частей:

1. Сервисная инфа необходима для работы сервосистемы привода головок и для стабилизации скорости вращения шпиндельного двигателя;

2. Рабочие программы (микрокод) - необходимый набор программ для работы электроники ЖД. К ним относятся программы управления позиционирования, обмена данными с контроллёром и буферным ОЗУ, первоначальной диагностики и т.д. В некоторых моделях часть программ хранятся на диске, а часть в ПЗУ микропроцессора.

Производители размещают часть программ на дисках не только для экономии места в ПЗУ, но и для возможной её замены, ведь переписать прогу на диске проще, чем прошивать контроллёры.

3. Формат нижнего уровня. Различные типы контроллёров накопителей имеют свой формат, но структура формата остаётся постоянной. В основном различия касаются количества секторов на дорожке, количества байт в поле данных, значения байт контрольно-циклического кода (CRC).

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

5. Паспорт диска содержит инфу о конфигурации и характеристиках накопителя. Паспорт занимает один сектор (256 слов) и располагается в служебной зоне диска. Он предназначен для авто-конфигурирования системы и настройки софта для работы с винтом. Иногда паспорт хранится в ПЗУ, а в служебной зоне хранится только серийник.

6. Таблица сбойных секторов. В современных накопителях имеется избыточность по ёмкости, но она скрыта от пользователя и доступна только контроллёру диска. Часть этого резерва отводится для рабочих программ, паспорта и таблицы дефектных секторов. Остальная часть резервируется для замены сбойных секторов. Заполнение таблицы дефектных секторов производится на заводе-изготовителе после форматирования ЖД, и номера всех выявленных BAD-секторов помещаются в эту таблицу.

Современные ЖД имеют две таблицы дефектов: начальная (Primary "Р-лист") и растущая (Grown "G-лист"). Начальная заполняется на заводе при тестировании, а растущая - в процессе эксплуатации (при появлении bad-секторов) спец-утилитами типа MHDD или Victoria.

ИНТЕРФЕЙСЫ

Интерфейс АТА/IDE

Основной интерфейс, используемый для подключения жёсткого диска - IDE. Фактически, он представляет собой связь между системной платой и контроллёром диска. Этот интерфейс постоянно развивается, и в настоящее время существует несколько его модификаций: SCSI, АТА, Serial ATA. Он является основным интерфейсом запоминающих устройств.

Основная функция контроллёра накопителя (или интерфейса) — передача данных из системы в накопитель, и обратно. От типа интерфейса зависит, с какой скоростью будут осуществляться эти операции. IDE — это интерфейс системного уровня, в котором контроллёр встроен в диск.

Стандартная шина АТА представляет собой 16-разрядный параллельный интерфейс. Это означает, что по интерфейсному кабелю одновременно передается 16 бит данных (разрядов). Новый интерфейс, получивший название Serial ATA, обеспечивает единовременную передачу по кабелю только 1 бита данных, что позволяет уменьшить геометрические размеры кабеля, и обеспечить эффективность работы за счёт повышения частоты передачи информации.

Стандарты АТА

Эволюция интерфейса АТА завершилась на ATA-7, и в дальнейшем найдет свое воплощение в Serial ATA. На данный момент были утверждены стандарты от ATA-1 до 7:

    +-----------+--------+------------------+-----------------------------------+
    | Стандарт  |  UDMA  |  Быстродействие  |    Свойства                       |
    |           |        |     Мбайт/с      |                                   |
    +-----------+--------+------------------+-----------------------------------+
    |  ATA-4    | 0 - 2  |      33.33       | UDMA, 137.4 Гб на уровне BIOS     |
    |  ATA-5    | 0 - 4  |      66.67       | Flaster-UDMA, кабель 80-pin       |
    |  ATA-6    | 0 - 5  |     100.00       | UDMA, 144 Петабайт на уровне BIOS |
    |  ATA-7    | 0 - 6  |     133.00       | UDMA (133 Мб/с)                   |
    +-----------+--------+------------------+-----------------------------------+

Стандарт АТА - 7

АТА-7 отличается от своих собратьев дополнительными возможностями. Одной из основных является новый режим передачи, получивший название UDMA-6, который позволяет передавать данные со скоростью 133 Мбайт/с. Для работы в этом режиме требуется специальный 80-жильный кабель.

Обратите внимание, что благодаря использованию режимов UDMA пропускная способность интерфейса, соединяющего контроллёр диска с системной платой, заметно повысилась. Несмотря на это, большинство накопителей ATA (к примеру DVD-ROM'ы) всё-ещё имеют макс.скорость чтения 60 Мбайт/с, хотя тоже поддерживают UDMA-6.

При выборе накопителя не забывайте о том, что скорость передачи носителей является более важным показателем, чем скорость передачи интерфейса, т.к. представляет собой главный ограничивающий фактор.

Команды интерфейса АТА

Одно из преимуществ интерфейса ATA/IDE — расширенная система команд. Этот интерфейс разрабатывался на базе первых контроллёров WD1003. Он состоит из 8-ми основных команд, и все накопители должны быть совместимы с этой системой. Этим объясняется простота установки IDE-накопителей в компьютеры. Во всех компьютерах поддержка контроллёра "WD1003" встроена в системную BIOS.

Помимо набора команд контроллёра "WD1003", в стандарте ATA предусмотрено множество других команд, позволяющих повысить быстродействие и улучшить параметры жёстких дисков. Эти команды считаются необязательной частью интерфейса, но некоторые из них используются почти во всех современных ЖД, и в значительной степени определяют их возможности в целом.

Наиболее важной является команда идентификации жёсткого диска. По этой команде из ЖД в систему передаётся блок данных размером 512 байт, с подробными сведениями об устройстве. Это позволяет любой программе определить тип подключённого ЖД, изготовителя, номер модели, рабочие параметры и заводской номер изделия. Во многих современных версиях BIOS эта информация запрашивается автоматически, и после её получения параметры ЖД заносятся в CMOS-память.

Некоторые программы позволяют выполнить эту команду и вывести полученную информацию на экран. Для получения наиболее достоверных сведений можно воспользоваться утилитами от производителей.

Одной из таких утилит является "HDAT", который я натравил на свой Samsung-1203N (120 Гб):

                 HDAT2 v4.5.2 (c) 21.07.2012
    *******************************************************************************
    Device Information [SAMSUNG SP1203N]
    *******************************************************************************

    ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Translation    Cylinder     Head     Sector         Total sectors       Size
    ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    ATA 28-bits       16383       16         63             234493056  120.06 GB
        48-bits                                             234493056  120.06 GB
    CHS/Current       16383       16         63              16514064    8.46 GB
    BIOS               1023      254         63              16450560    8.42 GB

    ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    BIOS Data Area for Hard Disk Drive
    ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Hard disk drive (controller) status                 50h = 01010000b
    Hard disk drive error                               00h = 00000000b
    Hard disk drive task complete flag                  FFh = 11111111b

    ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    ATA/ATAPI Identify Device
    ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    ATA mode active                                     UDMA-5/ATA100
    Serial number                                       0807J1FX108888
    Firmware                                            TL100-24
    Cache                                               2048 KB
    Detected an 80-conductor cable                      YES
    
    ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    I/O Port base address                               0170h
    Control Port address                                0376h
    IRQ                                                 15
    Checksum                                            OK [reported 6Dh]
    ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Как видим в первой строке, винт имеет всего 234 493 056 секторов, а мы уже знаем, что один юзерский сектор равен 512 байтам. Перемножив эти два значения, получаем размер диска в байтах (120 060 444 672). Разделив три раза полученные байты на 1024, получаем размер винта в гигабайтах: ~112 Gb. Выходит, что 8 гигов на диске занимает служебная инфа!

Во второй строке указано текущее состояние диска с флагом занятости (50h, FFh). Далее - быстродействие 100мб/с, с серийником и версией прошивки (TL100-24). Последняя строка информирует к какому порту южного моста подключён диск (0170h) и т.д.

С полным списком тех-команд мы ознакомимся позже, ..хотя есть ещё две важные команды — Read Multiple и Write Multiple. Они позволяют осуществлять так называемый многосекторный обмен данными. В сочетании с возможностью пакетного режима ввода/вывода, это позволяет многократно увеличить общую производительность ЖД.

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

Serial ATA

Обмен данными с хостом (южным мостом), ATA осуществляет по плоскому (80-жильному) кабелю со скоростью более 100 Мбайт/с. Такие скоростЯ порождают множество проблем (синхронизация, магн/излучение), решением которых стал новый/последовательный интерфейс Serial ATA. SATA - обратно совместим на программном уровне, т.е. программное обеспечение взаимодействует с новой архитектурой без каких-либо ограничений. Другими словами, существующие BIOS'ы, ОС'и, и утилиты работающие с параллельным ATA, точно также будут работать и с последовательным SATA.

Эффективность SATA - впечатляет! Имеются 3 версии стандарта, в которых используются одинаковые кабели:

    +----------+-------------+--------------+----------------+------------------------+
    |    Тип   | Ширина шины | Частота шины | Данных за такт | Пропускная способность |
    |          |    (бит)    |     (МГц)    |                |        (Мбайт/с)       |
    +----------+-------------+--------------+----------------+------------------------+
    | SATA-150 |      1      |     1500     |        1       |          150           |
    | SATA-300 |      1      |     3000     |        1       |          300           | 
    | SATA-600 |      1      |     6000     |        1       |          600           |
    +----------+-------------+--------------+----------------+------------------------+

Из таблицы видно, что последовательный SATA в момент времени передаёт только 1 бит данных, но сколько таких "моментов" в секунде! В интерфейсе используется узкий 7-жильный кабель, и нет перемычек "Master/Slave", т.к. каждый кабель поддерживает только одно устройство.

Для кодирования/расшифровки передаваемых по кабелю данных, SATA использует специальную схему шифрования, получившую название 8B/10B. Эта схема используется во многих высокоскоростных стандартах передачи данных, включая Gigabit Ethernet, Fibre Channel, FireWire и др.

Особенностью этой схемы является то, что в ней используется "дифференцированный метод", т.е. применяется пара проводов, по каждому из которых подаётся напряжение, равное ±0,25v. Сигналы посылаются дифференцированно: если по одному проводу пары передаётся напряжение +0,25v, то по другому –0,25v. Таким образом, разность напряжений постоянно составляет 0,5v, и форма передаваемого сигнала всегда находится в противофазе. Дифференцированная передача минимизирует электромагнитную индукцию и позволяет упростить чтение сигналов на приёмном конце.


Ремонт жёстких дисков
В начале темы я обозвал жёсткий диск "Вершиной научных достижений!", и не с проста. Только столкнувшись с ремонтом понимаеш, как здесь всё (на первый взгляд) запутано, и в тоже время оригинально! Попробую в кратце описать ситуацию..

В момент подключения питания, процессор ЖД тестирует электронику и только после этого даёт команду на включение шпиндельного двигателя, который раскручивает блины. После того, как номинальная скорость достигнута, головки выводятся из парковочной зоны, где находятся всё нерабочее время. Начинается поиск сервометок для более точной стабилизации скорости вращения, после чего происходит считывание микрокода и прочей служебной информации.

На последнем этапе инициализации выполняется тестирование системы позиционирования. В процессе тестирования происходит перебор определенной последовательности дорожек, и если тест проходит успешно, жёсткий диск готов к работе!

Микропрограмма жёсткого диска (Firmware)

Микропрограмма контроллера (firmware) частично хранится во флэш, частично — на самих магнитных дисках. После того, как на ЖД подано рабочее напряжение, микропроцессор запускает программу, записанную в микросхеме. Выполняется самодиагностика внутренней шины жёсткого диска, и если отсутствует аварийная ситуация, запускается двигатель. По завершению считывания микропрограммы и её выполнения, жёсткий диск готов принимать сигналы от внешнего интерфейса компьютера.

Надежность дисков зависит от внутреннего программного обеспечения (его качества), выполняющегося на микропроцессоре накопителя. Большинство моделей позволяют пользователям обновить свой микрокод. Однако нужды в этом нет, т.к. серьезных ошибок, которые способны нарушить нормальную работу жёсткого, в микропрограммах попросту не может быть! А вот сбой в процессе обновления, очень даже может привести к выходу накопителя из строя.

Технология SMART

Раньше, контроль качества поверхности ЖД выполняла ОС. Если она обнаруживала дефектный сектор, то сразу отмечала весь кластер (несколько секторов) как непригодный, и больше его в работе не использовала. После появления технологии SMART эту работу стали выполнять производители дисков.

SMART функционирует следующим образом. В процессе эксплуатации диска магнитная поверхность может размагничиваться. К таким же последствиям приводит и механическое повреждение. Если был обнаружен новый сбойный сектор, электроника диска отмечает его в "SMART" и подменяет в трансляторе непосредственное физическое расположение сектора на новое, из резерва. Логический адрес, по которому система обращается за данными, останется прежним.

Этот метод устранения дефектов имеет два названия: «метод замещения» (ReAssign) и «перестройка карты секторов» (ReMap).

Главной причиной возникновения сбойных секторов является перегрев накопителя во время работы и механическое повреждение. Поверхность пластин может быть повреждена мельчайшими частичками, которые проникли в гермоблок или же образовались при контакте магнитных головок с поверхностью дисков.

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

SMART позволяет обнаруживать и исправлять дефекты магнитной поверхности до того, как информация окончательно станет нечитабельной. Данные перемещаются в более надёжное место на диске, а также производится повторное намагничивание поверхности диска идентичной информацией.

Проверка атрибутов SMART может автоматически проходить одни раз в минуту. Такая периодическая проверка позволяет вовремя сделать резервную копию важной информации.

Порты ввода/вывода

Обмен между HOST (южный мост) и ЖД осуществляется через 10 программно-доступных регистров ввода/вывода, для адресации к которым выделена область с адресами 1F0h-1F7h, 3F6h-3F7h. Доступные регистры HDD представлены в таблице:

    +-------+------------------------------+-----------------------------+
    | Адрес |          Чтение              |        Запись               |
    +-------+------------------------------+-----------------------------+
    |  1F0  | Регистр данных               | Регистр данных              |
    |  1F1  | Регистр ошибок               | Регистр предкомпенсации     |
    |  1F2  | Регистр счётчика секторов    | Регистр счётчика секторов   |
    |  1F3  | Регистр номера сектора       | Регистр номера сектора      |
    |  1F4  | Регистр номера цилиндра мл.  | Регистр номера цилиндра мл. |
    |  1F5  | Регистр номера цилиндра ст.  | Регистр номера цилиндра ст. |
    |  1F6  | Регистр накопителя/головки   | Регистр накопителя/головки  |
    |  1F7  | Регистр состояния            | Регистр команд              |
    |  3F6  | Регистр альтернат. состояния | Состояние накопителя        | 
    |  3F7  | Регистр адреса накопителя    | Не используется             |
    +-------+------------------------------+-----------------------------+

Стандартный IDE контроллер, применяемый в PC, поддерживает 2 канала, на каждом из которых может быть 2 устройства АТА (Master/Slave). Каждый канал имеет собственную часть пространства ввода-вывода. Для первого канала - 1F0h/1F7h (master), для второго - 170h/177h (slave). Контроллёром используется еще пара портов 3F6h-3F7h для первого канала и 376h-377h для его (со)брата.

Порт 1F0h(170h) является единственным 16-битным портом контроллёра, из него читаются и в него пишутся данные при работе с винтом. Остальные порты 8-битные.

Порт ошибок (1F1h) содержит коды ошибок после выполнения команды (все нули означают "Всё ОК").
Регистр 1F2h выступает в роли счетчика секторов.
Регистры 1F3h-1F6h хранят адрес.
1F7h - регистр состояния (флаговый). Он имеет следующий формат:

    +-----+------+----+-----+-----+------+-----+-----+
    |  7  |  6   |  5 |  4  |  3  |  2   |  1  |  0  | 
    +-----+------+----+-----+-----+------+-----+-----+
    | BSY | DRDY | DF | DSC | DRQ | CORR | IDX | ERR | 
    +-----+------+----+-----+-----+------+-----+-----+

    * BSY- устройство занято выполнением команды.
    * DRDY - устройство готово к приему команды.
    * DF - устройство неисправно.
    * DSC - поиск завершен.
    * DRQ - устройство готово к обмену данными.
    * CORR - была ошибка, но данные были скорректированы.
    * IDX - игнорируем.
    * ERR - ошибки в процессе выполнения команды (какие - указывает 1F1h).

Сразу оговорюсь, что мы будем реально использовать только биты BSY, DRDY и DRQ. Если с винчестером все в порядке, то остальные биты нам не пригодятся.

Наконец, порт 3F6h - в нем используются только биты 1 и 2.

* 1 - прерывания от устройства запрещены, 0 - разрешены.
* 2 - программный сброс всех подключенных к каналу устройств (при установке в 1).

Описание команд ЖД

Команды пользователя записываются в регистр команд 1F7 и выполняются немедленно! Перед записью команды, в регистрах 1F2-1F6 формируется файл задания (TaskFile). Всего команд около 20, мы познакомимся с основными:

    +-------------------------------+---------+
    |            Команда            |   Код   |
    |                               | команды |
    +-------------------------------+---------+
    |  Внутренняя диагностика       |   90h   |
    |  Формат дорожки               |   50h   |
    |  Идентификация ЖД             |   ECh   |
    |  Инициализация параметров     |   91h   |
    |  Stand By                     |   94h   |
    |  Sleep                        |   95h   |
    |  Рекалибровка                 |   10h   |
    |  Чтение буфера                |   E4h   |
    |  Чтение сектора(ов)           |   2Xh   |
    |  Верификация                  |   41h   |
    |  Позиционирование             |   70h   |            
    |  Запись буфера                |   E8h   |
    |  Запись сектора(ов)           |   3Хh   |
    +-------------------------------+---------+

Здесь хотелось-бы напомнить, что имеются два режима обменными данными - PIO и DMA.

DMA - Direct Memory Access, прямой доступ к памяти. «Непрямым» доступом (PIO) называется обмен под управлением процессора. Cуть его в том, что проц забирает у устройства данные, потом помещает их в память, и так в цикле до того, пока устройство не закончит обмен.

Чтобы освободить проц от перекачек данных в память (и обратно) и был придуман DMA (дальше UDMA). Важно понимать, что в системе вроде MS-DOS, где процессор занят только одной задачей, PIO может оказаться быстрее DMA. Последний режим дает выигрыш только в многозадачных системах.

Не трудно догадаться, что режим PIO винтам ни к чему: это-же склад инфы, берутся данные и кидаются прямо в память, а там уже пусть разбирается тот, кто их запросил. ..Но это в среде Windows! При ремонте накопителей - без PIO не обойтись.

Схема терминала
Технологические команды передаются в жёсткий диск по ATA-интерфейсу или через терминал. Почти все винты имеют интегрированный COM-порт, подключившись к которому можно управлять приводом.

Предлагаю спаять устройство-терминал, которое подключается к СОМ-порту компьютера. Это простой буфер между портом компьютера и портом винта (м/с МАХ232). Можно собрать терминал и без буфера, правда в этом случае за целостность СОМ-порта вашего компьютера (или винта) может поручиться только случай:

Схема терминала

                  T
    \ o o o o / [ :::: ] [ :::::::::::::::::::: ]  IDE
                  R

        T
      [ :::: ] [ =====  ============= ]  SATA
        R

Как видно из рисунка, к жёсткому диску идут три провода: Rx, Tx и GND. Точки подключения проводов Rx и Tx для обоих типов винчестеров обозначены на нижнем рисунке (винт лежит контроллёром вверх).

Собственно сам терминал

Спаяли мы устройство, подсоедили его к диску, теперь нужно подать технологическую команду винту. Но как? Для некоторых случаев подойдёт и встроенный-виндовый терминал.

Идём по адресу [Пуск-->Все программы-->Стандартные-->Связь-->HuperTerminal]. Видим окно.. Нам предлагают выбрать страну и код города. Это не принципиальная инфа, так что можно писать всё что угодно. И оставляем тоновый режим. Жмём ОК и видим такое окошко:

Следующим шагом предлагается назначить имя твоему подключению. Опять же, непринципиальная инфа. Далее, выбираем COM-порт, к которому подключено наше устройство/терминал. Жмём ОК...

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

* Скорость – 38400
* Биты данных – 8
* Чётность – Нет
* Стоповые биты – 1
* Управление потоком – Нет

После этого жми «OK», и у тебя появится окошко терминала:

Окно терминала

Нужно отметить, что данный метод не всегда является приемлемым, т.к. работы лучше проводить из-под DOS'a, для чего имеются спец-утилиты.


ПРОБЛЕМЫ ЭКСПЛУАТАЦИИ
Типичные проблемы жёстких дисков

Неисправности ЖД можно разделить на следующие группы:

* неисправность с начальной инициализацией
* неисправность схемы управления шпиндельным двигателем
* неисправность схемы управления позиционированием
* неисправность канала чтения/записи данных
* разрушение служебной информации

Неисправности с начальной инициализацией приводят к полной неработоспособности накопителя. В ЖД с такой неисправностью часто даже шпиндельный двигатель не запускается. Во всех случаях - не формируется код 50h в регистре состояния 1F7.

 +--------------------+--------------------------------------------------------------------------+
 |     Причины        |       Способы устранения                                                 |
 +--------------------+--------------------------------------------------------------------------+
 | Схема сброса       | Проверить питание микроконтроллёра, возбуждение кварцевого резонатора.   |
 | Тактовый генератор | Далее проверяют схему сброса (RESET), для чего замыкают/размыкают 1 и 2  |
 | Микропрограмма     | контакты разъёма (АТА), и осцилографом наблюдают прохождение RESET'a на  |
 | Микроконтроллёр    | процессор и контроллёр диска.                                            |
 |                    |                                                                          |
 |                    | Если на проц приходят тактовые импульсы и есть RESET, то он должен       |
 |                    | отрабатывать управляющую программу, о чём свидетельствуют импульсы на    |
 |                    | выводах ALE, /WR, /RD. При отсутствии таковых, проц подлежит замене!     |
 |                    |                                                                          |
 +--------------------+--------------------------------------------------------------------------+

Неисправность схемы управления шпиндельным двигателем. Критериями запуска двигателя являются:

* питающее напряжение на микросхеме управления
* тактовая частота
* сигнал разрешения на запуск

Если все условия выполняются, а шпиндельный двигатель не запускается, то неисправна либо м/с управления, либо сам двигатель. Контролировать тактовую частоту и сигнал запуска необходимо сразу после включения питания (2-4 сек), т.к. контроллёр отключает питание обмоток, если нет обратного импульса с двигателя.

Неисправность системы позиционирования. При такой неисправности могут появляться как случайные сбои (ошибки чтения), так и полная неработоспособность накопителя из-за того, что ЖД не может прочитать служебную инфу. Для проверки системы позиционирования необходимо выполнить тесты: проверка формата и случайное чтение. Тест формата проверит схему управления позиционированием, а тест случайного чтения - механику позиционирования.

Неисправности каналов чтения/записи. При подобных неисправностях винт лучше сразу нести к специалистам, т.к. в домашних условиях ничего путного не сделаеш! Как правило, это ошибки IDNF, AMNF, UNC, COR.

Разрушение служебной информации. У различных моделей ЖД служебная информация строго индивидуальна! Она может отличаться у одной и той-же модели разных серий. При потере служебной инфы все модели становятся неработоспособными, хотя их электроника и механика исправны. Для надёжности, она продублирова в нескольких местах сервисной зоны накопителя.

Возможные причины:

* Тряска и удары
* Некоректное низкоуровневое форматирование
* Разрушение магнитного слоя диска
* Выход из строя тракта записи (затирание)
* Сбой электропитания и сигнала 'RESET'


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

Включение сервисного режима у разных моделей различно, и происходит либо по команде с терминала, либо при помощи спец/разъёма (все три перемычки). После включения становится доступным набор технологических команд, при помощи которых и осуществляется запись или восстановление служебной информации.

Технологические команды вводятся в окно терминала, которое отображает ответы контроллёра. Для каждого семейства винтов команды могут отличаться, поэтому лучше скачать с сайта производителя техническое описание винта.

Список ниже, содержит технологические команды терминала для семейства SEAGATE Barracuda:

* Z - отключить питание двигателя
* U - подать питание на двигатель
* N1 - очистка SMART
* i4,1,22 - очистка G-листа бэдов

Практикум для начинающих

Рассмотрим на примере случай, когда "пациент" не определяется в биосе. Это может произойти из-за многих причин, список которых может возглавить статический разряд. Нужно винт прошить, но как, если в биосе его не видать? Вот вариант..

После того как собрана схема терминала, подключаем её к компьютеру без винта, и проверяем на работоспособность. Для этого коротим между собой RX и ТХ-контакты на выходе и запускаем терминал. Если схема рабочая, то любой введённый в окне терминала символ будет дублироваться. Это так называемая «проверка на эхо». Если всё в порядке, можно приступать к подключению жёсткого диска.

Внимание! Предварительно нужно выключить компьютер и отключить блок питания от сети, чтобы не подавалось дежурное питание! Я предупредил..

Кстати, АТА/SATA-кабель подключать не нужно, только питание и три проводка от девайса, при этом «земля» идет на корпус, так что, по сути, получается всего два проводка и питание.

Дальнейшие действия – очень просты. После включения компьютера и запуска терминала в его окошке примерно через минуту (иногда меньше, но почти никогда – больше) должна появиться надпись:

LED: 000000CC  FAddr: 0024DE42

..из-за этой ошибки данная неисправность получила название «муха ЦЦ».

Появление этой надписи, на самом деле, очень радует глаз, т.к. обозначает, что винт жив и будет жить дальше! Иногда возникают надписи типа хххххххх, что совсем нехорошо, ведь тогда тебе не удастся восстановить жёсткий диск изложенным ниже способом.

1. Необходимо открутить полностью болтик, который располагается у контактов питания на шпиндель, и немного ослабить два болта по бокам. Дальше потребуется или толстая визитка, или пластиковая карточка, которую следует просунуть под плату, чтобы перекрыть контакты идущие на шпиндель.

Контакта платы электроники с банкой - нет! После этого можно включать компьютер и запускать терминал. Если всё сделано правильно, то шпиндель винта не станет раскручиваться и можно начинать лечение.

2. Зашиваем мозг. В окне терминала красуется надпись, типа

LED: 000000CC  FAddr: 0024DE42.
Больше не должно появляться никаких надписей, и символы, введенные в него, не дублируются. Все подаваемые команды следует набирать большими английскими буквами! Вводим только то, что выделено синим. Для ввода нажимаем [Enter]. Ответы контроллёра выделены чёрным:

CTRL+Z
F3 T>/2
F3 2>Z
Spin Down Complete
Elapsed Time 0.225 msecs
F3 2>
Это означает, что питание на шпиндель больше не подается. Не выключая питания, вынимаем карточку, которую использовали в качестве прокладки между платой и контактами. Подтягиваем ослабленные винты. После выполнения всех этих манипуляций продолжаем набирать команды:

CTRL+Z
F3 T>/2
F3 2>U
Spin Up Complete
Elapsed Time 6.122 msecs
F3 2>
Соответственно, этой командой мы опять подали питание на шпиндель. Вводим команды дальше:

CTRL+Z
F3 T>/1
F3 1>N1
Команда "N1" очищает SMART. После очистки обязательно передёрнуть (вкл/откл) питание. Ждем пока блины остановятся, втыкаем питание обратно и продолжаем вбивать команды:

CTRL+Z
F3 T>i4,1,22
F3 T>m0,2,2,,,,,22
// ..небольшая пауза, затем появляется следующее:
Max Wr Retries = 00, Max Rd Retries = 00,
Max ECC T-Level = 14, Max Certify Rewrite Retries = 00C8

User Partition Format 5% complete, Zone 00, Pass 00, LBA 00004339,
ErrCode 00000080, Elapsed Time 0 mins 05 secs

User Partition Format Successful - Elapsed Time 0 mins 05 secs
F3 T>
***************************************************************

Надписи появляются постепенно, но, как правило, полный цикл более минуты не занимает.
После появления "F3 T>" в терминале - разблокирование жёсткого диска завершено! Можно выходить из терминала, отключать компьютер и подключать АТА/SATA кабель к винчестеру (при полностью выключенном компьютере!).

Разблокировка жёсткого диска не отменяет необходимости его прошивки. Сразу после того как винт начал определяться, следует скормить ему родную прошивку.

Прошивка жёсткого диска

Качаем с сайта производителя ISO-образ с подходящей версией прошивки под твой жёсткий диск. Далее нужно записать этот образ на CD, и перезагрузиться, установив в BIOS’е загрузку с резака.

Обычно образы содержат прошивки под несколько версий жёстких дисков, так что тут нам потребуется ввести букву, которая обозначает версию именно вашего жёсткого диска. Далее прошивальщик сам автоматически прошьёт винт и попросит выключить компьютер.

Так решается одна из самых массовых проблем с жёсткими дисками в последнее время.


Остальные неисправности..

Сбойная прошивка — это лишь часть истории. Как оказалось, встречается еще несколько видов неисправностей.

1. К примеру, винт выдает сообщение:

Error 1009 DETSEC 00006008 
Spin Error 
Elapsed Time 53.959 secs 
R/W Status 2, R/W Error 84150180
При данной ошибке, вероятнее всего, что у вас механические проблемы и терминал тут не поможет. Необходимо вскрывать банку, чего не советую делать в домашних условиях.

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

Самое страшное, что может случиться с накопителем - запилы поверхности. При этом в 99% случаев инфу невозможно восстановить никакими технологиями, и ни за какие деньги.

3. Винт определяется в BIOS, но его объём равен 0. Следовательно, операционная система его не видит. Ситуация аналогична той, что касается неисправной прошивки. Сложность работ может быть выше, ибо при данной неисправности в рабочей зоне HDD могут присутствовать дефекты (бэд-блоки), и копирование данных может занять больше времени (от нескольких часов до нескольких дней).

4. Перепрошивка не устраняет причину неисправности. Причина - низкое качество накопителей, из-за некачественной сборки и дешёвых материалов. Лучше иметь заблокированный винт с исправными головками, чем незаблокированный, но с запилами!

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


Транслятор. Индивидуальные настройки и адаптивы.
Электроника диска - это только скелет. Без управляющих микропрограмм она работать не будет! Микропрограммы организованы в виде модулей и управляются специализированной ОС. Первичный загрузчик находится в ПЗУ микроконтроллёра, а сами программы расположены в служебной зоне диска.

Обычно, часть модулей микропраммы одинакова для всей серии винчестеров. К ней в первую очередь относится совокупность управляющих микропрограмм. Эти модули полностью взаимозаменяемы и один диск свободно может работать с модулем другого.

Вторая часть модулей готовится отдельно для каждой партии. Так, паспорт диска указывает количество головок, физических секторов и цилиндров. В процессе инициализации процессор опрашивает коммутатор и перечисляет головки. Если их количество не совпадает с указанным в паспорте, винчестер не войдёт в готовность.

Зачастую производители отключают некоторые головки из-за дефектов поверхности, неисправностей самых головок и т.п. Как следствие - образуются очень похожие модели-близнецы, но непосредственная перестановка плат невозможна и паспорт приходится корректировать.

Как правило, проблемы создают подобные модули, уникальные для каждого экземпляра винта (в частности, списки дефектов P/G-листы). Если запись в сектор происходит с ошибкой, сбойный сектор переназначается другим сектором из резерва. Специальный модуль, называемый транслятором, переводит физические адреса в номера логических блоков. Программный комплекс РС-3000 автоматически восстанавливает транслятор.

А вот чего ни PC-3000, ни другие комплексы не умеют, так это восстанавливать адаптивы. В промышленных условиях невозможно изготовить два абсолютно одинаковых жёстких диска. В характеристиках аналоговых элементов (катушек, резисторов, конденсаторов) неизбежно возникает разброс, следствием которого становится рассогласование коммутатора/предусилителя.

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

Формат адаптивных настроек меняется от модели к модели. Сюда входят: ток записи, усиление канала, профиль эквалайзера, напряжение смещения для каждой головки, таблица коррекции параметров каждой головки для каждой зоны и т.д. и т.п. Без своих родных адаптивов жёсткий диск просто не будет работать!

Подобрать адаптивы нереально, рассчитать их в "домашних" условиях - тоже. Но ведь как-то же эти адаптивы возникают? Чисто теоретически, для заполнения таблицы адаптивов не нужно ничего, кроме самого винчестера и некоторые модели жестких дисков даже содержат в прошивке специальную программу Self Scan, предназначенную для этих целей. Да, она действительно рассчитывает адаптивы, но... при этом уничтожает всю содержащуюся на жестком диске информацию.

Адаптивы могут храниться как на самом диске в служебной зоне (и тогда смена плат проходит на ура, но не работает Hot Swap), либо в микросхеме FLASH-ROM, которую перед заменой плат следует перепаять. Диски без адаптивов встречаются все реже и реже, можно сказать, что практически вообще не встречаются.

Скрываем дефекты

Как уже говорилось, вход в технологический режим сильно различается не только среди различных производителей HDD, но и среди различных моделей одного производителя. Это может быть загрузка команды, которая сугубо специфична для данной серии HDD, замыкание определенных контактов на технологическом разъеме и даже замыкание некоторых ножек определенной микросхемы. После входа в технологический режим тебе становится доступна вся область HDD. Нулевой цилиндр в стандартном режиме работы – далеко не нулевой в технологическом режиме.

Вернёмся к вопросу скрытия дефектов HDD. Для этих целей в служебной зоне существуют структуры под названием дефект-листы, которые предназначены для хранения местоположения дефектных секторов/дорожек.

Различают два типа дефект-листов: первичный (P-list), и растущий (G-list). P-list заполняется на заводе при тестирования накопителя. С G-list'ами могут работать различные утилиты (типа MHDD), но сектор/дорожка занесённые в G-list, не могут потом быть удалены из него в обычном режиме.

При полном заполнении "G-листа" у накопителя будут видны BAD-сектора. С дефект-листами тесно связано понятие транслятора. Транслятор – это программа, записанная в служебной области HDD, которая на основании данных в дефект-листах производит замещение или пропуск дефектного сектора/дорожки.

Таким образом, для скрытия дефектов необходим следующий цикл:

* установить технологический режим накопителя;
* очистить P-list и G-list;
* стереть транслятор;
* выполнить низкоуровневое форматирование (код – 50h);
* заполнить P-list;
* на основании P-list восстановить транслятор;
* выйти из технологического режима.

То есть, когда у тебя заполнится G-list, и на харде появятся BAD’ы, для скрытия дефектов придется очистить P-list и G-list, и стереть транслятор, чтобы не было пропусков/перенаправлений. Дальше нужно протестировать HDD, и на основании теста заполнить P-list и восстановить транслятор.

В результате у тебя «девственная» поверхность HDD и чистый G-list. Также это самый лучший способ борьбы с софт-бэдами. Транслятор у каждой модели – свой, и чтобы выяснить, как он выглядит и как его восстанавливать, нужно разобрать «служебку» харда. Как видишь, задача, в принципе, выполнимая, но не самая простая.


© Права защишены 2010-2014г.
rumit-71@mail.ru