Первые жёсткие диски, как известно обитателям этого форума, обходились вовсе без микроконтроллеров, только хард-логикой и аналоговыми схемами. Позже на платах появился микроконтроллер - первоначально только для управления позиционером и отработки старта-остановки, к обмену данными он отношения не имел. И только с введением интерфейса IDE микроконтроллер стал неотъемлемой частью жёсткого диска. Поначалу в его ведении была только обработка команд протокола ATA и позиционирование, позже к ним добавились буферизованный поиск и оптимизация перемещения коромысла, стратегия кэширования, логи SMART, трансляция и переназначение секторов и многие другие функции, для управления позиционером и всей сервосистемой появился отдельный сопроцессор, а для сепарации данных - DSP. Соответственно с этим вырастал и объём требуемых для его работы данных - у первых винчестеров почти всё умещалось в ПЗУ, у новейших в нём только начальный загрузчик. Все вместе эти данные, как исполняемый код, так и всевозможные таблицы, образуют служебную информацию ("служебку"). Хранится она на поверхности жёсткого диска, на специально выделенных для этого цилиндрах (у некоторых моделях - на внешних, где плотность записи ниже, с отрицательными номерами, у других - в середине диска, в специально выделенной служебной зоне с пониженной плотностью), обычно имеет основную копию только по одной (нулевой, самой нижней) голове (называемой служебной - в принципе, модифицировав микропрограмму, можно назначить служебной любую другую), по соседней голове хранится резервная копия. Служебка
недоступна пользователю. Для доступа к служебной информации по интерфейсу необходимо ввести в регистры накопителя т.н.
технологический ключ, или
Super-On. Откуда его узнают? Реверс-инженеринг прошивок накопителей из пакетов обновлений прошивки, фирменных служебных утилит, утечки с заводов-производителей (обычно через китайцев).
Служебная информация хранится не скопом, она разбита на
модули, образуя что-то вроде файловой системы. Формат модулей и разбивка на них индивидуальны у каждого производителя, но можно выделить некоторые общие черты и элементы. Модуль обычно имеет ID в виде одного-двух байт, иногда - имя в виде текстовой аббревиатуры. ID, имя и версия обычно присутствуют в начале тела модуля, в конце - обычно есть контрольная сумма. Модули как правило адресуются смещением в секторах относительно начала служебной зоны, либо доступны только командами "прочитать модуль/записать модуль" по ID. Большинство критичных модулей хранится в нескольких копиях. ПЗУ также может быть организовано по модульному принципу. Модули, которые обычно так или иначе есть у всех накопителей:
1) Каталог модулей. Находится по фиксированному смещению либо его адрес хранится в ПЗУ.
Критичен для работы накопителя, может быть как уникальным в пределах версии сикропрограммы, так и нет.
2) Подгружаемые модули микропрограммы.
Критичны для работы накопителя, уникальны для каждой версии микропрограммы.
3) Модули селфскана (исполняемый код и таблицы параметров тестов). Не критичны для работы накопителя, нужны для запуска селфскана ( о нём ниже). Есть не у всех моделей.
4) Дефект-листы. С ростом ёмкости жёстких дисков скрытие дефектов на уровне файловой системы стало большой проблемой, и жёсткие диски обзавелись собственными механизмами сокрытия дефектных секторов и замещения их резервными. Дефект-листы, очевидно, индивидуальны для каждого накопителя. Обычно есть следующие дефект-листы:
- P-List (primary - первичный), или в терминологии Seagate Slip-List - в него заносятся бэды, найденные при селфскане на заводе. Эти сектора будут пропущены в трансляторе и не влияют на скорость чтения.
- G-List (grown - растущий), или в терминологии Seagate Alt-List - в него заносятся бэды, найденные в процессе эксплуатации накопителя. Адрес этого сектора при ремапе заменяется в трансляторе на адрес сектора из резерва, обращение к такому сектору вызывает перемещение головки в резервную область, что снижает скорость.
Подробнее о скрытии дефектных секторов будет рассказано ниже. Эти два или более листа
критичны для данных, но если они не важны - могут быть пересозданы в ходе ручного сканирования или автоматического селфскана.
- Дефект-лист серворазметки. Исключает сразу целые треки или их части. Создается при селфскане,
критичен.
- Дефект-лист служебной зоны. Может отсутствовать, тогда служебная зона обязана не содержать дефектов.
5) Модули и логи SMART. Обычно не критичны и могут быть пересозданы самим накопителем.
6) Паспорт диска. Умеренно критичен для работы, одинаков для всех дисков этой модели.
7) Транслятор. Обычно их два - для CHS и для LBA адресации. Устанавливает соответствие логического адреса физическому.
Критичен для данных, может быть пересоздан самим накопителем на базе дефект-листов.
8) Внутренние логи микропрограммы. Не критичны.
9) Адаптивы - настройки тракта чтения-записи и сервосистемы. Делятся на пользовательские (User Area) и служебные (System Area).
Критичны, индивидуальны для каждого накопителя, создаются в ходе селфскана. Адаптивы служебной области могут храниться в ПЗУ, что делает платы невзаимозаменяемыми.
10) ATA пароль. Если переписать его пустым, винт будет распаролен.
11) Страницы конфигурации накопителя.
Подробнее о структуре служебки отдельных накопителей можно почитать в документации на PC3000/HRT
Исполняемый код и данные для него, которые во время нормальной работы находятся в ОЗУ, образует т.н.
лоадер, который можно загрузить в накопитель по интерфейсу для его инициализации без считывания с блинов. Лоадер можно определённым образом сшить самому из считанных с диска модулей. Загружается он практически у всех винтов стандартной ATA командой Download Microcode (92h), так же как и обновление микропрограммы.
Совокупность считанных с диска технологическими утилитами модулей, служебных треков, дампов ПЗУ и прочая и прочая, что потребно для программного ремонта, называется на сленге
ресурсами. По этому слову и гуглится. Пожалуй, крупнейший каталог ресурсов HDD -
http://files.hddguru.com/index.php