Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Документация » Програмный ремонт жёстких дисков HDD |
<<Назад Вперед>> | Страницы: 1 2 3 4 * 5 6 7 8 .. 75 76 77 78 79 80 | Печать |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
aleksvolgin написал: Странно, а у меня не зажигает... Щас попробую исправить. уже какая-то рожа с мафоном зажигает. |
aleksvolgin
Advanced Member
Всего сообщений: 2123 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 21 нояб. 2010 |
Да, счас всё нормально, спасибо. Щас попробую исправить. |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 17 мая 2017 15:13 Сообщение отредактировано: 18 мая 2017 9:48
В ходе работы и тестирования винчестеры Seagate выдают разнообразные сообщения об ошибках, все они закодированы. Вот их расшифровка. Биты Health Health (здоровье) - это кумулятивный показатель исправности накопителя. При прохождении тестов (и при нормальной работе, не забываем - формально это тоже один из тестов) при накоплении определенного количества ошибок биты здоровья устанавливаются в единицу, сигнализируя о неисправности. Здоровья существует два: текущее - выставляется в ходе прохождения теста и сбрасывается при начале следующего, служит показателем успешности теста, и аккумулированное - не сбрасывается и служит показателем успешности селфскана в целом. Посмотреть здоровье можно онлайн-командой "точка". Биты:
Для быстрой расшифровки битов можно воспользоваться программой SigaHLTH Коды ошибок Эти шестнадцатеричные коды используются в выдаче отчётов по командам "точка", "апостроф", "процент", в онлайн-отчётах о бэдах/ремапах и др. Кроме того, выделенные сообщения об ошибках выскакивают в ответ на невозможность выполнения той или иной команды. Пример:
Code - код ошибки (в примере 33 - адаптивы не загружены). Таблицу кодов ошибок можно посмотреть в документации по ссылкам в начале обсуждения сигейтов (приложение A из Diag Commands Alpine), переводить её мне лень. Track - координаты цилиндра, головки и сектора, где произошла ошибка Специальные сообщения об ошибках и повторах Это односимвольные сообщения, которые выводятся на экран немедленно, прерывая общий поток. Полный список сообщений можно найти в приложениях к документации по командам (см. выше), например в файле Diag Commands Alpine это приложение B. Чаще всего встречаются следующие символы: $ - отсутствует AM сигнал для сервосистемы. Проще говоря, головка теряет сервометки и не может ни удержаться на дорожке и стабилизировать скорость шпинделя. Часто сопровождается сообщением "AM Reacquired". Пример: |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 19 мая 2017 22:08 Сообщение отредактировано: 2 июня 2018 21:44
По идее, этой главе полагается быть после главы о разборе служебки, но раз я написал её первой - запощу сейчас. Теперь коротко пробежимся по модельному ряду Barracuda с разбором особенностей и ключевых нововведений отдельных семейств. Таблица соответствия моделей кодовым именам (неполная)
Основное отличие U-шек от Барракуд - модульная (по Filekey), а не трековая структура служебки и в связи с этим имеются отличия от вышеописанной системы команд. Команды для работы с модулями можно посмотреть в документе ниже. Кроме того, многие операции (например, запись ПЗУ) у них доступны через ATA-интерфейс, а не через терминал. Документация по их ремонту от PC3000: http://www.acelab.ru/dep.pc/do...PC-Uxx.pdf Справочник по командам, подходящий именно к U-серии: https://www.itosaka.com/WordPr...ommand.pdf Скановые ПЗУ и программа-прошивальщик U6DLE/ZSDLE: http://www.hddoracle.com/viewforum.php?f=134 |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 20 мая 2017 22:41 Сообщение отредактировано: 4 апреля 2018 9:26
Структура служебной информации накопителей Seagate Barracuda отличается от большинства винчестеров прочих фирм. Она не делится на модули, и каталог модулей в ней отсутствует. Вместо этого используется более простая структура: каждый элемент занимает одну или несколько соседних дорожек, а адресация их происходит по фиксированному смещению относительно начала служебной зоны. Чтобы узнать адрес начала служебной зоны, введите команду % ("процент") :5000001803000001 AX`9RY2FMKH' "000000000000"16BD3-16D14 16BD3-16D14 - это и есть адреса цилиндров служебной зоныили 2>x - показать зонное распределение: ...(часть лога пропущена)... Reserve - это и есть служебная зона. Отсюда узнаём длину треков в секторах.Начиная с APLUS появляется команда T>y для вывода подробной структуры служебной зоны. Пример вывода с 5400.4 Corsair: PhysCyl GrayCyl Служебная зона простирается на все головки накопителя, но информация хранится только по одной системной - 0-й (нижней), и используются только чётные цилиндры (вероятно, для исключения перекрывания дорожек). Однако некоторые объекты занимают больше одного трека - в таком случае остаток находится на треке 1-й головки по тому же цилиндру (у одноголовых накопителей - по единственной 0-й головке через цилиндр). Точную длину объектов из этой таблицы узнать нельзя (рецепт определения длины см. по ссылке ниже). Рассмотрим, какие объекты находятся в служебке, с расшифровкой обозначений из таблицы. Жирным выделены кодовые блоки, необходимые для пересоздания всей служебной информации в ходе селфскана - их необходимо перед селфсканом сохранить:
К сожалению, у более ранних накопителей команды T>y не было, и координаты и длины объектов приходилось узнавать по более сложной методике, описанной здесь: http://forum.ru-board.com/topi...rt=3780#19 Впрочем, для большинства популярных семейств всё это давно определено и сведено в таблицу Offsets.xls (расширенная версия) (версия с моими дополнениями), а также все смещения есть в документации к PC-3000. Так что воспользоваться той инструкцией вам придётся только если у вас редкая не описанная модель или если вы хотите поэкспериментировать, а на остальные случаи есть готовенькое. Но имейте в виду - длины объектов для разных версий прошивок могут различаться, поэтому на всякий случай советую сохранять трек целиком. Ну и наконец к служебке относится код в ПЗУ. У старых моделей с параллельным ПЗУ там содержится большая часть необходимого для работы диска кода, у моделей начиная с Avalanche там только загрузчик (BootCode), который умеет только читать из служебной зоны и подгружать код по кабелю, а остальное вынесено в Application Code. Работа с ПЗУ будет рассмотрена в дальнейших главах. |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 20 мая 2017 22:50 Сообщение отредактировано: 1 июня 2018 20:52
Перевод и расшифровка некоторых специфических для Seagate терминов документации и строк из процесса селфскана. Общие для всех винчестеров термины здесь не описыватся – см. в "словарике сленга ремонтников HDD". HM – Head Mask (у последних 7200.10 и 5400.4) SFI – 1) Switch to full int. (у последних 7200.10 и 5400.4), 2) Symbols from index – отсчёт «сырых» байт от индекса начала оборота Wedge – клин, сервометка как таковая и участок за ней. Число их указывается в выводе ^L, например 220 Servos Niwot – предположительно, этим словом называется адресация по физическим цилиндру/головке/сектору. PCF – предположительно файл настроек пикера (Picker Config File). Вот тут, например, пытались разобраться, как и куда его пришить к делу. Cert – то же что и селфскан, а также оверлей, за него отвечающий. Stuff – ATA паспорт накопителя Overlay – подгружаемый с диска код, дополнение к Application code. Их два: ATA overlay и Cert, обычно оверлеем называют только первый. В памяти всегда находится только один из них. Picker – процедура селфскана, отвечающая за подбор оптимальных TBPI – плотности дорожек и числа секторов на дорожке, а также за разбивку на зоны. Пикер настраивается вводом относительной плотности записи, где-то от 0.7000 до 1.1000 Health – слово (два байта) «здоровья» накопителя, бывает текущим (Cur) и кумулятивным (Cum). Содержит битовую карту возникших в процессе работы ошибок. Age – "возраст" накопителя, определяет, какая программа (Pgm) должна при старте на нём работать. Congen – файл настроек накопителя, состоит из переменных. Slip-list – дефект-лист секторов, пропущенных (slipped) при форматировании. Соответствует P-List других производителей Alt-list – дефект-лист секторов, замещённых (alted) из резерва в процессе работы. Соответствует G-List System sector – содержит адаптивы, состояние накопителя и другие настройки SeaDex script - ??? ZAP – Zero Acceleration Path, специальная техника более быстрого и точного позиционирования. Частью её являются специальные поля (zap field), в которые записываются предварительно калиброванные данные для сервосистемы. Подробнее: https://patents.google.com/patent/US6671119 https://pdfs.semanticscholar.o...a1b394.pdf Gray code – код Грея, считываемый сервосистемой с сервометок, определяет физическое положение актуатора. Определенным образом соотносится с номером цилиндра. MDW, HDW - тип накопителя "middle" и "high" (density wedges?) Размышления на эту тему Napa - ??? Packwriter – стойка для группового тестирования накопителей. CSPT (CERT Sequence Parameters Table) – то же, что и cert table SDLD (Seagate DownLoaD) - проприетарный бинарный протокол для быстрой отправки данных в накопители Seagate. Особенности: оперирует блоками размера 1/2/4/8 секторов, число блоков не должно превышать FFh. Описание протокола закрыто, для желающих покопать его и написать свою программу для отправки - вот инфа. Поддерживается в утилите ST_MEM (не FREE), другие 100% рабочие программы мне неизвестны. ID, OD - внутренний диаметр и внешний диаметр соответственно (для сервосистемы) Вечно в процессе дополнения... |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 22 мая 2017 21:05 Сообщение отредактировано: 8 июня 2018 21:54
Как я уже сказал, для большинства манипуляций с Сигейтами достаточно простого терминала. Но некоторые операции было бы удобнее автоматизировать, поэтому по ним был создан ряд программ. К слову, все эти проекты являются давно заброшенными. http://seagatedoctor.narod.ru/SOFT.html - несколько мелких вспомогательных утилит: R_Util: SigaHLTH V1.1http://www.hardw.net/forum/topic7563-60.htm, http://www.artras.narod.ru/r_util3.2D.rar - терминальная программа с возможностями мониторинга, автоматизированного сохранения треков и загрузкой по SDLD (правда, в демо-версии всё это вроде бы не работает). Описание и сведения об авторе - внутри архива. ftp://ftp.seagate.com/pub/techsuppt/ - старый FTP Seagate. Содержит множество полезной информации по древним HDD Seagate, утилиты низкоуровневого форматирования, переключатели режимов ATA и т.п. Неполный список файлов с пояснениями. http://files.hddguru.com/index...te&SID - ещё одна терминалка, глубокая бета http://worksoft.narod.ru/Seagate_Terminal_4.zip - терминалка от ArtNET Mobile Computers. Описание внутри. Обсуждение программы, последняя бета. http://www.hardw.net/forum/topic10426.htm http://forum.hddguru.com/viewtopic.php?t=11980&start= SeDiv - создавалась как любительский "комбайн" наподобие PC-3000. Платная, но иногда попадаются демо- и альфа-версии, вот у меня, например, 2.0.1.0 alpha завалялась и русский хелп к ней. Старый сайт программы (http://sediv2008.narod.ru/) давно помер, однако гугль находит некий http://www.sediv.net STR-3000 - творение китайских товарищей из China HDD Union. Пощупать можно тут: http://malthus.mooo.com/viewforum.php?f=31 Также попадатется на китайских файлообменниках, я находил по ней видеогайды, но с этими источниками нужно быть осторожнее - я вместе с ними вирусни понатащил. ST_MEM_WIN (ст_мем) - широко известная в узких кругах ремонтников программа за авторством Victor_UJ. Довольно кривой и незаконченный проект, но равных ему по возможностям нету, потому как: - умеет автоматизированно сохранять и записывать треки, читать-писать буферы, автоматизированно вычитывать служебку (корректно работает только во FREE версии) - поддерживает какие-никакие скрипты - умеет отправлять файлы по SDLD (только в коммерческой версии). Почему это так важно? Это единственный способ передать бинарный объект для записи в накопитель за вменяемое время, и это же наиболее корректный способ это сделать. В общем, это самая необходимая для подъёма сигейтов программа. Далее все работы будут производиться с её помощью. Программа изначально планировалась как коммерческий проект, поэтому у неё существуют две версии: полнофункциональная и бесплатная (ST_MEM_FREE). В бесплатной отключены самые "вкусные" функции. http://files.hddguru.com/downl..._12_06.ZIP - последняя FREE версия от 28.12.06г. Размер программы 596 480 байт. В архиве есть документация по скриптовым командам и примеры скриптов. Версию с поддержкой SDLD можно взять тут: http://malthus.mooo.com/viewtopic.php?t=211 или тут: http://algrit.narod.ru/hdd_prog.html . Это утёкшая в сеть предрелизная версия, в ней не работают или работают некорректно некоторые команды, в частности R_TRACKS_MASK, W_SECTORS_SDLD, вместо S_BUF использовать S_BUF_BLK. Зато работает SEND_FILE, и это самое главное. Важный момент: ST_MEM не переваривает концевых пробелов в скриптах! Тщательно вычищайте от них то, что понаписали или скопипастили! В той версии ST_MEM (SDLD), которая ходит по рукам, есть ошибки в обработчике терминала, что периодически вызывает зависание ST_MEM. (Есть предположения, что в ней отлаживалась заливка по SDLD, поэтому этот блок кода в ней наиболее стабилен, а в остальных не все баги выловлены). Поэтому, чтобы устранить баги программы, предлагается все кроме SDLD делать во Free, т.к. это уже практически вылизанный релиз. Полезное дополнение - высокоскоростной драйвер последовательного порта HiSerial |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 22 мая 2017 22:12 Сообщение отредактировано: 8 июня 2018 21:51
Ну вот, спустя многабукаф, добрались наконец до самого главного вопроса - а как же всё-таки программно чинить Seagate? Ответ: Программный ремонт винчестеров Seagate заключается в проведении на них селфскана. Вот его-то мы по всем правилам и будем учиться делать. Что нам для этого потребуется: 1. Вся вышенаписанная справочная информация и максимально возможное её понимание. 2. Датакабель (терминальный адаптер). 3. Терминальная программа. 4. Утилита ST_MEM (в принципе, для накопителей старше 7200.7 можно и без неё обойтись). 5. Скрипты для ST_MEM (будут ниже). Никаких дополнительных файлов для запуска селфскана в Seagate заливать не нужно (в отличие от накопителей других фирм), вся необходимая информация содержится на самом диске (исключение - U6 - будет рассмотрено отдельно). Селфскан состоит из набора отдельных тестов (программ, Pgm). Начальный тест - номер 2. Описание отдельных тестов можете посмотреть здесь. Тесты проходятся по порядку, записанному в Cert table, отобразить порядок прохождения тестов можно командой C>D По окончанию каждого теста номер NN выдаётся сообщение "OkEnd Test NN" в случае успеха или "AbEnd Test NN" в случае провала. Последний по порядку тест (у барракуд это фиксированный номер 50) - работа винта в обычном режиме по интерфейсу, таким образом, винт по факту ВСЕГДА выполняет какой-нибудь "тест". Псевдотест 4F - это аварийный выход в диагностический монитор в случае провала селфскана. В процессе селфскана винт ведёт подробнейшие логи, которые выводятся на терминал и параллельно записываются на диск и могут быть подробно изучены позднее командами T>D и T>E. Во время проведения селфскана МОЖНО отключать питание - промежуточные результаты сохраняются на диске, и при следующем включении винт продолжит с номера незаконченного теста. Исключение составляет тест 02 (подготовка служебной зоны) - на время этого теста вся информация находится только в ОЗУ, а в конце записывается обратно, и если пропадёт питание во время его прохождения либо этот тест будет провален - винт потеряет служебку! Поэтому желательно предварительно её сохранить. Кроме того, начиная с 7200.7 оверлей в 02-м тесте в оперативку уже не помещается, и соответственно при полном селфскане затирается и сохранять его надо обязательно! А начиная с серии 7200.9 это касается ещё и AppCode! Подготовка - получаем информацию о диске, сохраняем служебку Для начала получим возможно полную информацию о винчестере. Создадим (выделить текст, сохранить с расширением *.CMD), откроем в ST_MEM_FREE и запустим следующий скрипт: *позже составлю и выложу на этом месте свою оптимизированную версию* // Script file for ST_MEM_WIN - ©Shark // Сохраним выведенный лог куда-нибудь в папку. Эта информация позже может помочь для решения проблем. Для сохранения служебной информации удобнее всего использовать всё тот же ST_MEM_FREE. Для этого там есть специальная команда READ_TRACKS_MASK - чтение объектов по маске с автоопределением (в доступной версии ST_MEM_SDLD эта команда не работает). Полный её синтаксис можно посмотреть в справке ST_MEM, здесь он приводиться не будет. Скрипт для вычитывания выглядит вот так: (можете попробовать поставить скорость побольше, если порт поддерживает, например SPEED/460800). SPEED/115200 Команда берёт сведения из файла \Mask\trc.txt, формат файла: Название_семейства/Головка*Смещение_трека_в_СА*>Смещение_от_начала_в_секторах*Длина*Имя_объекта/(Следующий объект...) Название семейства – для автодетекта, то, что отдаётся по ^L (чувствительно к регистру!). Головку, смещения и длины можно посмотреть в файле Offsets.xls либо узнать самостоятельно (см. в главе "Описание служебки"). Если длина неизвестна и лень её узнавать, можно считать трек целиком – долго, но надёжно. Имя объекта – имя создаваемого файла, к нему добавятся номера головки и трека, по которым производилось считывание. Пример готовой строки для ALPINE: ALPINE/0*29*>0*244*CERT/0*2a*>0*61*OVL/0*2c*>0*12*VENDOR/0*15*>0*180*APP/0*29*>244*12*TBLМой файл trc.txt с моими дополнениями на основе тех винтов, что прошли через мои руки. Сохраняет треки целиком - дольше, но надёжнее. Скрипт создаёт дампы треков APP, CERT, TBL, VENDOR, OVL в папке \Dir\, расширение .trk. После считывания полезно убедиться, правильно ли всё считалось. Проще всего это сделать, открыв файлы в Hex-редакторе и сравнив с известными, взятыми из баз ресурсов. Рекомендуется вычитывать треки целиком, даже если они содержат лишь небольшой блок данных, потому что длины объектов различаются от версии к версии прошивки и есть вероятность, что они считаются не полностью. Считанные файлы вместе с текстовым файлом информации о винчестере перенесите в другую папку и сохраните в надёжном месте. Ещё раз - для 7200.7 и новее служебку перед селфсканом сохранять обязательно, для всех остальных - желательно. |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 22 мая 2017 23:58 Сообщение отредактировано: 26 сентября 2018 19:09
Запуск Selfscan - простейший случай Для начала рассмотрим простейший случай - вся служебка на месте, винт выходит на готовность и определяется системой, просто есть проблемы с читаемостью. Служебка уже забэкаплена (см. выше).
Всё! Селфскан пошёл! Можно наблюдать в терминале его прохождение или просто закрыть терминал и оставить винт в покое - проходится он полностью автономно. Ну, почти - у некоторых семейств начиная с 7200.8 после 99 теста винт вываливается в терминал. Паниковать не надо - это не баг, это фича. Просто нажмите ^T и селфскан продолжится дальше, начиная с 10-го теста. Среднее время тестирования - от полутора суток и более (можно посмотреть в логе заводского селфскана). Для контролирования процесса прохождения на длинных тестах (когда в лог подолгу ничего не выводится) можно нажимать "." и ";". В случае успеха винт выйдет на уровень 50 (у коннергейтов - 40) и снова вывалится в терминал. Я когда-то поднимал эту тему. И достоверно известно что пикеры задаются дважды - и перед N2, и перед N10. Поэтому есть останов на 99-м. Послескановые действия И вот селфскан успешно пройден. Что же дальше? Зависит от того, какого поколения у вас винт. 1. Если у вас старый винт - по успешному завершению селфскана он сразу же будет готов к работе, достаточно передёрнуть питание. 2. *необходимость выделения этого пункта мной не проверена* У Барракуд, начиная с ATA 1 и до ATA VI, переходим сразу к параграфу 3 "Правка Stuff", минуя 1 и 2. 3. У 7200.7 и 7200.8 после рестарта в терминале вы увидите: OVERLAY FAILED( и самопроизвольный выход в терминал. Это значит - оверлей (вы же его предварительно сохранили, не так ли?) надо залить обратно. Начинаем с параграфа 2 "Заливка оверлея" и только котом переходим к третьему.4. У 7200.9 и 7200.10 в результате селфскана затирается ещё и апп и у них нужно выполнить все послескановые действия 1, 2, 3 по порядку. А оверлеев у них не один, а два, о чём они недвусмысленно намекают указанием номера: Unable To Load Overlay 01|000A Примечание: здесь и далее в примерах копии треков, из которых посылаются элементы служебки, лежат в подкаталоге \track и имеют имена: app.bin - апп ovl.bin - оверлей vendor.bin - вендор Если, прочтя описание всех этих лействий, вы решили, что это вам не по силам, можете попробовать сделать тест только User Area - запускать селфскан с теста N4 (до 7200.8) / N10 (7200.8-7200.10). Служебка при этом не трогается. Но очень многие калибровки при этом пропускаются, фактически производится только форматирование и тест поверхности, поэтому при сильно ушедших параметрах винта результат "облегчённого" селфскана будет неудовлетворительным (провалы скорости чтения, чересчур много скрытых секторов) либо он вовсе завершится с ошибкой. 1. Заливка App. Самую большую сложность для новичка представляют последние семейства, 7200.9 и 7200.10. Даже после успешного селфскана (а неуспешного - тем более) и последующей перезагрузки они ошарашивают новичка сообщением: Error Reading Application Code или, у новых, ERR Read App Code и выходом на "страшный" уровень F>. Симптомы точно такие же, как у заваленной служебки. Без паники! Это не баг, а фича! Селфскан пройден нормально, всё в порядке - просто Application Code в процессе не сохранился.Прежде всего, если вы попали на уровень F> не автоматически, а нажав ^Z во время загрузки, нужно попытаться считать его с диска командой F>R, либо в три этапа: F>R1 - считать дефект-лист резервных треков (служебной зоны) F>R2 - бут-адаптивы F>R4 - Application code В нашем случае первые две отработают без ошибок, а последняя выдаст ошибку вида Code - A6 Track 15FC4.0.234 Sns FFF - что означает, что оверлея на месте нет.А куда его залить? Нажимте "апостроф" и в ответе получите длину апп и номер буфера! (номер будет либо 80, либо 60) Получается такой скрипт (для SDLD), для примера шлём файл длиной 238h секторов в буфер 60: На уровне F> команда смены битрейта - с маленькой буквы, поэтому у команды SPEED появляется параметр с явной её записью. SPEED/115200/b0115 Команда F>d - отправка файла в буфер. 2 - отправка блоками по 2048 байт/4 сектора. Выбирается исходя из того, что общее число блоков не должно превышать 100h. Команда j,,1 - запуск загруженного оверлея. Выводится сообщение о его версии: 3.AAD 11-15-05 14:56 AAD,1D_S_013_N1,4T и - ура! Мы на уровне T> ! Ну а если сообщение об ошибке - значит, не то залили, или не до конца.Сейчас апп находится только в памяти, и если в этот момент перезагрузиться - придётся повторять всё сначала. Чтобы записать его на диск, нужно сначала ещё раз загрузить в память системный сектор: T>R1 T>R2 а потом записать его на диск: T>w4 2. Заливка оверлея Для заливки единственного оверлея длиной 5Dh секторов используем ST_MEM SDLD и скрипт следующего вида: У винтов начиная с 7200.9 оверлеев два, и скрипт удлиняется: SPEED/115200 Оба оверлея находятся на одной дорожке, поэтому если вы считали её полностью - второй вы не потеряли. В примере нулевой лежит с начала трека и имеет длину 6Fh секторов, первый - длину 13 секторов и лежит по смещению 89h секторов от начала. Длины оверлея/оверлеев и смещение для второго оверлея (если он есть) индивидуальны для каждого подсемейства и иногда - прошивки, их нужно индивидуально править под свой винт. Координат оверлея из двух частей в таблице Offsets.xls нету, там только общая длина для вычитывания, нужно изучать слитый трек в Hex-редакторе - незанятые сектора заполнены байтом FF. SPEED/115200 После того, как скрипт успешно отработает, подаём команду T>c - записать оверлей(оверлеи) на диск. Микропрограмма сама запишет их на нужные дорожки, вместе с ними запишется и апп (если ранее нужно было залить и его). Готово! Передёргиваем питание или перезапускаем микропрограмму, подав ^T. 3. Правка Stuff, запись трека Vendor Но и это ещё не всё. Теперь вылазит другая ошибка: Stuff Was Unreadable( (вроде бы это сообщение выскакивает и у более старых барракуд, но я на них селфскан не пускал и сказать точно не могу).Остаётся сделать последнее действие - записать паспорт накопителя. Паспорт хранится на треке Vendor. Структура трека:
Стафф состоит из записей, именуемых ключами. Длина одного ключа – два байта, таким образом, в одном секторе FFh ключей. Несколько ключей могут писаться последовательно, объединяясь в один. Структуру паспорта можно глянуть в документации по ATA интерфейсу или в доках от PC-3000. Для правки ключей служит команда T>F. Ни в коем случае не путайте её с командой T>f – это перезапись флеш-ПЗУ накопителя! В ответ на команду винт пишет приглашение: SetStuff-> На неё вводятся ключи Stuff в виде 16-ричных строк, начинающихся с ASCI>номер ключа>. Ответом будет выставленное значение ключа. Несколько ключей могут быть записаны последовательно. Пример: T>F Также есть функция инициализации стаффа значениями по умолчанию: T>F , но во-первых она не прописывает некоторые флаги доступных функций накопителя, во-вторых, у семейств начиная с 7200.8/9 (точно не помню) она изъята. Также у старших семейств недоступен последовательный ввод нескольких ключей, у них ключи надо вводить по одному.Для удобства ввода в ST_MEM есть команда SET_STUFF, за которой вводится номер ключа и строка значений. После инициализации паспорта значениями по умолчанию нужно вручную задать имя диска и его ёмкость. У старых моделей до Alpine её можно узнать из таблиц в конце инструкции к PC-3000, у альпин и новее - можно глянуть Total KBAs по команде 2>x и отнять от этого числа некоторое количество секторов на резерв для ремапа (сколько не жалко, обычно не менее 1000 сеторов). Примечание: Это число может быть как меньше, так и больше типичного для этой модели! Например, топовые четырёхдисковые накопители зачастую не всегда могут достичь нужной плотности и на выходе получается модель меньшего объёма. А при скане APLUS получаются не 40/80/120 Гб винты, как были изначально, а согласно плотности пластин (100 Гб/пластина, см. описание семейств) - 50/100/150 Гб, которые официально не выпускались (официально была только 200 Гб модель). Вот такой вот бонус на халяву! Имя диска - ключ 1B и последующие, всего 20 штук. Вводится ASCII-кодами, добивается пробелами (код 20h) до длины в 40 символов. Можно ввести не то, что было написано на крышке изначально, а какую-нибудь отсебятину - винт валидность не проверяет. Родные имена в шестнадцатеричных кодах можно посмотреть в аселабовской доке. Для удобства ввода в ST_MEM есть команда STUFF_NAME, за которой сразу вводится текстовая строка - но эта команда использует ввод нескольких ключей подряд и начиная с 7200.8/9 работает некорректно. Емкость диска - ключ 83. Его ввод одновременно копируется в ключ 3C. Порядок байт в ключах емкости – первым идёт младшее слово, за ним - старшее. При копировании значений вручную из сохранённого трека через hex-редактор следует знать, что на диске старшие и младшие байты хранятся в перевёрнутом виде, и в итоге если править напрямую сохраненный трек, то число секторов в 3С и 83 пишется целиком задом наперёд. Другие ключи, где записана емкость – 64, например на Corsair его правка обязательна. Для удобства ввода в ST_MEM есть команда STUFF_NAME, за которой сразу вводится ёмкость (десятичная), но эта команда использует ввод нескольких ключей подряд и начиная с 7200.8/9 работает некорректно. Пример ручного задания ёмкости: TONKA2 120 Гб – 234441648 секторов - 0DF94BB0 hex. Обратите внимание на порядок слов. STUFF/834BB0 Добавляем другие места, где фигурирует емкость: На треке при этом по адресу 906h будет последовательность B0 4B F9 0D. STUFF/3C4BB0 Или же можно не трахаться со всеми этими ключами, а вернуть нужные сектора прямой их перезаписью (рекомендуется для 7200.7 и новее). Пример скрипта с использованием команды W_SECTORS (работает Здесь 15CA - номер дорожки, AUTO - номер буфера записи (можно вписать конкретный номер, а вариант AUTO заставляет программу определить его самостоятельно, по команде "?"), 12 - число секторов (т.е. пишем 12h секторов с запасом, хотя в принципе достаточно одного, четвёртого). SPEED/115200 Пример скрипта (для ALPINE) с использованием записи через буферы и заполнением командой S_BUF: Здесь номер буфера записи (в примере - 210) надо указывать явно. Длина буфера всего 10h секторов, поэтому 12h секторов пишутся в два приёма. Команда S_BUF сама переключает на уровень 1>. Запись идёт на трек F6BA, его также необходимо исправить в двух местах под свой конкретный экземпляр. SPEED/115200 Внимание: у TONKA и новее команда 2>s меняет формат - появляется ключ подтверждения! (см. ниже) Пример скрипта с заполнением буферов по SDLD - самый быстрый вариант: Здесь буфер записи имеет номер 535. В этом примере переключаться между уровнями 2> и T> уже нужно явно. //Для ST_MEM_SDLD Ещё раз напоминаю: перед использованием любого из скриптов непосредственной записи дорожек не забудбье вручную исправить адреса буферов и номера дорожек под свой конкретный экземпляр! Не копируйте бездумно! После записи делаем вручную сброс SMART командой 1>N1 - где-то на треке вендора (точный номер сектора не знаю) хранятся SMART Values, и мы записали их старые. Всё - винт готов к работе! |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 23 мая 2017 21:38 Сообщение отредактировано: 31 марта 2018 17:32
Запуск Selfscan - сложный случай Допустим, нам не повезло, и в результате аварийного завершения 02 теста служебку мы потеряли, причём даже не сохранив, или она вовсе изначально не читалась и винт, постучав головками, останавливается на уровне F>. Тогда нам надо запускать селфскан из памяти, заливая все нужные объекты по кабелю и не считывая ничего с блинов. Порядок действий таков. 1. Берём комплект ресурсов для своего винта Если есть свои слитые - заливаем их. Если нету - скачиваем с сайтов, где выложены ресурсы. Подбор ведётся по кодовому имени семейства и версии ПЗУ. Версию прошивки можно взять любую, очевидно - лучше всего самую последнюю. Ресурсы можно брать от винта другой ёмкости (т.е. с другим количеством головок), исключение - 7200.10. 2. Заливаем App См. предыдущую главу. 3. Заливаем Cert Чтобы попробовать считать Cert с блинов, служит команда ^R. Ответ на неё, если Cert отсутствует: DiskAccess ReadSector EC=47 at ffffffff.00.0000 (пример для TONKA2)Как видно, TMOS вернёт нам требуемую версию Cert, что может пригодиться при подборе комплектов. Очевидно, что версия Cert должна соответствовать версии App. В данном примере это очевидно, но у линейки 7200.7 наблюдается большое разнообразие версий и подбор комплектов ведётся сложнее. Допустим, бэкап треков у нас есть (мы ведь его заблаговременно сделали, не так ли?) Для начала файл для заливки надо подготовить. У семейств Alpine/APLUS и более старых оверлей размещался на одном треке, и никаких дополнительных операций с ним не требовалось, но у более новых оверлей размещён на двух треках (см. таблицу), и перед заливкой вычитанные нами треки необходимо слить. Проще всего сделать это самим ST_MEM. Пример скрипта для TONKA2: Скрипт сливает два файла в один (cert.bin), беря 280h секторов из cert1.bin и 188h из cert2.bin. CREATE_FILE/track\cert1.bin/track\cert.bin/1/0/280/1 Для его посылки и запуска используется скрипт следующего вида (пример для TONKA2 - длина серта 408h секторов): Команда T>d использует третьим ключом цифру 1 - не раскручивать шпиндель (незачем тратить на это время, все равно останавливать придётся). Команда T>r запускает код. После запуска винт сам переключится на скорость по умолчанию, нам останется только сменить скорость терминала (поэтому команда BAUDRATE, а не SPEED). SPEED/115200 В случае успеха TMOS вернёт ревизию Cert (посмотреть её ещё раз можно, ещё раз подав команду T>r): Disk Code Revision # .08F CRC ==> D844 4. Отправка Cert tables Чтобы считать таблички с диска, нужно подать команду 1>t. Ответ, если таблички отсутствуют: DiskAccess ReadSector EC=47 at ffffffff.00.0188 Перед загрузкой файл с таблицами опять-таки надо подготовить. Во-первых, на треке они находятся не с нулевого сектора, и если дорожка Cert слита целиком - выдернуть их оттуда. Во-вторых, первый сектор необходимо переместить в конец файла, как видно из анализа загрузки - винт считывает его отдельно от остальных: cmd 58, params 0035 0000 0131 0001 3F88 0001 0000 0000 0001 2E01 0035 Почему так сделано – одним лишь инженерам Сигейта известно.Необходимое смещение таблиц в треке и их длина узнаётся из таблицы (если там нет или что-то не сходится, то анализом полного трека в HEX-редакторе). Пример скрипта подготовки таблиц для TONKA2 (смещение относительно начала трека 188h секторов, длина 18h секторов): Посылаем полученный файл по команде T>h: CREATE_FILE/track\tabl.trc/track\table.bin/1/189/17/1 Никаких сообщений по окончанию загрузки не выводится. Проверить правильность загрузки таблиц можно посмотрев порядок выполнения тестов C>D SPEED/115200 5. Вводим серийный номер Командой T>#,1,22. В ответ на приглашение вводим по очереди S/N и P/N, написанные на наклейке винта. Второй параметр "1" - packwriter версия команды, чтобы не пытаться писать на диск, получая ошибку Code - 33 (впрочем, на неё всё равно можно не обращать внимания, на результат она не повлияет, это чисто для удобства) Зачем это нужно? Серийник содержит информацию об общем кол-ве головок (т.е. по сути определяет старшинство модели в семействе), они закодированы во 2 и 3 букве номера. Если проводится селфскан с отключением головок, серийник требует правки (об отключении головок ниже). 6. Стартуем селфскан Запуск, дальнейшее прохождение и завершение проводится так же, как в предыдущей главе. Ну а теперь, напоследок, когда вы уже можете понять, что в скриптах к чему и что за что отвечает, и прикидываете, как будете копипастить и править примеры под свой винт, вот вам подарок: Готовая подборка скриптов ST_MEM для почти всех семейств Seagate Barracuda и Momentus (где скачал и кто автор - не помню) Копия моей рабочей папки со скриптами. В ней рабочий беспорядок, зато - в их работоспособности я уверен. Во всяком случае, той части, что отсортирована. |
<<Назад Вперед>> | Страницы: 1 2 3 4 * 5 6 7 8 .. 75 76 77 78 79 80 | Печать |
Полигон-2 » Документация » Програмный ремонт жёстких дисков HDD |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |