Первый украинский SSD диск или вторая жизнь швейцарского компьютера
Этот пост о том, как простая замена винчестера в деревообрабатывающем станке потребовала создания собственного твердотельного диска, и с какими трудностями мы столкнулись при его разработке. Кому интересно, как создавался первый украинский «винчестер-SSD», прошу под кат.
Вначале небольшая предыстория. Несколько лет назад в центр восстановления информации известной киевской компании обратился заказчик с неисправным ноутбучным диском Seagate 1,2 ГБ выпуска 1997 года.
Винчестер использовался в станке, поэтому, когда он все-таки отслужил свое, производство остановилось. С восстановлением данных особых проблем не возникло, полную копию сделали в течение часа и счастливый клиент уехал в Житомир. Но в тот день он еще несколько раз побывал в Киеве. Несколько копий на разных дисках упорно не стартовали на станке. К счастью, на складе дисков-доноров был найден такой же Seagate ST91351AG, восстановленные данные записали на него и все заработало.
Приблизительно через год ситуация повторилась, но диск уже искали дольше – на тот момент даже на ebay его не было. И снова заказчика спас накопленный за долгие годы склад доноров – на дальней полке нашли и оживили, наверное, один из последних в мире дисков этой модели.
Диски-доноры в центре восстановления информации
В этот раз клиенту предложили подумать о переходе на флэш, даже был найден модуль IDE Flash, изготовлены переходники для его подключения к станку, сделана подмена паспорта накопителя. Но заказчик решил не заморачиваться и после первой неудачной попытки загрузиться с него отказался от этой идеи.
Один из первых переходников
Несколько месяцев назад диск вернулся снова. На этот раз было очевидно, что постоянно искать диски более чем 15-летней давности – это не выход, и необходима модернизация станка, перевод его на современные носители. В качестве решения было предложено перейти на флэш. Причин такого выбора было несколько, но основной стало то, что твердотельные накопители намного более устойчивы к вибрациям, чем жесткие диски.
Это решение и положило начало большой серии исследований и экспериментов, которые завершились разработкой и изготовлением через два месяца рабочей версии собственного твердотельного накопителя на основе флэш памяти. Это не совсем SSD диск, скорее специализированный адаптер IDE-to-CompactFlash для промышленного оборудования с рядом уникальных функций.
Но вначале была предпринята попытка решить задачу, что называется, в лоб. Мы собрали несколько различных модулей IDE Flash и карт CompactFlash, скопировали на них восстановленные данные и поехали на выезд в Житомир.
Наш подопечный — деревообрабатывающий станок IMA BIMA
Но ни одна из флешек не смогла загрузиться в станке. С любыми настройками БИОС и режимами подключения попытки загрузки приводили к ошибке чтения диска. Была предпринята попытка подкорректировать загрузочный сектор, в результате ошибка пропала, но система зависала сразу после старта.
Когда стало понятно, что кавалерийским наскоком проблему не решить, мы разобрали станок, демонтировали операторскую панель и промышленный компьютер и увезли оборудование к себе на исследование.
Стенд для исследования
Поскольку остановить производство на какой-либо длительный срок не представлялось возможным, параллельно мы собрали собственный тестовый стенд компьютера на 486DX2 процессоре, с 16 Мб оперативки. Благодаря этому, а также тому, что мы смогли отремонтировать «последний» Seagate ST91351AG, удалось избежать простоя производства во время разработки нашего диска.
Управляющий компьютер станка NUM 1062W, кстати «чистокровный швейцарец», был разработан и собран компанией NUM в 1998 году в промышленном варианте 486DX2-66 с 24 Мб ОЗУ. Согласно сервисным отметкам на станке, последний раз обслуживание он проходил в 1999 году, еще находясь в Германии. Тогда была проведена профилактика, и после этого он бесперебойно работал до 2010 года, когда впервые вышел из строя винчестер.
«Системник» NUM 1062W
В качестве операционной системы в этом промышленном компьютере используется подзабытая сейчас OS/2 WARP, управление станком осуществляется с помощью специального прикладного ПО.
Значительная часть исследований и экспериментов проводились с помощью анализатора протоколов EPOS ATA Analyzer.
Анализатор протоколов EPOS ATA Analyzer
Анализатор представляет собой компактный прибор, который включается в разрыв между исследуемыми системой и накопителем с SATA или PATA интерфейсом и перехватывает все команды и данные, которыми они обмениваются. Собранная информация (протокол обмена) передается по USB на отдельный инструментальный компьютер, где обрабатывается с помощью специального ПО.
Анализатор уже неоднократно выручал нас в подобных ситуациях, тем большим было наше удивление, когда выяснилось, что по шине IDE передается какой-то «мусор», а не стандартные АТА команды.
При анализе такого неправильного поведения анализатора с швейцарским компьютером пришлось напомнить себе архитектуру 486 совместимых материнских плат. Причина была найдена – интерфейсный контроллер IDE на материнке выдавал на шину сигналы с уровнем 5В. В настоящее время по требованиям стандарта АТА они должны иметь уровень 3,3В, поэтому все современные микросхемы контроллеров попросту не могли правильно интерпретировать команды, которые передавались через интерфейс.
Решение в такой ситуации казалось очевидным. Мы взялись за разработку и изготовление конвертора уровней. Тем более что по результатам экспериментов нам уже удалось запустить операционную систему с оригинального Seagate ST91351AG на нашем тестовом стенде. Тестовые копии на CompactFlash и IDE Flash также загружали OS/2 WARP на стендовом ПК.
Через пару недель получили печатные платы и собрали конвертор уровней. С его помощью были получены первые протоколы обмена данными с накопителями. И тут выяснилось, что проблема совсем не в нестандартных уровнях на шине. Более того, в результате тщательного обследования материнской платы выяснилось, что проблема завышенного напряжения была вызвана сбоящей микросхемой буфера IDE контроллера (74ACT16245DGGE4). Ее заменили и исследования продолжились.
Неработающая микросхема буфера на материнке
На тот момент промежуточные результаты выглядели следующим образом. На нашем тестовом стенде OS/2 WARP загружался как с оригинального Seagate, так и с практически любых жестких дисков, IDE Flash и CompactFlash. Но на исследуемом компьютере по-прежнему запускался только Seagate.
Вопрос точно был не в привязке к конкретному диску – эта версия была отброшена одной из первых. Проверка была сделана с помощью эмулятора паспорта диска, разработанного на базе ATA Analyzer-а. Суть работы эмулятора достаточно проста – при перехвате команды IDENTIFY DEVICE (по ней отдается вся конфигурационная информация диска – модель, серийный номер, поддерживаемые режимы и т.п.), он не транслирует команду в подключенный диск, а возвращает хосту нужный нам паспорт.
Чтобы выяснить, чем же этот Seagate такой особенный, с помощью анализатора были сняты и тщательно проанализированы десятки протоколов. Они были практически идентичными с небольшой поправкой на разные платформы – т.е. наборы команд и передаваемые данные при инициализации диска на исследуемом компьютере и тестовом стенде совпадали. Но после определенного момента происходило что-то непонятное, что в результате приводило к невозможности загрузки с любых дисков на NUM 1062W.
Фрагмент одного из протоколов
Мы перепробовали более двух десятков дисков – ровесников злополучного сигейта, но ни один из них не позволил загрузить систему. Тем не менее, большой объем собранных данных позволил локализовать момент сбоя в загрузке. Этот момент очень внимательно проанализировали на логическом и сигнальном уровнях.
Проблема оказалась в ошибке реализации протокола передачи данных между хостом и диском. Фактически, в определенный момент времени IDE контроллер материнской платы NUM 1062W формировал на шине такое состояние, которое не описано ни в одной из версий стандарта АТА. По стандарту такие состояния должны отбрасываться любым диском, с сообщением об ошибке. Все диски правильно реагировали на это состояние, кроме сигейта, который игнорировал его и переходил к обработке дальнейших команд.
Таким образом, взаимодополняющие ошибки в IDE контроллере и в прошивке диска привели к созданию уникальной системы привязки диска к оборудованию. Мне кажется, на этапе разработки материнки отладка производилась именно с таким сигейтом, а когда выяснилось, что другие диски не очень-то и работают, это стало фичей.
К сожалению, наши запросы к разработчику компьютера не принесли ощутимой пользы. Единственное, чего мы смогли добиться от швейцарцев, – такое оборудование уже давно снято с производства и не поддерживается, но если нам необходима сервисная документация, они готовы ее предоставить, естественно за отдельную плату. При этом они сообщили, что в документации нет схемотехники и монтажных схем, а предоставить такую информацию они не могут за ее отсутствием.
Когда проблема была четко определена, мы начали разработку эмулятора диска непосредственно для конкретного станка. В первую очередь был разработан макет будущего устройства. Его основой стала разработанная ранее под другой проект отладочная плата прибора для обслуживания жестких дисков, построенная на микроконтроллере Atmel. На этом макете мы впервые добились удачной загрузки на NUM 1062W с накопителей IDE Flash и карт CompactFlash.
Отладочный макет
После этого было принято решение провести тестирование в «боевых условиях» — непосредственно на производстве. Мы поехали в Житомир на производственный участок заказчика, там подключили разработанный нами макет будущего накопителя к станку. О чудо – все заработало, причем положительные результаты были получены как для модулей IDE Flash, так и для CompactFlash карт.
Испытания макета в «боевых условиях»
После пробного запуска были изготовлены несколько экземпляров твердотельных дисков в форм-факторе 2,5” с интерфейсом IDE. В качестве носителя в них используется промышленная карта CompactFlash. Первый украинский «SSD-диск» получил название Эмулятор жесткого диска для промышленного оборудования.
Оригинальный диск, отладочный макет, окончательный вариант нашего диска
Устройство нашего диска
Кроме того, во время тестирования макета на производстве выяснилось, что управляющие программы для станка носят на дискетах. Это создает большие неудобства для сотрудников, поскольку в производственных условиях дискеты долго «не живут». Со слов заказчика, одной дискеты хватает на запись 3-5 управляющих программ, после этого ее необходимо менять. Поэтому мы предложили заменить дисководы на эмуляторы FDD на основе USB флэшек. В результате такой дополнительной модернизации обрабатывающий центр IMA BIMA был полностью переведен с магнитных технологий хранения на современные твердотельные носители.
Итоги:
• Была решена нетривиальная проблема по замене устаревших магнитных накопителей (HDD и FDD) на современные твердотельные носители на основе Flash памяти, что позволило продлить жизнь и повысить надежность эксплуатации деревообрабатывающего станка с ЧПУ.
• Разработанный нами «эмулятор HDD» имеет ряд специальных функций, в том числе возможность подмены паспорта, модификации протокола на лету, исправления недокументированных ошибок обмена данными. Благодаря этому возможно модернизировать практически любое промышленное оборудование и нестандартную специализированную технику, в которых используются устаревшие жесткие диски с интерфейсом IDE.
P.S. В настоящее время мы работаем над созданием аналога для интерфейса SCSI, который широко применяется, например, в медицинской технике. Если тема интересна, в следующих постах постараюсь описать, что у нас получается в этом направлении.