В этой серии при помощи дизассемблера IDA Pro и плагина процессора i80C196NU находим заводскую технологическую команду перезагрузки диска и тестируем ее работу при помощи PC-3000 в режиме ATA commander. Предыдущий пост серии.
В предыдущих частях мы начали дизассемблирование на основе только документации к процессору. Однако, хорошо бы посмотреть как программа управления связана с остальной аппаратурой. Для этого вооружимся тестером с пищалкой, платой WD21000, документацией на микросхемы и начнем рисовать схему электрических соединений. Так как в данном исследовании мне хотелось бы по максимуму использовать операционную систему Linux, то рисовать схему будем в KiCad…. Read more »
Обмен данными с жестким диском производится через интерфейс IDE, SATA (или какой-либо другой) при помощи стандартизированных команд. Чтобы прочитать данные с диска достаточно использовать всего две команды: идентификации и, собственно, чтения. Первая нужна для получения размера диска и определения типа команды чтения, которая будет работать со всей поверхностью диска. Если помните, то за историю своего существования жесткие диски преодолевали целый… Read more »
Итак, приступим к самому магическому действу, а именно, исследованию прошивки нашего подопытного накопителя. Для этого будем использовать IDA disassembler. Запускаем сей продукт, выбираем «открыть файл» и указываем файл считанный из ПЗУ(см. часть 3 данного опуса). Далее появляется вот такое окно: Изменяем тип процессора на «Intel 80196NP». Хотя на нашей плате стоит версия NU, однако, с точки зрения разбора кода программы… Read more »
Перед тем как переходить к детальному разбору конструкции и программы управления жесткого диска WD AC21000 добавим к проекту всю имеющуюся документацию на микросхемы. Файлы загружены на GitHub: https://github.com/rlabru/WD21000/tree/master/doc Файлы имеющие префикс «t_» — это попытки перевести документацию на русский язык.
В прошлом выпуске была реализована плата-переходник для подключения ПЗУ к плате Arduino MEGA2560. С тех пор удалось протестировать плату, написать и запустить программу чтения данных из ПЗУ. На рисунке ниже показан основной цикл программы. Полностью программу можно скачать с репозитория проекта на GitHub. Основной цикл void loop() обрабатывает две команды, подаваемые от ПК к устройству чтения ПЗУ платы Arduino: „d“… Read more »
Целью под номером три в списке запланированных работ по «жесткому диску» значится: «считать микросхему ПЗУ». Для этого необходимо прочитать содержание старой 5-и вольтовой ПЗУ AT27C516 с разрядностью 16 бит и объемом 64К. Подходящего программатора и переходника под руками нет. Однако, возможно решить задачу при помощи подключения данной ПЗУ к Arduino MEGA2560. На фото ниже представлена реализация такого подключения.
В этом цикле заметок хотелось бы дать представление о различных видах неисправностей жестких дисков и их диагностики. Для новичков рекомендую ознакомиться со статьей «Устройство жесткого диска» Часть неисправностей может быть определена при помощи встроенной в программу управления жестким диском системы S.M.A.R.T. Такой способ диагностики подразумевает подключение диска к компьютеру и использование специализированной программы, например, бесплатной программы R.tester или комплекса для ремонта и… Read more »
История вопроса и целеполагание. Когда-то, еще в школе, я самостоятельно собрал плату электроники для кассетного магнитофона. К сожалению, весь самодельный магнитофон не сохранился, но вот плата от него лежит в личном музее. Возможно, именно эта детская забава и определила мою будущую профессию, связанную с жёсткими дисками.