CP.EXE

                               Версия 1.1

                                СПб, 2002

     В версии 1.1 исправлен наш глюк - не было поддержки чтения и
записи служебки у SE. Теперь все работает. Также исправлен глюк
с чтением/записью сырых дефектлистов.

Напоминаем, что домашним сайтом CP.EXE является ftp://195.209.232.10
Оттуда укачивается последняя на текущий момент версия.


                               1. Введение.
     Данная  программа работает с накопителем на физическом уровне. Если вы
не  обладаете  достаточной квалификацией для работы с накопителем на низком
уровне  вы  рискуете  окончательно  убить  свой накопитель. Естественно все
пользовательские данные на тестируемом накопителе тоже будут убиты.
     Авторы  программы не несут никакой ответственности за потеряные данные
и  убитые  накопители. Помните, что применяя эту программу вы применяете ее
на свой страх и риск. Программа не содержит никакой защиты от дурака и если
вы  ее  попросите  залить вместо служебки GIF с девками она с удовольствием
это  сделает.  И тем самым убъет ваш накопитель, правда и в этом случае его
можно поднять.
     Поэтому  -  применяя  программу,  будьте  внимательны  и  осторожны! И
обязательно прочтите эту доку. А лучше и остальные - чтобы понимать, что вы
делаете.

              1.1. Копирайты, условия распространения итд.

     Вам  интересно  об  этом  читать?  Вот и мне также неинтересно об этом
писать. Все равно это никто не читает. Так что проехали.

                               2. Назначение.

     Программа  cp.exe  предназначена  для тестирования, ремонта, изменения
конфигурации   накопителей   Quantum   Fireball   TM/ST/SE.  Другие  модели
накопителей  программой  не поддерживаются и работа с ними может привести к
полной   неработоспособности   подключенного   накопителя.  Тем  не  менее,
некоторые  операции, например работа со страницами конфигурации, возможны и
для  более  ранних  моделей, совместимых с TM/ST/SE по формату суперкоманд.
Работа  с  новыми  квантумами,  начиная  с  EL,  с  помощью  этой программы
невозможна в принципе.
     Первоначально  программа  писалась  "под  себя",  поэтому  имеет такое
странное  название.  В сообщениях программы используются не совсем красивые
выражения  типа  "облом"  и  "отсосать" - из окончательной версии программы
никто  их  выбрасывать  не  стал,  поскольку  работает  - и ладно. Кого это
ломает - просто не обращайте внимания.

                         3. Подготовка к работе.

     Программа  работает  с  накопителем подключенным к порту Secondary IDE
или   контроллеру   PC3000.  Накопитель  должен  быть  сконфигурирован  как
"master". Для работы на контроллере PC3000 программу необходимо запускать с
параметром "p": cp.exe p.
     Сразу  после  запуска программа выводит на экран паспорт подключенного
накопителя,  количество  физических  головок,  а  также  считывает  с диска
карту модулей и карту зонного распределения (CP10). После этого открывается
приглашение  главного  меню.  Для  получения  информации  о командах в меню
используется клавиша "H".


                        4. Работа с программой.

                           4.1. Главное меню.
    Главное меню содержит в себе следующие подменю и команды:

C - Просмотр и изменение конфигурации
D - Работа с дефектлистом
S - Selfscan
T - Тесты
V - Процедуры работы с секторами данных
Q - Чтение/запись служебки
L - Загрузка микрокода из файла-загрузчика
M - Чтение модулей
E - Старт/Стоп шпинделя
Y - Просмотр/модификация адресного пространства процессора
I - Рестарт микропрограммы
P - Вывод паспорта
H - список команд

    Для навигации в меню и подменю используются соответствующие клавиши,
расположенные слева от названия подменю или команды.

                  4.2. Меню "Просмотр и изменение конфигурации".

    Это меню вызывается из главного меню клавишей "C". Меню содержит в себе
следующие команды:

R - выгрузка всех страниц в файлы
A - выгрузка конкретной страницы в файл
W - загрузка всех страниц из файлов
O - загрузка конкретной страницы из файла
D - дамп страницы
T - переключение режима temporary/permanent
С - вычисление PBA по CHS
Z - печать карты зонного распределения
U - отключение/включение зон
N - печать карты головок
K - отключение/включение головок
L - коррекция логических параметров

     При  входе  в меню на экран выводится приглашение вида "T>". Буква "T"
обозначает,  что  включен  режим  "temporary".  В  этом режиме все операции
чтения/записи   страниц  конфигурации  производятся  в  оперативную  память
подключенного   накопителя,  т.е.  временно,  до  выключения  питания.  Для
опрераций    чтения/записи   в   служебную   зону   накопителя   необходимо
переключиться   в  режим  "permanent".  Переключение  режимов  производится
клавишей  "T".  Приглашение  при  этом  меняется  на  "P>".  Наличие режима
"temporary"  позволяет  "безболезненно"  экспериментировать  с подключенным
накопителем. Так как запись в этом режиме производится только в оперативную
память  накопителя,  в случае его неадекватного поведения достаточно просто
выключить и включить питание.

              4.2.1. Команда "выгрузка всех страниц в файлы".
     Команда  запускается  клавишей  "R".  По  этой  команде с тестируемого
накопителя   в   директорию  из  которой  была  запущена  программа  cp.exe
считываются  все  страницы конфигурации (CP). Каждая страница считывается в
отдельный файл вида: cpXX.cp, где XX - номер соответствующей страницы.
     В  режиме  "temporary"  страницы  считываются  из  оперативной  памяти
накопителя,   в  режиме  "permanent"  -  из  служебной  области,  при  этом
страницы  из  служебной  области  также  загружаются  в оперативную память,
вместо  находившихся  там  ранее.  Таким  образом, если какие-либо страницы
были загружены ранее в режиме temporary, то эти изменения будут потеряны.

            4.2.2. Команда "выгрузка конкретной страницы в файл".

     Команда  запускается  клавишей  "A".  По  этой  команде с тестируемого
накопителя   в   директорию  из  которой  была  запущена  программа  cp.exe
считывается   выбранная   пользователем   страница  конфигурации.  Страница
считывается  в  файл  вида: cpXX.cp, где XX - номер выбранной страницы. При
запуске  этой  команды  на  экран  выводится  запрос  о  номере необходимой
страницы   и  после  ввода  пользователем  номера  производится  считывание
страницы.  По  окончании  считывания  на экран выводится информация о длине
считаной  страницы  в  байтах  и  создается соответствующий файл. Нумерация
страниц начинается с 0, максимальная страница для TM/ST/SE - 25.
     В   режиме  "temporary"  страница  считыватся  из  оперативной  памяти
накопителя, в режиме "permanent" - из служебной области.

             4.2.3. Команда "загрузка всех страниц из файлов".

     Команда  запускается  клавишей  "W".  По  этой  команде на тестируемый
накопитель,  из  директории  из  которой  была  запущена  программа cp.exe,
записываются  все  страницы конфигурации (CP). Каждая страница записывается
из  соответствующего  файла  вида:  cpXX.cp,  где  XX  - номер записываемой
страницы.  При  отсутствии  в директории какого-либо файла(файлов) на экран
выводится сообщение: "отсосать, файл cpXX.cp не найден".
     В  режиме  "temporary"  страницы  записываются  в  оперативную  память
накопителя, в режиме "permanent" - в служебную область.

          4.2.4. Команда "загрузка конкретной страницы из файла".

     Команда  запускается  клавишей  "O".  По  этой  команде на тестируемый
накопитель   из  директории  из  которой  была  запущена  программа  cp.exe
записывается  выбранная  пользователем страница конфигурации (CP). Страница
записывается из файла вида: cpXX.cp, где XX - номер выбранной страницы. При
запуске  этой  команды  на  экран  выводится  запрос  о  номере необходимой
страницы  и  после ввода пользователем номера производится запись страницы.
По  окончании  записи  на  экран  выводится  информация  о  длине записаной
страницы  в  байтах.  При  отсутствии  в  директории файла соответствующего
выбранной странице на экран выводится сообщение: "отсосать, файл cpXX.cp не
найден".
     В  режиме  "temporary"  страницы  записываются  в  оперативную  память
накопителя, в режиме "permanent" - в служебную область.

                   4.2.5. Команда "дамп страницы".

     Команда  запускается  клавишей "D". По этой команде на экран выводится
запрос  о  номере страницы, а после ввода пользователем номера - информация
о длинне страницы (в байтах) и ее дамп.

            4.2.6. Команда "переключение режима temporary/permanent".

     Переключение  осуществляется клавишей "T". На экране при этом меняется
вид приглашения: "T>" или "P>".
     При  выполнении  любых  операций  чтения/записи  страниц  конфигурации
необходимо помнить о наличии режимов temporarry/permanent.

                 4.2.7. Команда "вычисление PBA по CHS".

     Осуществляется  клавишей  "C".  Позволяет пересчитать физические CHS в
PBA.  При  выполнении  этой команды на экран выводятся запросы о физических
цилиндрах,  головках  и  секторах,  а  затем  производится  пересчет в PBA.
Введенные  пользователем  значения  нифига  не  проверяются, можно запросто
ввести  2008  голов  и  все прекрасно пересчитается. Короче говоря глюкало.
Один  из  авторов  этого проекта уже давно предлагал выкинуть этот пункт на
фиг...  ну  или хотя бы доделать ;))). Hо в конечном итоге защиту от дурака
так и не сделали - программа не предназначена для дураков.

             4.2.8. Команда "печать карты зонного распределения".

     Выполняется  клавишей "Z". По этой команде осуществляется считывание с
подключенного  накопителя  карты  зонного  распределения  (CP10) и на экран
выводится   информация   о  зонном  распределении  накопителя.  Анологичная
информация сохраняется в файл "zones.lst".

             4.2.9. Команда "отключение/включение зон".

     Выполняется  клавишей  "U".  По этой команде осуществляется отключение
зон, в соответствии с таблицей зонного распределения. Для накопителей ST/SE
отключаемой  зоне  присваивается SPT=0, для накопителя TM - SPT=1. Т.е. для
накопителя  семейства  TM зона не отключается, а имеет 1 сектор на дорожку.
Такой  алгоритм отключения на TM связан с отличным от ST/SE методом скрытия
дефектов. У накопителей семейства ST/SE (и старше) на каждые 65504 секторов
выделяется  пул  из  32  замещающих  секторов, у TM выделяется 2 замещающих
сектора на цилиндр.
     В  результате  нам  так  и  не  удалось корректно вырезать зону на TM.
Возникают глюки с Selfscan-тестами (на ST/SE вырезанные зоны обрабатываются
корректно),  а  также  с  трансляцией PBA-LBA (то есть в работе по логике).
Вообщем, для TM еще надо разбираться, как правильно отключить зону.
     После   отключения   зоны   автоматически  пересчитываются  логические
параметры  накопителя  и  записываются в служебную зону. Название модели не
корректируется.  Скорректировать  название  модели можно вручную. Для этого
необходимо  считать с накопителя страницу конфигурации #03, отредактировать
ее и записать на накопитель в режиме "permanent".
     При   операциях   отключения/включения   зон  не  используются  режимы
"temporary/permanent",  то  есть  зона вырезается сразу записью в служебную
область.
     Повторное   применение   команды  к  отключенной  зоне  производит  ее
включение.  При  этом  SPT  выключенной  зоны  берется из внутренних таблиц
программы,  основанных  на стандартной карте зон. Так что при нестандартном
зонном распределении включать зоны надо вручную, правкой страницы CP10. Это
относится,  в  частности, к винтам ST 2.1, у которых первые зоны имеют SPT,
меньший,  чем  в  стандартной  карте. Для таких винтов лучше заранее, перед
вырезанием  зон,  выгрузить  страницу  CP10  в  файл и сохранить в надежном
месте.


                  4.2.10. Команда "печать карты головок".

     Выполняется  клавишей  "N".  Выводит  на  экран  информацию  о статусе
физических  головок  накопителя.  Головка может быть активна или отключена.
Головки, физичестки отсутствующие в банке, показываются как отключенные.

                  4.2.11. Команда "отключение/включение головок".

     Выполняется    клавишей    "K".   По   этой   команде   осуществляется
отключение/включение  головок. На экран выводится текущий статус физических
головок,  а  затем запрашивается номер отключаемой/включаемой головки. Если
головка  включена,  то  она  отключается,  если отключена - включается. При
отключении/включении  головок  атоматически корректируются и записываются в
служебную   зону   логические  параметры  накопителя.  Название  модели  не
корректируется.  Скорректировать  название  модели можно вручную. Для этого
необходимо  считать с накопителя страницу конфигурации #03, отредактировать
ее и записать на накопитель в режиме "permanent".
     Корректно  таким  способом можно отключить только головку с наибольшим
номером.  То  есть  в  четырехголовом  накопителе  для отключения головки 2
надо  также отключить и головку 3. Как отключить программно средние головки
- пока хз.
     При   операциях   отключения/включения   головок  используются  режимы
"temporary/permanent".
     Поскольку  имеется  соответствие  между  количеством головок и третьей
цифрой     серийного     номера,     то    при    операциях,    связанных с
отключением/включением головок, эта цифра автоматичски устанавливается в 0.
В  этом случае винт не проверяет соответствие серийного номера и количества
головок.

               4.2.12. Команда "коррекция логических параметров".

     Выполняется  клавишей  "L".  Пишет  на  экран  - "коррекция логических
параметров".  При  этом  из  паспорта  винта считываются текущие логические
параметры и записываются в страницу СP07. Эту операцию следует использовать
после  ручной  правки  карты  зон  или  количества  головок  для корректной
дальнейшей работы винта по логике.


                   4.3. Меню "Работа с дефектлистом".

     Это  меню  вызывается  из  главного меню клавишей "D". Меню содержит в
себе следующие команды:

I - ввод дефекта через Super 10 (старый способ)
N - ввод дефекта через Super 1F (новый способ)
T - просмотр дефекта
C - полная очистка P- и G- дефектлиста
J - очистка серво-дефектлиста
E - очистка дефектлиста от ремапов
R - чтение внутренних дефектлистов
W - запись внутренних P- и G- дефектлистов
O - запись внутреннего серво-дефектлиста
M - перенос G-list в P-list
S - дамп системного дефектлиста
V - просмотр серво-дефектлиста

                4.3.1. Команда "ввод дефекта через Super 10".

     Выполняется  клавишей  "I".  Позволяет ввести дефект с помощью команды
Reassign  Physical,  работающей,  как и стандартная команда Assign. То есть
указанный  сектор ремапится без нарушения текущей структуры транслятора (то
есть  без  разрушения  пользовательских данных в соседних секторах). Дефект
заносится в G-list.

                4.3.2. Команда "ввод дефекта через Super 1F".

     Выполняется  клавишей  "N".  Позволяет  ввести  дефект  прямой записью
дефектлиста  с  помощью команды Reformat In Line. При этом теряется текущий
транслятор,  то есть пользовательские данные съезжают в соседние сектора, и
логическая  структура  диска  теряется.  Однако, при этом дефектные сектора
пропускаются за счет замещающих пулов, то есть дефекты скрываются заводским
способом  (аналогично  тому,  как это делает селфскан в тесте FMT In line).
Это  -  более правильный способ скрытия дефектов, чем Reassign. Кроме того,
этим  способом  можно  скрывать  целые  дорожки  - однако, опять же за счет
резервных  пулов,  что приводит к нерациональному их использованию. Так что
лучше  не  злоупотреблять скрытием дорожек. Следует учесть, что после ввода
хотя  бы одного дефекта винт попытается линеаризовать всю таблицу дефектов,
скрывая все возможные ремапы за счет замещающих пулов.

                4.3.3. Команда "просмотр дефектлиста".

     Выполняется  клавишей  "T".  Эта  команда  позволяет  вывести на экран
список  дефектов подключенного накопителя. Одновременно такая же информация
сохраняется  в  файл  dlist.lst.  В  списке выводится адрес дефекта и адрес
замещающего  сектора,  если  дефект  скрыт  переназначением (ремапом). Если
дефектный  сектор  скрыт  методом  пропуска, то в колонке "ремап" ничего не
появляется.

                4.3.4. Команда "полная очистка P- и G- дефектлиста".

     Выполняется  клавишей  "C".  Позволяет  полностью обнулить P и G листы
подключенного  накопителя.  Полезна  при заливке служебки от другого винта,
для  уничтожения  его  дефектлиста  (не  имеющего  к данному винту никакого
отношения).  Кроме  того,  желательно выполнить эту операцию перед запуском
полного selfscan-скрипта.

                4.3.5. Команда "очистка серво-дефектлиста".

     Выполняется   клавишей   "J".   Позволяет   полностью  обнулить  servo
дефектлист  подключенного  накопителя.  Hам  пока  неизвеста  суперкоманда,
производящая эту операцию (да и есть ли она?), так что очистка производится
простой  перезаписью  соответствующего  сектора  служебки.  Опять же, после
заливки  чужой служебки и перед запуском селфскана следует выполнить данную
команду.


                4.3.6. Команда "очистка дефектлиста от ремапов".

     Выполняется  клавишей "E". Удаляет из дефектлиста все ремапы не трогая
дефекты,  занесенные  в  P-list.  Для  чего ее можно использовать - решайте
сами.  Hам  она  нужна  была  для отладки процедур работы с дефектлистом. А
выбрасывать ее теперь жалко.


                4.3.7. Команда "чтение внутренних дефектлистов".

     Выполняется клавишей "R". По этой команде происходит считывание P, G и
servo  дефектлистов  из  служебной  области  накопителя  в файлы glist.bin,
plist.bin и servo_dl.bin.

            4.3.8. Команда "запись внутренних P- и G- дефектлистов"

     Выполняется  клавишей  "W".  По  этой  команде происходит запись P и G
листов   в  служебную  область  накопителя.  Запись  происходит  из  файлов
glist.bin    и    plist.bin.    Контрольная   сумма   записываемых   файлов
пересчитывается автоматически перед записью. По окончании записи происходит
автоматический перезапуск микропрограммы.
     Следует  учесть,  что формат файлов не проверяется - можно туда залить
что   угодно,  хоть  этот  текст.  И  потом  иметь  геморрой  с  лоадером и
перезаливкой   корректного   листа.   Поскольку  при  неправильном  формате
дефектлиста  поведение винта непредсказуемо - в лучшем случае он сам войдет
в safe mode. В худшем - застучит, и потребуется принудительная Safe mode.

            4.3.9. Команда "запись внутреннего серво-дефектлиста".

     Выполняется  клавишей  "O".  По  этой  команде происходит запись servo
дефектлиста  в  служебную  область  накопителя.  Запись происходит из файла
servo_dl.bin.  По  окончании  записи  происходит  автоматический перезапуск
микропрограммы.

             4.3.10. Команда "перенос G-list в P-list".

     Выполняется  клавишей  "O".  Выполняется  полное  копирование G-list в
P-list  (сектор  в сектор) и затем запуск команды Reformat In Line в режиме
линеаризации  дефетов.  Используется для преобразования ремапов в корректно
пропущенные  заводским способом дефекты. То есть принесли винт с ремапами и
жутким графиком - выполняем эту команду, и, возможно, имеет винт вообще без
ремапов и с совершенно ровным графиком. В идеале. Правда, при этой операции
изменяется  транслятор,  то есть нарушается старое соответствие LBA-PBA, и,
соответственно, нарушается логическая структура диска.
     Операция  возможна  только  на  ST/SE, поскольку на TM G-list и P-list
имеют разную длину.

            4.3.11. Команда "просмотр системного дефектлиста".

     Выполняется   клавишей   "S".  По  этой  команде  на  экран  выводится
содержимое системного дефектлиста (дефекты в служебной зоне).

            4.3.12. Команда "просмотр серво-дефектлиста".

     Выполняется   клавишей   "V".  По  этой  команде  на  экран  выводится
информация  о  дефектных  сервометках  накопителя.  Аналогичная  информация
сохраняется в файл servo.lst.


                      4.4. Меню "Selfscan".

     Это  меню  вызывается  из  главного меню клавишей "S". Меню содержит в
себе следующие команды:

L - загрузка
S - запуск
W - запуск с ожиданием завершения
P - останов
T - просмотр состояния
V - вывод лога в файл sscan.log
D - форматный дамп скриптов SSO-файла в файл sscript.lst
U - разложение SSO-файла на кучку отдельных тестов


                     4.4.1. Команда "загрузка".

     Выполняется   клавишей  "L".  По  этой  команде  в  служебную  область
накопителя  записывается  selfscan-скрипт  из  файла  с расширением SSO (по
умолчанию  stratus.sso).  При  запуске команды на экран выводится запрос на
имя  файла  и  после  ввода  имени  выполняется  запись в служебную область
накопителя.  Если  файла  нет  в  директории  с  программой cp.exe выдается
сообщение:  "Отсосать  -  файла XX нет на диске". Контрольная сумма скрипта
пересчитывается автоматически перед выполнением записи.

                     4.4.2. Команда "запуск".
     Выполняется   клавишей   "S".   По   этой  команде  происходит  запуск
предварительно  загруженного  selfscan  скрипта.  После  запуска  селфскана
происходит  выход  из  программы.  Накопитель  при  этом можно отключить от
тестового  компьютера,  подключить  к  отдельному  блоку питания и оставить
для  выполнения  селфскана.  По  окончании  процедуры  селфскана накопитель
останавливает шпиндель и начинает моргать светодиодом. 1 раз в сек. - FAIL,
3-4 раза в сек. - PASS.

             4.4.3. Команда "запуск с ожиданием завершения".
     Выполняется   клавишей   "W".   По   этой  команде  происходит  запуск
предварительно   загруженного   selfscan  скрипта  с  ожиданием  завершения
выполнения  селфскана.  После  запуска  селфскана  выход  из  программы  не
происходит.  Программа  ожидает завершения выполнения скриптов селфскана, а
затем считывает состояние - PASS или FAIL.

                    4.4.4. Команда "останов".

     Выполняется   клавишей  "P".  В  заголовке  selfscan-модуля  удаляется
ключевое  слово  SELFSCAN  и  заменяется  на  RunNoMor.  Это деактивизирует
селфскан-скрипт и препятствует его дальнейшему автоматическому перезапуску.

                4.4.5. Команда "просмотр состояния".

     Выполняется  клавишей  "T".  Позволяет  просмотреть  результат  работы
селфскана   -   PASS   или   FAIL.  А  также  ключевое  слово  в  заголовке
селфскан-скрипта.

            4.4.6. Команда "вывод лога в файл sscan.log".

     Выполняется  клавишей  "V".  В  вышеуказанный  файл выводится частично
сформатированный   лог   селфскана,  формируемый  им  в  процессе  работы в
специально  выделенной области служебки. Подробно описывать его я не буду -
проще посмотреть и увидеть все своими глазами.

      4.4.7. Команда "форматный дамп скриптов SSO-файла в файл sscript.lst".

     Выполняется  клавишей  "D".  Разбирает  указанный  селфскан-скрипт  на
отдельные  тесты  и  выводит  дамп  каждого  теста.  Полезна  для  изучения
внутренней струкуры selfscan-скрипта.

        4.4.8. Команда  "разложение SSO-файла на кучку отдельных тестов".

     Выполняется  клавишей  "U". Как и предыдущая команда, разбирает скрипт
на  отдельные  тесты, но при этом складывает каждый тест в отдельный файл в
виде  самостоятельного  SELFSCAN-модуля.  Что  позволяет запускать тесты по
одному.  Имя файла формируется в виде Pxx-yy.sso, xx - ID теста, yy - номер
теста  с  одним  и  тем  же  ID  (поскольку  в полном SSO может встретиться
несколько тестов с одним и тем же ID).


                          4.5. Меню "Тесты"

     Тесты  построены  на  основе  отдельных  тестов и процедур из селфскан
скрипта.  Такой  подход  дает  возможность  тестировать накопитель в режиме
"заводского   тестирования",   что   дает   высокую  верность  результатов.
Возможность  запуска  отдельных тестов селфскана предоставляет пользователю
широкие  возможности  для настройки и тестирования накопителя. Все тесты на
основе   селфскан   скриптов  выполняются  в  режиме  "запуск  с  ожиданием
завершения".  Рекомендуемый  порядок  тестирования:  "настройка адаптивов",
"тест сервометок", "скан по физике".

    Меню "Тесты" вызывается из главного меню клавишей "T". Меню содержит
в себе следующие команды:

C - настройка адаптивов
W - тест сервометок
P - скан по физике
L - тесты по логике
S - визуальный скан по физике (без использования Selfscan)
V - вывод форматного лога selfscan в файл sscan.log

                 4.5.1. Команда "настройка адаптивов".

     Выполняется  клавишей  "C".  По  этой команде в тестируемый накопитель
загружается  и  запускается  селфскан скрипт состоящий из тестов и процедур
настройки  адаптивных  параметров.  Результаты  работы  этой  команды можно
просмотреть   командой   V.

                  4.5.2. Команда "тест сервометок".
     Выполняется  клавишей  "W".  По  этой команде в тестируемый накопитель
загружается  и  запускается  селфскан  скрипт состоящий из теста сервометок
(ServoVerify).  В  процессе  тестирования выполняется проверка поверхностей
накопителя  на наличие сбойных сервометок. Во время тестирования координаты
найденых  сбойных  сервометок помещаются во временный серво дефектлист, а в
случае   успешного   окончания  теста  -  в  основной  серво  дефект  лист.
Результаты  работы  этой  команды  можно  просмотреть  командой  "V - вывод
форматного лога selfscan в файл sscan.log". Основной серво дефектлист можно
просмотреть  командой  "V  -  просмотр  серво-дефектлиста" в меню "Работа с
дефектлистом".

                  4.5.3. Команда "скан по физике".
     Выполняется  клавишей  "P".  По  этой команде в тестируемый накопитель
загружается  и  запускается  селфскан скрипт состоящий из теста поверхности
"по   физике"   (P-Scan).  В  процессе  тестирования  выполняется  проверка
поверхностей  накопителя на наличие сбойных секторов. Во время тестирования
координаты  найденых сбойных секторов помещаются во временный дефектлист, а
в  случае  успешного  окончания  теста  -  в P-лист. Результаты работы этой
команды  можно  просмотреть  командой "V - вывод форматного лога selfscan в
файл  sscan.log". Найденные дефекты можно посмотреть командой "T - просмотр
дефекта" в меню "Работа с дефектлистом".

              4.5.5. Команда "визуальный скан по физике
                     (без использования Selfscan)".

     Выполняется  клавишей  "S".  Этот  тест  не  является тестом на основе
селфскана.   Тест  позволяет  быстро  оценить  качество  некторого  участка
поверхности, а также работоспособность отдельных головок. Результаты работы
теста могут быть занесены в дефектлист.
     Следует  учесть,  что этим тестом часто находятся фантомные ошибки, то
есть  ошибки,  проявляющиеся  на секторах, в действительности не являющихся
дефектными.   Природа   этих   ошибок  пока  изучается,  так  что  доверять
результатам этого теста надо с некоторой долей осторожности.

       4.5.6. Команда "вывод форматного лога selfscan в файл sscan.log".

     Выполняется  клавишей  "V".  Аналогична  соответствующей  команде меню
Selfscan.

              4.6. Меню "Процедуры работы с секторами данных".

     Команды этого меню позволяют работать с секторами данных на физическом
уровне.  Возможна работа с секторами данных как в пользовательской области,
так  и  в  служебной.  Для  работы  в  служебной области необходимо вводить
отрицательные цилиндры от -7 до -2.

     Меню  ""Процедуры  работы  с  секторами данных" вызывается из главного
меню клавишей "V". Меню содержит в себе следующие команды:

R - чтение секторов в файл
W - запись секторов данных из файла
T - чтение всей дорожки
F - запись по физике (форматирование) дорожки
K - запись по физике (форматирование) нескольких дорожек
D - дамп сектора
P - запись паттерна
V - чтение и проверка паттерна
X - чтение сектора в цикле


              4.6.1. Команда "чтение секторов в файл".

     Выполняется  клавишей  "R".  При  помощи  этой  команды  можно  читать
содержимое выбранных секторов (в том числе секторов служебной зоны) в файл.
Имя файла по умолчанию sector.bin. При выполнении этой команды пользователю
выдается запрос на номер цилиндра, головки, начального сектора и количества
секторов, а затем содержимое этих секторов считывается в файл.

            4.6.2. Команда "запись секторов данных из файла".

     Выполняется  клавишей "W". Операция является обратной по отношению к R
-  то  есть  берется  указанный  файл,  режется  на  блоки  по  512  байт и
записывается   в   указанные   сектора.   С  помощью  этой  операции  можно
модифицировать и служебную область - будьте осторожны с такими операцями.

                 4.6.3. Команда "чтение всей дорожки".

     Выполняется клавишей "T". В указанный файл считывается содержимое всей
указанной дорожки - с сектора 0 до SPT.

                  4.6.4. Команда "запись паттерна".

     Выполняется  клавишей  "P".  В указанный сектор записывается паттерн -
блок  специального  формата,  содержащий  в  себе  физический  адрес  этого
сектора - цилиндр, голову, сектор и PBA. Формат его такой:

 char p0=0xa5;  // идентификаторы,
 char p1=0x5a;  // показывающие, что блок является паттерном
 int cyl;  // физический цилиндр
 char hd;  // физическая бошка
 int sec;  // физический номер сектора
 long pba; // абсолютный физический адрес сектора - PBA

Остальная часть блока заполняется кодом EE.
     Паттерн  -  очень  полезная  вещь  для  изучения  работы транслятора и
обработчика   дефектлистов   (потом   можно   почитать  винт  по  логике, и
посмотреть,  откуда  какой  паттерн  читается,  затем внести дефект и снова
почитать паттерны).

           4.6.5. Команда "запись по физике (форматирование) дорожки".

     Выполняется   клавишей   "F".   Во   все   сектора  указанной  дорожки
прописывается вышеописанным паттерном.

      4.6.6. Команда "запись по физике (форматирование) нескольких дорожек".

     Выполняется   клавишей   "K".   Команда   аналогична   предыдущей,  за
исключением того, что прописать паттернами можно сразу несколько дорожек.

                    4.6.7. Команда "дамп сектора".

     Выполняется  клавишей  "D".  Просто  позволяет  посмотреть  содержимое
любого сектора в виде дампа.

              4.6.8. Команда "чтение и проверка паттерна".

     Выполняется  клавишей  "V".  По  этой  команде  из  указанного сектора
считывается  паттерн,  записанный  туда  ранее  командами  P,  F  или  K, и
сверяется с физическим адресом сектора. Если то, что записано в паттерне, и
физический адрес не совпадают - выдается сообщение.

                4.6.9. Команда "чтение сектора в цикле".

     Выполняется  клавишей  "X".  Предназначена  для  поиска  линий  выбора
головки  на  шлейфе, идущем в банку, с помощью осциллографа или логического
пробника. Производится бесконечно повторяющееся чтение указанного сектора -
вплоть до нажатия кнопки ESC.
     Команда является базой для экспериментов по перекоммутации головок.

                  4.7. Меню "Чтение/запись служебки".

     Команды   этого   меню   позволяют  считывать  служебную  информацию с
накопителя  в  файл  и  записывать  ее  в накопитель из файла. Формат файла
совместим  с  файлом  ресурса  PC3000. Однако ресурсы не добавляются в файл
ресурсов,  как  на  PC3000, а каждый ресурс пишется в отдельный файл. Кроме
того  следует  отметить,  что  данная программа не рассчитывает контрольную
сумму  ресурса  и  не  проверяет  ее.  Поэтому средствами PC3000 невозможно
залить  в накопитель ресурс считанный этой программой, но в тоже время этой
программой  можно  залить в накопитель ресурс созданный PC3000. Для разбора
файла  ресурсов  PC3000,  состоящего  из  нескольких, можно воспользоваться
программой  ext_rsc.exe.  Так  же  необходимо  добавить,  что по непонятным
причинам,  программисты  АСЕлаб игнорировали сектор 0 дорожки -4, что может
приводить   к   неприятным   последствиям   типа   невозможности  полностью
восстановить  служебку  средствами  РС3000.  Для  устранения этой опасности
сектор  0  дорожки  -4  записывается  в отдельный файл c-4s0.bin. Этот файл
можно записать в служебную зону накопителя командой "запись секторов данных
из  файла  (W)"  из  подменю  "Процедуры работы с секторами данных". Сектор
должен быть прописан по координатам cyl.-4; hd 0,1; sect 0; длинна 1.

    Меню "Чтение/запись служебки" вызывается из главного меню клавишей "Q".
Меню содержит в себе следующие команды:

R - Чтение служебки в файл
W - Заливка служебки из файла
C - полная очистка служебной области

                  4.7.1. Команда "Чтение служебки в файл".

     Выполняется  клавишей  "R".  По  этой  команде  происходит  считывание
секторов  служебной области в файл с расширением RSC (по умолчанию st.rsc).
При запуске команды на экран выводится запрос на имя файла, затем запрос на
краткое  описание  (до  30  символов ASCII), которое помещается в заголовок
ресурса  внутри  файла  (вводить  не обязательно) и происходит считывание в
выбранный файл, затем считывается сектор 0 дорожки -4 в файл c-4s0.bin.

               4.7.2. Команда "Заливка служебки из файла".

     Выполняется   клавишей   "W".  По  этой  команде  происходит  запись в
служебную  область  содержимого  файла  с  расширением  RSC  (по  умолчанию
st.rsc).  При запуске команды на экран выводится запрос на имя файла, затем
краткое  описание,  которое находится в заголовке ресурса внутри файла RSC,
контрольная  сумма  ресурса  и  его длинна. Затем выводится запрос на режим
записи. Возможны два режима:
      S - стандартная, на головы 0 и 1
      U - на указанную голову.
     При выборе режима "S" производится запись по системным головкам 0 и 1.
При  выборе  режима  "U"  запрашивается номер головки и производится запись
только по выбранной головке. При желании запись можно производить не только
по системным головкам, но и по любым присутствующим в накопителе.
     По  окончании  процесса  записи производится автоматический перезапуск
микропрограммы.
     Сектор 0 дорожки -4 по этой команде не записывается. При необходимости
его  можно  записать  командой  "запись  секторов  данных  из файла (W)" из
подменю  "Процедуры работы с секторами данных". Сектор должен быть прописан
по координатам cyl.-4; hd 0,1; sect 0; длинна 1. Источник - файл c-4s0.bin.

            4.7.3. Команда "полная очистка служебной области".

     Выполняется клавишей "C". Все сектора служебной зоны заполняются кодом
00.  Если  после  этого  сделать рестарт или выключить/включить винт, то он
попадет в Safe mode и потребуется загрузка лоадера.
     Данная  операция,  на  первый  взгляд  абсолютно  бессмысленная,  была
сделана  для экспериментов с "чистой служебкой". Суть ее вот в чем. Винт на
заводе приходит с сервоврайтера абсолютно пустым - на нем нет ничего, кроме
сервометок.  Служебки,  разумеется,  тоже нет. Далее служебка формируется с
нуля  с помощью конфигцентра. Мы этот процесс наблюдали для Vortex Bigfoot,
и  попытались то же самое сделать и на ST. Для этого вышеописанной командой
сносится  вся  служебка,  а затем формируется с нуля заливкой лоадера, CP и
других  структур  данных.  Заодно  было  выяснено  назначение  многих полей
служебки.  Вообще  говоря,  стирать  служебку  надо  было командой Super 16
(Erase  TK),  удаляющей  с  дорожки  все  кроме  сервометок.  Однако в силу
некоторых причин это пока не сделано. Если кому надо - пишите, сделаем.
     Мой  коллега  предлагал  выкинуть  эту  команду  из конечного варианта
программы,  но я все же думаю, что кому-нибудь она еще пригодится. Есть еще
у нас экспериментаторы помимо hdd.exe team.

          4.8. Команда "Загрузка микрокода из файла-загрузчика".

     Накопители  фирмы  Quantum  семейства  Fireball  TM/ST/SE поддерживают
режим   safemode.   Это   означает,   что  накопитель  c  поврежденной  или
отсутствующей  информацией в служебной области может проиницилизироваться и
выйти  в  готовность  в  режиме  safemode.  Это,  например,  происходит  на
заводе-изготовителе  при  первом  включении  винта - при этом на нем, кроме
сервометок, ничего больше нет.
     В  режиме  safemode накопитель не реагирует на большинство ATA и Super
команд.  Раньше  в  таком  случае  для  восстановления служебной информации
приходилось    пользоваться   так   называемым   методом   Hot-Swap.   Т.е.
инициализация   проводилась   на  исправном  накопителе,  затем  когда  все
необходимые   для   работы   модули  и  страницы  конфигурации  оказывались
записанными  а  ОЗУ  накопителя,  останавливался  шпиндель и без отключения
питания и шлейфа IDE плата переставлялась на неисправную банку. После этого
запускался  шпиндель  и  производилась  запись  в  служебную область. Такой
способ мог привести к повреждению и платы и банки.
     Однако    накопитель,    находящийся    в    safemode    отвечает   на
документированную команду "download microcode" (92h). По этой команде в ОЭУ
накопителя (а так же и в служебную область) можно загрузить необходимый для
работы  набор  программных модулей. Файл, загружаемый этой командой, обычно
называют   лоадером.   Подробнее  формат  и  работа  лоадера  описывается в
руководстве  по  служебной  области.  Сами  файлы  лоадеров  можно  найти в
программах  фирмы  Quantum  - CFGCNTR, апдейдах фирмвари, а для более новых
моделей  в  переключалках  режимов UDMA. Команда "download microcode" имеет
два  режима  работы  - temporary и permanent, т.е. в ОЗУ и "на блины". Если
винт  находится  в  Safe  mode,  то  загрузка  возможна только в ОЗУ. После
успешной  загрузки  лоадера  винт  производит  рекалибровку  и  переходит в
полнофункциональный режим работы, то есть начинает отвечать на все команды.
     Загрузка на блины (называемая также Firware Update) может производится
только если винт работает в полноценном режиме. В safe mode возможна только
загрузка   в   ОЗУ   (после  которой,  если  повезет,  винт  переключится в
полнофунуциональный   режим).   Hа   блины   лоадер   обычно   грузят   для
восстановления  поврежденных  программных  модулей,  а также для обновления
микропрограммы до более новой версии.
     Также  возможна  ситуация,  когда  винт  при  включении  не  впадает в
safemode,  а  стучит  головами  и не выходит в готовность. Такое, например,
происходит при несовпадении количества физических головок в банке с третьей
цифрой  серийного  номера.  Тогда  винт  необходимо принудительно заставить
войти  в  safe  mode.  Для  этого надо найти на плвате электроники, рядом с
процессором  NEC  78k4, четыре маленькие контактные площадки. Далее следует
замкнуть  две  из  них,  идущие  к ногам 2 и 4 процессора, и включить винт.
После  короткого  "тык"  головами  винт  выходит в готовность в safe mode и
готов к загрузке лоадера. Перемычку теперь можно снять.
     Команда  "Загрузка микрокода из файла-загрузчика" выполняется клавишей
"L"  из  главного  меню. После запуска команды на экран выводится запрос на
имя  файла-лоадера  (по  умолчанию  strata.upd),  а после ввода имени файла
вопрос:
      Куда писать дискварь:
           T - В оперативную память винта (RAMWARE)
           P - В служебную область винта (DISKWARE)

     После  выбора  пользователем  режима происходит чтение файла лоадера и
загрузка его в винт.

                   4.9. Команда "Чтение модулей".

     Команда "Чтение модулей" выполняется клавишей "M" из главного меню. По
этой  команде  происходит  считывание  с  накопителя карты модулей, которая
выводится   на   экран,  а  также  и  самих  программных  модулей,  которые
сохраняются в файлы вида modXX.mod, где XX - номер модуля.

                  4.10. Команда "Старт/Стоп шпинделя".

     Команда  "Старт/Стоп  шпинделя"  выполняется  клавишей "E" из главного
меню.  По  этой  команде  производится  запуск  или  остановка шпиндельного
двигателя  тестируемого  накопителя  с  ожиданием  его полной остановки. На
экран выводится сообщение "Производится остановка шпинделя...", а после его
остановки - "Шпиндель остановлен" (ну или "Производится запуск шпинделя..."
и  "Шпиндель  запущен"). Данная команда может применяться для Hot-Swap'a, к
примеру. Но зачем нам Hot-Swap, если у нас есть лоадер? ;).

     4.11. Меню "Просмотр/модификация адресного пространства процессора".

     Меню    "Просмотр/модификация   адресного   пространства   процессора"
вызывается  из  главного  меню клавишей "Y". Оно предназначено для работы с
информацией,  находящейся  в  адресном пространстве процессора - ROM, RAM и
регистрами внешних устройств.
Меню содержит в себе следующие команды:

D - дамп памяти
W - запись образа памяти в файл
E - модификация памяти

                  4.11.1. Команда "дамп памяти".

     Команда  выполняется  клавишей  "D". Hа экран выводится дамп адресного
пространства,  начиная с указанного адреса. После каждых 256 байт программа
делает  паузу  и предлагает нажать одну из клавиш: ESC - закончить просмотр
дампа,  A  -  больше  не  делать  пауз,  любая  другая  клавиша  - показать
следующий   фрагмент.   В  любом  случае  нажатие  клавиши  ESC  приводит к
немедленному прекращению вывода дампа.

            4.11.2. Команда "запись образа памяти в файл".

     Команда   выполняется  клавишей  "W".  Производится  выгрузка  участка
адресного  пространства  в  файл  memory.bin.  Hачальный  и конечный адреса
задаются  в  последующем  диалоге.  Hапример, для выгрузки ROM надо указать
адреса с 0 по 7FFF.

                4.11.2. Команда "модификация памяти".

     Команда  выполняется  клавишей  "E".  С  помощью  этой  команды  можно
модифицировать  любую ячейку в адресном пространстве, если ячейка поддается
модификации :) Адрес и содержимое ячейки вводятся в дальнейшем диалоге.

               4.12. Команда "Рестарт микропрограммы".

     Команда  выполняется клавишей "I".По этой команде производится рестарт
микропрограммы.  Следует учесть, что рестарт производится командой Super 04
(Call Sub), параметры которой отличаются для разных моделей винтов. Так что
использование  этой  операции для каких-либо винтов, кроме TM/ST/SE, крайне
нежелательно - все равно ничего хорошего не получится.
     Рестарт  -  это  очень  полезная  вещь.  Если  вручную  модифицировать
какое-нибудь  поле  в служебке, то микропрограмма не увидит этих изменений,
пока  не  будет  сделан  рестарт.  Соответственно, после полной перезаливки
служебки рестарт производится программой автоматически.
     При рестарте винт издает не очень приятный звук в виде стука головок -
не  пугайтесь,  это  нормально.  После  этого шпиндель сбрасывает скорость,
затем  снова ее набирает и происходит рекалибровка. Если характерного звука
рекалибровки  не  было  -  значит,  винт  попал в Safe mode. Это может быть
следствием  повреждения  формата  каких-либо  полей  служебки  (например, в
результате  предыдущих  ее  модификаций  :) Дальнейшая работа с винтом поле
этого возможна только после загрузки лоадера.

                    4.13. Команда "Вывод паспорта".

     Команда  выполняется  клавишей "P". По этой команде на экран выводится
паспорт  подключенного  накопителя. Эта же информация появляется при старте
программы.

                         5. Сообщения об ошибках.

     В  случае  неудачного  завершения работы  какой-либо суперкоманды винт
возвращает  код  ошибки,  вызывающий  сообщения типа "облом XX". Также, при
проблемах   запуска   и  инициализации  соответствующий  код  вымаргивается
светодиодом  винта.  Расшифровку  этих  кодов  можно  найти  в *.err-файлах
конфигцентра - tempest.err для TM и stratus.err для ST/SE.

***************************************************************************

     Вот и все, собственно. Пользуйтесь, поднимайте/убивайте винты и пишите
о  результатах.  Hам  очень  интересно  узнать,  что же у вас получилось. В
соответствие  с реакцией общественности и будет принято решение - развивать
проект   дальше  или  забить  на  него  и  делать  только  для  внутреннего
применения. Так что все в ваших руках.

     С авторами можно связаться так:

                        E-mail             Fido

Alexander Stepanov:  forth32@mail.ru     2:5030/541.17
Lova Korjagin:       lova@cef.spbstu.ru  2:5030/541.45

     Hе  забывайте  и  о  нашем  ftp  195.209.232.10: там иногда появляются
интересные вещи. Причем часто без предупреждения.