Давно не было серии про разбор и попытки повторения жесткого диска, но автором работа в этом направлении делается постоянно. В частности, сейчас ведутся раскопки в области управления каналом чтения через последовательный интерфейс, о чем планировалось написать в части 13. Сложность заключается в том, что, чисто по дизассемблированию, понять как все-таки управляются микросхемы шпинделя, канала чтения и позиционера не представляется возможным.
Для помощи пониманию дизассемблерного кода следует отсканировать шину процессора цифровым анализатором. Для этого нужно знать удобные места подключения к шине адреса/данных и сигналам управления. Предположение о том, что все нужные сигналы выведены на контрольные технологические точки с легко доступной стороны платы оказалось верным.
Согласно полученным результатам, была обновлена схема, а ее исходник закачан на гитхаб.
В нее добавлена пока часть сигналов процессорной шины с указанием технологических выводов, но этого количества уже достаточно для изучения микросхемы управления шпиндельным двигателем.
Нумерация контактов на плате и в схеме отличается добавкой буквы «p» перед номером контакта. Например, номер на разъеме 196, в схеме обозначен как p196.
На рисунке ниже слева плата с технологическими контактами без подключения, а справа с припаянными к ним разъемами. Выполнено подключение двух сигналов к осциллографу.
Ниже представлен пример экрана осциллографа с активностью пары сигналов на шине: вверху CS3#, а внизу RD#.
Обнаружил, что уровни сигналов соответствуют 5-и вольтовой CMOS логике, что, как бы, для 1995-ого года совсем не удивительно. Следовательно, STM32 напрямую к плате подключить нельзя. Нужно использовать специальные микросхемы перехода логических уровней.
Удалось найти довольно подробный документ по проблеме перехода 5 вольт — 3 вольта: http://homepage.cem.itesm.mx/carbajal/Microcontrollers/SLIDES/GPIO_Applications.pdf
Ниже картинка из вышеприведенной статьи про схему, которая наиболее подойдет:
Далее, закупаем 74LVC4245 и оснащаем ими макет.
Попутно обнаружил, что на 196-ой процессор подается тактовая частота 30 мегагерц (на схеме точка p167).
Микросхема WD61C13A отвечает за управление шпиндельного двигателя.
Из уже разобранного в дизассемблере кода, пока не понятно как именно она управляется, а для замены процессора на современный, понимание этого — первостепенная задача.
Дальнейший план действий такой:
1) сканировать цифровым анализатором обращения к контроллеру шпинделя,
2) посмотреть эти места в коде прошивки управления при помощи дизассемблера,
3) собрать испытательный макет с платой WD21000, процессором STM32 в виде отладочной платы и микросхем переходников логического уровня 74LVC4245,
4) пробовать управлять шпиндельным двигателем.
Не забывайте делать бэкап. До новых встреч!