Управление головкой жесткого диска

Обновлено: 07.07.2024

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

WARNING

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

Электроника HDD

Конструкция винчестера в какой-то степени наверняка известна каждому. По сути, это несколько пластин, которые вращаются со скоростью 15 000 об/мин, устройство позиционирования и блок управляющей электроники. Добавим к этому систему самоконтроля S.M.A.R.T. и другие интеллектуальные атрибуты. Короче, без пол-литра не разберешься, тем более технология отдельных элементов составляет коммерческую тайну.

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

Рис. 1. Плата жесткого диска

Рис. 1. Плата жесткого диска

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

Пациент

Итак, перед нами плата типичного жесткого диска Western Digital WD5000AAKX объемом в 500 Гб (рис. 1). Что мы имеем:

  1. Микросхема DRAM. Интереса как такового не представляет, мануал легко можно найти в Сети. Память этих чипов колеблется от 8 до 64 Мб и соответствуют размеру кеша жесткого диска.
  2. Контроллер двигателя шпинделя. Отвечает за управление механикой, регулирует мощность и имеет некоторые аналоговые/цифровые каналы. На чип Smooth L7251 3.1 мануалы отсутствуют, но можно попробовать поискать похожие микросхемы.
  3. Флеш-память. На некоторых винчестерах микросхема отсутствует, но флеш-память бывает встроена в чип контроллера диска. Обычно имеет размер в пределах от 64 до 256 Кб. Используется для хранения программы, от которой загружается контроллер жесткого диска.
  4. И самая любопытная для нас вещь — контроллер жесткого диска. Их производят компании Marvell, ST, LSI и другие. Некоторые компании, производящие винчестеры, делают свои собственные контроллеры, как, например, Samsung и Western Digital.

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

Копнем глубже

Наш зарубежный коллега Джероен «Sprite_tm» Домбург нашел интересный выход из данной ситуации — для исследования контроллера он использовал интерфейс JTAG (от англ. Joint Test Action Group). Этот интерфейс предназначен для тестирования и отладки печатных плат. То есть с помощью JTAG мы можем спокойно подключиться к интересующему нас устройству, поддерживающему стандарт IEEE 1149. В микросхему интегрируется порт тестирования (TAP — Test Access Port), состоящий из четырех или пяти выводов: TDI, TDO, TMS, TCK и, возможно, TRST. Расположение этих выводов для контроллера Marvell нашел некий dex, любезно поделившийся результатами на форуме HDDGURU.

Джероен выяснил, что у контроллеров Western Digital есть ARM-ядро, доступное через JTAG-порт. А также последовательный порт, который обычно не используется, но может быть полезен для наших целей.

Для исследования контроллера жесткого диска использовалась плата FT2232H, которую можно заказать в интернете за 30 евро. Она поддерживает JTAG, связь через последовательный порт, а также SPI. Для работы с ней использовалась программа OpenOCD.

В результате оказалось, что у микросхемы есть целых три ядра. Два Feroceon, которые являются довольно сильными ARM9-подобными ядрами, и Cortex-M3, которое немного слабее. У всех ядер разное предназначение:

  • Feroceon 1 обрабатывает физические чтение/запись на жесткий диск;
  • Feroceon 2 -обрабатывает SATA-интерфейс, кеш и преобразует LBA в CHS;
  • Cortex-M3 — предназначение неизвестно. Можно просто остановить его, но жесткий диск будет продолжать работать.

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

Для доступа к ядру можно использовать режим DMA (Direct Memory Access). Это такой режим, когда обмен данных происходит непосредственно с головки считывания в память, без активного участия процессора. То же самое относится и к SATA-порту: процессору нужно только указать, где данные, и логика DMA позаботится о чтении информации непосредственно из памяти.

Источником информации в этом случае послужит кеш-память винчестера из-за ее хорошего расположения: данные, считанные с диска, будут в кеше, так что их можно будет сразу оттуда скопировать.

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

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

В результате своего исследования Джероен создал инструмент fwtool, который может сбрасывать различные блоки во флеше и переводить код в текстовый файл. Затем можно изменить, удалить или добавить блок и вновь собрать все в одном файле прошивки, который потом спокойно загрузить во флеш.

Меняем прошивку

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

У компании Western Digital есть специальные программные утилиты для работы с жестким диском — это инструменты, работающие под DOS, которые могут загрузить новую прошивку контроллера, микросхемы флеш-памяти или сервисного раздела. Инструменты используют так называемые Vendor Specific Commands (VSC), впрочем, об этом чуть позже.

Также есть набор инструментов под названием idle3-tools, которые можно взять на вооружение для модификации прошивки жесткого диска. Он также использует VSC, применяя Linux SCSI PassThrough IOCTLs. Джероен взял этот код, изменил его и интегрировал в fwtool. После этой модификации fwtool научился читать и писать на микросхему флеш-памяти.

Теперь если хакер каким-то образом сможет воспользоваться fwtool на удаленной машине, то получит возможность сбросить флеш-память диска, изменить ее и «зашить» обратно. Правда, в конце концов владелец узнает о взломе и, вероятно, переустановит систему, но злоумышленник может внедрить что-нибудь, что проявит себя и после переустановки. Например, подождать, пока машина зачитывает из файла /etc/shadow/ , где хранятся все пароли в системах UNIX/Linux, и изменить содержимое. После чего можно будет просто войти под своим паролем.

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

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

Терминальный режим жесткого диска

При работе в терминальном режиме пользователь может взаимодействовать с жестким диском посредством диагностических команд. Этот метод применяется для диагностики и ремонта накопителей Seagate и Toshiba, в Western Digital такая возможность отсутствует из-за сложности подключения. Терминальный режим фактически предоставляет полный root — управление механикой и логикой устройства. С его помощью можно также обновить или перезагрузить прошивку винчестера. Список команд для большинства накопителей можно посмотреть в интернете. А на плате жесткого диска имеется специальный разъем для подключения через последовательный порт.

Рис. 2. Разъем для подключения через последовательный порт. Одной тайной меньше

Рис. 2. Разъем для подключения через последовательный порт. Одной тайной меньше

Для доступа в терминальный режим понадобится устройство-адаптер, необходимое для преобразования уровней сигналов RS-232 в уровни TTL (такие адаптеры имеются в продаже, но можно собрать и самому — все необходимые схемы находятся в свободном доступе, а в качестве основы можно взять некоторые модели Arduino). Мы же возьмем готовый чип FTDI, который преобразует USB в последовательный интерфейс для микроконтроллера Atmega. Нужно соединить GND и RESET, а для подключения использовать контакты RX и TX.

Рис. 3. Arduino Nano в качестве адаптера

Рис. 3. Arduino Nano в качестве адаптера

Для работы с COM-портом используем любую понравившуюся программу — например, PuTTY или Hiperterminal. Выбираем тип подключения, вводим номер COM-порта и другие настройки:

Рис. 4. Окно настроек PuTTY

Рис. 4. Окно настроек PuTTY

Для проверки работоспособности схемы нужно замкнуть RX и TX между собой. В результате все набираемые символы отобразятся в двойном количестве. Это происходит из-за того, что введенные данные будут передаваться по линии TX, а затем они же вернутся по линии RX. Делается это так: отключив SATA-кабель, соединяем выход TX диска с входом RX адаптера, и наоборот — RX адаптера с TX диска. Подключаем питание. После нажатия клавиш <Ctrl + Z> , получаем приглашение Т> (или F> для неисправных HDD) и вводим команды. Для получения списка команд вводим /C , а затем Q.

Из-за большого количества команд инженеры Seagate разделили их структуру на уровни. Такие команды, как чтение, запись, поиск, лог ошибок, доступны сразу на нескольких различных уровнях. Чтобы переключить жесткий диск для работы на другом уровне, надо воспользоваться командой /x .

Рис. 5. Обнуление S.M.A.R.T.

Рис. 5. Обнуление S.M.A.R.T.

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

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

Запись информации в сервисные разделы HDD

В любом жестком диске присутствуют сервисные разделы. Они предназначены для хранения служебных программ винчестера, таких как S.M.A.R.T., модули раннего обнаружения ошибок, модули самодиагностики и так далее. К счастью, все эти данные не занимают выделенное место полностью, а значит, при правильном подходе мы можем использовать это бонусное пространство. Сервисные разделы не следует путать с DCO или HPA, которые могут быть легко обнаружены и доступны через стандартные ATA-команды.

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

Для доступа к информации из сервисных разделов не подойдут стандартные ATA-команды, вместо этого для записи и чтения используются специальные команды VSC (Vendor Specific Commands). Как правило, производители держат в секрете эти команды, но порой выпускают утилиты для работы с сервисными разделами — например, программа wdidle3.exe от компании Western Digital и ее опенсорсный аналог idle3-tools. Еще один пример для WD — программа HDDHackr, меняющая записи в системных разделах HD.

WARNING

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

Объем сервисного раздела зависит от модели винчестера. Например, в диске WD2500KS-00MJB0 семейства Hawk объемом 250 Гб (прошивка 02AEC) в сервисный раздел записывается две копии файлов, около 6 Мб каждая. Размер зоны на каждой поверхности составляет около 23 Mб (64 трека по 720 секторов на каждом). Поскольку этот диск имеет шесть поверхностей (головки от 0 до 5), модули сервисных разделов располагаются на месте, сопоставленном с головками 0 и 1, а место, закрепленное за головками со 2 по 5, зарезервировано, но не используется. Таким образом, зарезервированный раздел занимает около 141 Мб, из которых 12 Мб находится в использовании.

Для сравнения: модель WD10EACS-00ZJB0, емкостью в терабайт и с восемью поверхностями, имеет зарезервированное пространство 450 Мб, из которых занято 52 Мб. Ариэль Беркман (Ariel Berkman) из компании Recover Information Technologies LTD написал статью о работе с сервисными отделами HDD, а также выложил PoC-код для записи 94 Мб информации в сервисный отдел диска Western Digital 250GB Hawk. Делается это следующим образом:

  • Узнаем свой SATA IO адрес, используя lspci -v .
  • Для компиляции используем команду gcc -Wall -O -g -o SA-cover-poc SA-cover-poc.c .
  • Создаем рандомный файл (94 Мб в размере) и вычисляем его MD5-хеш.
  • Записываем файл в сервисный раздел.
  • Очищаем винчестер с помощью команды dd-ing /dev/zero , которую следует распространить на весь жесткий диск (или на отдельную часть, предварительно заблокировав доступ к остальному). Достаточно один раз прогнать этот код, чтобы уничтожить данные безвозвратно.
  • Читаем содержимое сервисного раздела, вычисляем его хеш и убеждаемся в целостности данных.

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

Программы для восстановления HDD

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

  1. TestDisk — самая простая и эффективная программа для восстановления HDD. Предназначена для поиска и реконструкции потерянных разделов, загрузочного сектора, удаленных файлов; исправляет таблицу разделов. Работает с большим количеством файловых систем. Работает в консольном режиме, чем достигается высокая скорость.
  2. Acronis Disk Director — целый программный пакет, в который включено немалое количество инструментов для работы с HDD. Содержит в себе утилиту Acronis Recovery Expert, которая служит для реконструкции файлов и разделов. В отличие от предыдущей программы имеет графический интерфейс, но работает с меньшим количеством файловых систем.
  3. Paragon Partition Manager — бесплатная программа от отечественных разработчиков, умеет почти все то же самое, что и Acronis, но ужасно медленная.

Рис. 6. Восстанавливаем поврежденные разделы с помощью TestDisk

Рис. 6. Восстанавливаем поврежденные разделы с помощью TestDisk

Заключение

Однако настало время закругляться. В этой статье я попытался показать неизведанные уголки и возможности жесткого диска. Не углубляясь в код, мы рассмотрели способ слива информации с накопителя. Если даже слегка приподнять этот занавес, открывается огромное поле для полета фантазии. Можно, например, перепрошить контроллер, чтобы скрыть от посторонних глаз особо важный раздел. Или портить данные при попытке клонировать жесткий диск, обезопасив себя таким образом от криминалистических утилит. Одним словом, вариантов много, так что каким образом использовать жесткий диск — выбор за тобой.

image

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

Итак, давайте погрузимся в изучении анатомии устройств, которые мы сегодня используем для хранения миллиардов битов данных.

You spin me right round, baby

Механический накопитель на жёстких дисках (hard disk drive, HDD) был стандартом систем хранения для компьютеров по всему миру в течение более 30 лет, но лежащие в его основе технологии намного старше.

Первый коммерческий HDD компания IBM выпустила в 1956 году, его ёмкость составляла аж 3,75 МБ. И в целом, за все эти годы общая структура накопителя не сильно изменилась. В нём по-прежнему есть диски, которые используют для хранения данных намагниченность, и есть устройства для чтения/записи этих данных. Изменился же, и очень сильно, объём данных, который можно на них хранить.

В 1987 году можно было купить HDD на 20 МБ примерно за 350 долларов; сегодня за такие же деньги можно купить 14 ТБ: в 700 000 раз больший объём.

Мы рассмотрим устройство не совсем такого размера, но тоже достойное по современным меркам: 3,5-дюймовый HDD Seagate Barracuda 3 TB, в частности, модель ST3000DM001, печально известную своим высоким процентом сбоев и вызванных этим юридических процессов. Изучаемый нами накопитель уже мёртв, поэтому это будет больше похоже на аутопсию, чем на урок анатомии.



Перевернув накопитель, мы видим печатную плату и несколько разъёмов. Разъём в верхней части платы используется для двигателя, вращающего диски, а нижние три (слева направо) — это контакты под перемычки, позволяющие настраивать накопитель под определённые конфигурации, разъём данных SATA (Serial ATA) и разъём питания SATA.

Serial ATA впервые появился в 2000 году. В настольных компьютерах это стандартная система, используемая для подключения приводов к остальной части компьютера. Спецификация формата претерпела множество ревизий, и сейчас мы пользуемся версией 3.4. Наш труп жёсткого диска имеет более старую версию, но различие заключается только в одном контакте в разъёме питания.

В подключениях передачи данных для приёма и получения данных используется дифференцированный сигнал: контакты A+ и A- используются для передачи инструкций и данных в жёсткий диск, а контакты B — для получения этих сигналов. Подобное использование спаренных проводников значительно снижает влияние на сигнал электрического шума, то есть устройство может работать быстрее.

Если говорить о питании, то мы видим, что в разъёме есть по паре контактов каждого напряжения (+3.3, +5 и +12V); однако большинство из них не используется, потому что HDD не требуется много питания. Эта конкретная модель Seagate при активной нагрузке использует менее 10 Вт. Контакты, помеченные как PC, используются для precharge: эта функция позволяет вытаскивать и подключать жёсткий диск, пока компьютер продолжает работать (это называется горячей заменой (hot swapping)).

Контакт с меткой PWDIS позволяет удалённо перезагружать (remote reset) жёсткий диск, но эта функция поддерживается только с версии SATA 3.3, поэтому в моём диске это просто ещё одна линия питания +3.3V. А последний контакт, помеченный как SSU, просто сообщает компьютеру, поддерживает ли жёсткий диск технологию последовательной раскрутки шпинделей staggered spin up.

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


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

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


Теперь, когда печатная плата снята, давайте посмотрим, что находится внутри. Тут есть четыре основных чипа:

  • LSI B64002: чип основного контроллера, обрабатывающий инструкции, передающий потоки данных внутрь и наружу, корректирующий ошибки и т.п.
  • Samsung K4T51163QJ: 64 МБ DDR2 SDRAM с тактовой частотой 800 МГц, используемые для кэширования данных
  • Smooth MCKXL: управляет двигателем, крутящим диски
  • Winbond 25Q40BWS05: 500 КБ последовательной флеш-памяти, используемой для хранения встроенного ПО накопителя (немного похожего на BIOS компьютера)

Открыть накопитель просто, достаточно открутить несколько болтов Torx и вуаля! Мы внутри…


Учитывая, что он занимает основную часть устройства, наше внимание сразу привлекает большой металлический круг; несложно понять, почему накопители называются дисковыми. Правильно их называть пластинами; они изготавливаются из стекла или алюминия и покрываются несколькими слоями различных материалов. Этот накопитель на 3 ТБ имеет три пластины, то есть на каждой стороне одной пластины должно храниться 500 ГБ.


Изображение довольно пыльное, такие грязные пластины не соответствуют точности проектирования и производства, необходимого для их изготовления. В нашем примере HDD сам алюминиевый диск имеет толщину 0,04 дюйма (1 мм), но отполирован до такой степени, что средняя высота отклонений на поверхности меньше 0,000001 дюйма (примерно 30 нм).

Базовый слой имеет глубину всего 0,0004 дюйма (10 микронов) и состоит из нескольких слоёв материалов, нанесённых на металл. Нанесение выполняется при помощи химического никелирования с последующим вакуумным напылением, подготавливающих диск для основных магнитных материалов, используемых для хранения цифровых данных.

Этот материал обычно является сложным кобальтовым сплавом и составлен из концентрических кругов, каждый из которых примерно 0,00001 дюйма (примерно 250 нм) в ширину и 0,000001 дюйма (25 нм) в глубину. На микроуровне сплавы металлов образуют зёрна, похожие на мыльные пузыри на поверхности воды.

Каждое зерно обладает собственным магнитным полем, но его можно преобразовать в заданном направлении. Группирование таких полей приводит к возникновению битов данных (0 и 1). Если вы хотите подробнее узнать об этой теме, то прочитайте этот документ Йельского университета. Последними покрытиями становятся слой углерода для защиты, а потом полимер для снижения контактного трения. Вместе их толщина составляет не больше 0,0000005 дюйма (12 нм).

Скоро мы увидим, почему пластины должны изготавливаться с такими строгими допусками, но всё-таки удивительно осознавать, что всего за 15 долларов можно стать гордым владельцем устройства, изготовленного с нанометровой точностью!

Однако давайте снова вернёмся к самому HDD и посмотрим, что же в нём есть ещё.


Жёлтым цветом показана металлическая крышка, надёжно крепящая пластину к электродвигателю привода шпинделя — электроприводу, вращающему диски. В этом HDD они вращаются с частотой 7200 rpm (оборотов/мин), но в других моделях могут работать медленнее. Медленные накопители имеют пониженный шум и энергопотребление, но и меньшую скорость, а более быстрые накопители могут достигать скорости 15 000 rpm.

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

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


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

Посмотрите это видео, созданное The Slow Mo Guys, чтобы увидеть, насколько они быстрые:

В конструкции не используется чего-то вроде шагового электродвигателя; для перемещения рычагов по соленоиду в основании рычагов проводится электрический ток.


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

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

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


На самом конце рычагов есть очень чувствительные головки чтения-записи. В нашем HDD содержится 3 пластины и 6 головок, и каждая из них плавает над диском при его вращении. Для этого головки подвешены на сверхтонких полосках металла.

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


Однако мы можем разобрать отдельные части. Серый блок — это специально изготовленная деталь под названием «слайдер»: когда диск вращается под ним, поток воздуха создаёт подъёмную силу, поднимая головку от поверхности. И когда мы говорим «поднимает», то имеем в виду зазор шириной всего 0,0000002 дюйма или меньше 5 нм.

Чуть дальше, и головки не смогут распознавать изменения магнитных полей дорожки; если бы головки лежали на поверхности, то просто поцарапали бы покрытие. Именно поэтому нужно фильтровать воздух внутри корпуса накопителя: пыль и влага на поверхности диска просто сломают головки.

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


На этом изображении другого жёсткого диска устройства чтения и записи находятся под всеми электрическими соединениями. Запись выполняется системой тонкоплёночной индуктивности (thin film induction, TFI), а чтение — туннельным магнеторезистивным устройством (tunneling magnetoresistive device, TMR).

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


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

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

Прежде чем переходить к другому типу накопителей, давайте укажем ориентировочные показатели скорости типичного HDD. Мы использовали бенчмарк CrystalDiskMark для оценки жёсткого диска WD 3.5" 5400 RPM 2 TB:


В первых двух строчках указано количество МБ в секунду при выполнении последовательных (длинный, непрерывный список) и случайных (переходы по всему накопителю) чтения и записи. В следующей строке показано значение IOPS, то есть количество операций ввода-вывода, выполняемых каждую секунду. В последней строке показана средняя задержка (время в микросекундах) между передачей операции чтения или записи и получением значений данных.

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

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

Есть блок головок от HDD, тоесть электромагнит в поле постоянного магнита. Если подать ток на катушку электромагнита в одном направлении - головка отклоняется в одну сторону, если в другом - в другую. В центральном положении у меня её удерживают 2 пружинки.
Есть микроконтроллер, способный генерировать ШИМ сигнал. Нужно с помощью ШИМ управлять головкой - отклонять её в обе стороны на определенный угол, причём быстро (до 50 раз в секунду, а то и больше). Прошивку я напишу, а вот как быть со схемой? Я больше программер, чем электронщик, по этому прошу помощи.

При необходимости можно использовать по 2 канала ШИМ на каждую головку.

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

Из ресурсов есть комп с Porteus для тестов, сама магнитная головка, МК, куча всякой рассыпухи, некоторые основные приборы (мультиметр, осцилограф), большое желание, прямые руки.
Не хватает знаний по электронной части.

_________________
Я код , который гуляет сам по себе.

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

tych: А смысл так мудрить? Проще помоему собрать гальванометр и оптический датчик приделать.

Приглашаем всех желающих 25/11/2021 г. принять участие в вебинаре, посвященном антеннам Molex. Готовые к использованию антенны Molex являются компактными, высокопроизводительными и доступны в различных форм-факторах для всех стандартных антенных протоколов и частот. На вебинаре будет проведен обзор готовых решений и перспектив развития продуктовой линейки. Разработчики смогут получить рекомендации по выбору антенны, работе с документацией и поддержкой, заказу образцов.

Приглашаем 30 ноября всех желающих посетить вебинар о литиевых источниках тока Fanso (EVE). Вы узнаете об особенностях использования литиевых источников питания и о том, как на них влияют режим работы и условия эксплуатации. Мы расскажем, какие параметры важно учитывать при выборе литиевого ХИТ, рассмотрим «подводные камни», с которыми можно столкнуться при неправильном выборе, разберем, как правильно проводить тесты, чтобы убедиться в надежности конечного решения. Вы сможете задать вопросы представителям производителя, которые будут участвовать в вебинаре

Я не хочу ничего усложнять.
От звуковухи оно пректасно работает, и рисует картинки. Без обратной связи, без каких-либо датчиков итд.
Я хочу добиться того-же, только без использования компа, плеера итд.
Собрал схему мостового управления, как в самом HDD, оно вроде работает. Проверю на точность - отпишусь.

_________________
Я код , который гуляет сам по себе.

Всё началось с того, что привезли несколько старых винчестеров (рис.1) и сказали, что здесь рабочие вперемешку с «убитыми», хочешь – выбирай, не хочешь – делай что хочешь. Но если разберёшься, как их использовать в качестве небольшого наждака для правки инструмента, расскажи. Ну, вот – рассказываю…


Первый HDD – «Quantum» семейства «Fireball TM» с микросхемой привода TDA5147AK (рис.2). Посмотрим, что он из себя представляет.


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


Теперь ставим крышку на место для того, чтобы можно было перевернуть HDD для экспериментов с электроникой и подаём в разъём питания напряжения +5 В и +12В. Двигатель разгоняется, работает примерно 30 секунд, а затем останавливается (на печатной плате есть зелёный светодиод – он горит при вращении двигателя и мигает при его остановке).

В сети легко находится даташит на микросхему TDA5147K, но по нему не удалось разобраться с сигналом разрешения/запрета вращения. При «подтягивании» сигналов POR к шинам питания добиться нужной реакции не удалось, но при просмотре сигналов осциллографом выяснилось, что при касании щупом 7-го вывода микросхемы TDA5147АK происходит её сброс и перезапуск двигателя. Таким образом, собрав простейший генератор коротких импульсов (рис.4, нижнее фото) с периодом в несколько секунд (или десятков секунд), можно заставить двигатель вращаться более-менее постоянно. Возникающие паузы в подаче питания длятся около 0,5 секунды и это не критично, если двигатель используется с небольшой нагрузкой на валу, но в других случаях это может быть неприемлемо. Поэтому, способ хоть и действенный, но не совсем правильный. А «правильно» запустить его так и не удалось.


Следующий HDD – «Quantum» семейства «Trailblazer» (рис.5).


При подаче напряжений питания привод никаких признаков жизни не подаёт и на плате электроники начинает сильно греться микросхема 14-107540-03. В середине корпуса микросхемы заметна выпуклость (рис.6), что говорит о её явной неработоспособности. Обидно, но не страшно.


Смотрим микросхему управления вращением двигателя (рис.7) - HA13555. Она при подаче питания не греется и видимых повреждений на ней нет. Прозвонка тестером элементов «обвязки» ничего особенного не выявила – остаётся только разобраться со схемой «включения».


Поисковики даташит на неё не находят, но есть описание на HA13561F. Она выполнена в таком же корпусе, совпадает по ножкам питания и по «выходным» выводам с HA13555 (у последней к проводникам питания двигателя подпаяны диоды – защита от противо-ЭДС). Попробуем определиться с необходимыми выводами управления. Из даташита на HA13561F (рис.8) следует, что на вывод 42 (CLOCK) должна подаваться тактовая частота 5 МГц с уровнем TTL-логики и что сигналом, разрешающим запуск двигателя, является высокий уровень на выводе 44 (SPNENAB).


Так как микросхема 14-107540-03 нерабочая, то отрезаем питание +5 В от неё и от всех остальных микросхем, кроме HA13555 (рис.9). Тестером проверяем правильность «порезов» по отсутствию соединений.


На нижнем фото рисунка 9 красными точками показаны места подпайки напряжения +5 В для HA13555 и резистора «подтяжки к плюсу» её 44 вывода. Если же резистор от вывода 45 снять с родного места (это R105 по рисунку 8) и поставить его вертикально с некоторым наклоном к микросхеме, то дополнительный резистор для подтяжки к «плюсу» вывода 44 можно припаять к переходному отверстию и к висящему выводу первого резистора (рис.10) и тогда питание +5 В можно подавать в место их соединения.


На обратной стороне платы следует перерезать дорожки, как показано на рисунке 11. Это «бывшие» сигналы, приходящие от сгоревшей микросхемы 14-107540-03 и старая «подтяжка» резистора R105.


Организовать подачу «новых» тактовых сигналов на вывод 42 (CLOCK) можно с помощью дополнительного внешнего генератора, собранного на любой подходящей микросхеме. В данном случае была использована К555ЛН1 и получившаяся схема показана на рисунке 12.


После «прокидывания» проводом МГТФ напряжения питания +5 В прямо от разъёма к выводу 36 (Vss) и других требуемых соединений (рис.13), привод запускается и работает безостановочно. Естественно, если бы микросхема 14-107540-03 была исправна, вся доработка заключалась бы только в «перетяжке» 44-го вывода к шине +5 В.


На этом «винте» была проверена его работоспособность при других тактовых частотах. Сигнал подавался с внешнего генератора прямоугольных импульсов и минимальная частота, с которой привод работал устойчиво - 2,4 МГц. На более низких частотах циклично происходил разгон и остановка. Максимальная частота – около 7,6 МГц, при дальнейшем её увеличении количество оборотов оставалось прежним.

Количество оборотов также зависит и от уровня напряжения на выводе 41 (CNTSEL). В даташите на микросхему HA13561F есть таблица и она соответствует значениям, получаемым у HA13555. В результате всех манипуляций удалось получить минимальную скорость вращения двигателя около 1800 об/мин, максимальную – 6864 об/мин. Контроль проводился с помощью программы SpectraPLUS, оптопары с усилителем и кусочка изоленты, приклеенного к диску так, чтобы он при вращении диска перекрывал окно оптопары (в окне анализатора спектра определялась частота следования импульсов и затем умножалась на 60).

Третий привод – «SAMSUNG WN310820A».

При подаче питания микросхема-драйвер – HA13561 начинает сильно греться, двигатель не вращается. На корпусе микросхемы заметна выпуклость (рис.14), как и в предыдущем случае. Проводить какие-либо эксперименты не получится, но можно попробовать запитать двигатель от платы с микросхемой HA13555. Длинные тонкие проводники были подпаяны к шлейфу двигателя и к выходным контактам разъёма платы электроники – всё запустилось и работало без проблем. Если бы HA13561 была целой, доработка для запуска была бы такой же, как и для «Quantum Trailblazer» (44-й вывод к шине +5 В).


Четвёртый привод - «Quantum» семейства «Fireball SE» с микросхемой привода AN8426FBP (рис.15).


Если отключить шлейф блока головок и подать питание на HDD, то двигатель набирает обороты и, естественно, через некоторое время останавливается. Даташит на микросхему AN8426FBP есть в сети и по нему можно разобраться, что за запуск отвечает вывод 44 (SIPWM) (рис.16). И если теперь перерезать дорожку, идущую от микросхемы 14-108417-02 и «подтянуть» вывод 44 через резистор 4,7 кОм к шине +5 В, то двигатель не будет останавливается.


И напоследок, вернувшись немного назад, были сняты формы сигналов на выводах W и V микросхемы HA13555 относительно общего провода (рис. 17).


Самое простое прикладное применение старого HDD – небольшой наждак для правки свёрл, ножей, отвёрток (рис.18). Для этого достаточно наклеить на магнитный диск наждачную бумагу. Если «винт» был с несколькими «блинами», то можно сделать сменные диски разной зернистости. И здесь хорошо бы иметь возможность переключения скорости вращения шпиндельного двигателя, так как при большом количестве оборотов очень легко перегреть затачиваемую поверхность.


Наждак, конечно, не единственное применение для старого HDD. В сети легко находятся конструкции пылесосов и даже аппарата для приготовления сладкой ваты…

В дополнении к тексту находятся упомянутые даташиты и файлы печатных плат внешних генераторов импульсов в формате программы Sprint-Layout 5-ой версии (вид со стороны печати, микросхемы устанавливаются как smd, т.е. без сверловки отверстий).






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

Жесткий диск со снятой крышкой корпуса

В связи с этим устройство жесткого диска можно разбить на три блока.

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

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

Головка жесткого диска

Устройство жесткого диска. Головка жесткого диска.

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

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

Размеры головки жёсткого диска впечатляют. Ширина составляет меньше сотни нанометров, а толщина — около десяти. Головка парит над пластиной, вращающейся со скоростью 15 000 об/мин, на высоте, эквивалентной 40 атомам. Все элементы головки изготавливаются по технологиям, схожим с производством микропроцессоров. То есть головки вырезаются из подложек, на которых они формируются методом фотолитографии и осаждения нужных материалов. Таким образом, производство магнитных головок свойственно только крупным компаниям, т.к. изготовление магнитных головок требует значительных финансовых и интеллектуальных затрат.

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

Читайте также: