В этом уютном блоге уже зашла речь об программных средствах восстановления информации и начата скромная попытка написать программный код и выложить на всеобщее обозрение на GitHub. Однако, есть еще и аппаратная сторона вопроса. Хотелось бы рассмотреть историю использования микроконтроллеров для управления системами хранения данных, изучить их особенности, внутреннее устройство. Начнем столь масштабную тему с отладки устройств, в частности жёстких дисков.
Тестирование правильности работы аппаратных средств имеет свою специфику по сравнению с тестированием программ для персонального компьютера. Существует несколько способов отладки жёстких дисков, например, через JTAG и последовательный порт, а также при помощи цифрового анализатора на специальных ножках контроллера. Иначе этот метод еще называют аппаратная трассировка реального времени (Real-Time Hardware Tracing). Первые два способа достаточно хорошо описаны, а вот третий мало известен.
Итак, аппаратная трассировка. Преимущество этого способа состоит в том, что диаграмму работы системы можно наблюдать в реальном времени и, для того, чтобы «посмотреть», что в том или ином месте происходит, вовсе не нужно замедлять устройство. Другой плюс — особенности работы системы можно понять и без исходного кода. Достаточно иметь карту, показывающую по какому адресу какое событие или переменная отображаются. Однако, аппаратная трассировка требует довольно большого количества ножек микроконтроллера. Если внимательно посмотреть, то абсолютно все жесткие диски имеют отладочные разъемы под цифровой анализатор сигналов. Ниже представлены фотографии диска «из магазина» и диска «из лаборатории».
В старых дисках интерфейс передачи отладочной информации был параллельным. В современных дисках он последовательный, что значительно сокращает количество выводов не относящихся к основному назначению устройства.
Аппаратная трассировка становятся жизненно необходимой в системах со сложной механикой, которой не скажешь: «Остановись перемещение головки! Нужно подозрительную процедуру по шагам пройти, чаю попить и новости в этих ваших интернетах почитать». USB флэшки и SSD обычно не имеют аппаратной трассировки.
Рассмотрим пример аппаратной трассировки реализованной в старых дисках Maxtor. Ниже приведен пример участка кода, где инструкция процессора «out» (подсвечена желтым) передает на шину анализатора адрес 0x5004 и значение переменной Servo_error.
Когда-то автор, в стремлении спасения рыцарей-героев королевства «Maxtor», дизассемблировал программу их управления. Основные функции технологического режима, необходимые для оживления падших, удалось получить и без собственной реализации аппаратной трассировки для этого диска (привет, Франкенштейн!). Возможно, в будущих статьях этого цикла читатель сможет ознакомится с подключением к линиям аппаратной трассировки этого диска и пронаблюдать весь процесс «в живую» не гик развлечения ради, а обучения для.
Автор выражает благодарность СЦ ОЛИМП-СЕРВИС за помощь в изготовлении фотографий данного поста.
До новых встреч в аппаратной!