Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Драйвер жесткого диска

 і           і                                           і(байт)і
 ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
 і  АМ       і Адресный маркер                           і  4   і
 і  ИНТ1     і Интервал                                  і 9-12 і
 ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
 і           і       Поле идентификации:                 і      і
 і  СИНХ1    і Синхробайт                                і  1   і
 і  ИНТ2     і Интервал                                  і  2   і
 і  СРВ      і Байт для сравнения                        і  1   і
 і  ЦСБ      і Старший байт номера цилиндра              і  1   і
 і  ЦМБ      і Младший байт номера цилиндра              і  1   і
 і  ГЛВ      і Номер головки                             і  1   і
 і  СЕКТ     і Номер сектора                             і  1   і
 і  ФЛАГ     і Флаговый байт                             і  1   і
 і  НУЛЬ     і Нулевой байт                              і  1   і
 і  КС1      і Контрольная сумма поля идентификации      і  4   і
 ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
 і  ИНТ3     і Интервал                                  і  16  і
 ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
 і           і       Область данных:                     і      і
 і  СИНХ2    і Синхробайт                                і  1   і
 і  ИНТ4     і Интервал                                  і  2   і
 і  ДАННЫЕ   і Поле данных                               і  512 і
 і  КС2      і Контрольная сумма поля данных             і  4   і
 ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
 і  ИНТ5     і Интервал                                  і  43  і
 АДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДЩ

      Начало   сектора   обозначается   при   помощи   уникальной
комбинации,  называемой  адресным   маркером.  Пять  интервалов,
обозначенных в  таблице ИНТ1 - ИНТ5,  заполняются нулями, причем  длина
ИНТ2  и ИНТ4 постоянна  и равна 2  байтам, в то  время как  ИНТ1, ИНТ3 и
ИНТ5 могут иметь разную длину, немного отличающуюся  от   значений,
приведенных   в  таблице.   Эти  три   интервала   предназначены  для
подготовки  накопителя к  считыванию (записи)  следующей за  ним области, а
 различие в длине  объясняется тем,  что   адресный  маркер,   поле
идентификации   и  данные  могут  записываться в  разное время поверх
ранее имевшейся информации,  что   не  обеспечивает   точного  совпадения
физической  длины  записанной  области и  ранее  имевшейся  на этом  месте
области.
 Отличия в длине могут  составлять несколько бит, чем объясняется  наличие
 после  после   интервалов  синхробайта,   позволяющего  определить
истинную  начальную   границу  области  и  правильно  сгруппировать  все
последующие  биты по  байтам. Байт  СРВ имеет  постоянное  значение  для
всех   секторов  и  используется  для  проверки  правильности считывания
поля идентификации.  Флаговый  байт  содержит   служебную  информацию,  в
частности  отмечает  дефектность сектора, если он не пригоден для записи.
Контрольные  суммы служат для проверки  правильности считывания информации
из  поля  идентификации и  области данных  и вычисляются специальным
генератором кодов коррекции ошибок  (Error Correction Code, ECC)  с
производящим полиномом 32-й степени.

               Контроллер жестких дисков для АТ-подобных ПЭВМ

      IBM PC  AT отличается от  всех предыдущих моделей  IBM PC и
совместимых ПЭВМ в следующем:

      -  стандартный BIOS  обеспечивает возможность  работы как с
накопителями на гибких, так и с накопителями на жестких дисках;
      - контроллеры жестких и  гибких дисков расположены на одной  плате;
      -  адреса портов  ввода-вывода, предназначенных  для управления
жестким  диском, и назначение  портов полностью отличаются  от ХТ-подобных
ПЭВМ.

      Возможно  подключение к  одному ПЭВМ  двух жестких  дисков.  Каждый
диск имеет  свой набор  портов (1F0h-1F7h  для первого и  170h-177h для
второго). Ниже  будут описаны порты только первого
 диска. Назначение портов второго диска аналогично первому.


                        Описание портов ввода-вывода
      Порт 1F0h
      Предназначен   для   обмена   данными   с   внутренним  ОЗУ
контроллера,  являющимся промежуточным  звеном между оперативной  памятью
ПЭВМ и накопителем.

      Порт 1F1h.
      При  чтении через  этот  порт  можно получить  информацию о
последней возникшей ошибке:

   7   6   5   4   3   2   1   0
 ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
 і   і   і 0 і   і 0 і   і   і   і Бит:
 АДВДБДВДБДДДБДВДБДДДБДВДБДВДБДВДЩ ДДДД
   і   і       і       і   і   АД>0: 1=адресный маркер  данных не
   і   і       і       і   і           найден
   і   і       і       і   АДДДДД>1: 1=ошибка на нулевой  дорожке
   і   і       і       АДДДДДДДДД>2: 1=выполнение команды прекра-
   і   і       і                     щено  программно,  команда
   і   і       і                     не завершилась
   і   і       АДДДДДДДДДДДДДДДДД>4: 1=идентификатор  сектора  не
   і   і                             найден
   і   АДДДДДДДДДДДДДДДДДДДДДДДДД>6: 1=неисправимая ошибка в дан-
   і                                 ных,  ошибка   контрольной
   і                                 суммы
   АДДДДДДДДДДДДДДДДДДДДДДДДДДДДД>7: 1=дефектный сектор

      Порт 1F2h.
      Чтение/запись числа секторов для последующей операции.

      Порт 1F3h.
      Чтение/запись  параметра  "номер  сектора"  для последующей
 операции.

      Порт 1F4h.
      Чтение/запись старших битов номера цилиндра для последующей  операции
 (биты 0  - 1  - это  биты 8  - 9  в 10-битовом  номере  цилиндра).

      Порт 1F5h.
      Чтение/запись  младших  восьми  битов  номера  цилиндра для
последующей операции.

      Порт 1F6h.
      Чтение/запись номера  устройства и головки  для последующей
операции.

      Порт 1F7h (запись).
      Вывод команды по управлению накопителем.

      Порт 1F7h (чтение).
      Чтение   состояния  накопителя   и  результатов  предыдущей  команды:

   7   6   5   4   3   2   1   0
 ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
 і   і   і   і   і   і   і   і   і Бит:
 АДВДБДВДБДВДБДВДБДВДБДВДБДВДБДВДЩ ДДДД
   і   і   і   і   і   і   і   АД>0: 1=предыдущая команда  завер-
   і   і   і   і   і   і   і         шилась с ошибкой
   і   і   і   і   і   і   АДДДДД>1: 1=сигнал "индекс"
   і   і   і   і   і   АДДДДДДДДД>2: 1=данные при выполнении пос-
   і   і   і   і   і                 ледней операции были скор-
   і   і   і   і   і                 ректированы   при   помощи
   і   і   і   і   і                 алгоритма ECC
   і   і   і   і   АДДДДДДДДДДДДД>3: 1=идет процесс обмена данными
   і   і   і   АДДДДДДДДДДДДДДДДД>4: 1=поиск завершен
   і   і   АДДДДДДДДДДДДДДДДДДДДД>5: 1=ошибка записи
   і   АДДДДДДДДДДДДДДДДДДДДДДДДД>6: 1=устройство готово для чте-
   і                                 ния, записи или поиска
   АДДДДДДДДДДДДДДДДДДДДДДДДДДДДД>7: 1=устройство занято выполне-
                                     нием  команды  ( остальные
                                     биты  не  несут  смысловой
                                     нагрузки)

                               Система команд
      Код  команды   заносится  в  порт  1F7h   после  того,  как
подготовлены  все параметры  в  портах  1F2h -  1F6h. Выполнение  команды
начинается  сразу  после  занесения  в  порт  1F7h кода  команды.  Команда
состоит  из  одного  байта.  Старшие  4  бита  содержат  код  требуемой
операции,  младшие содержат параметры.  Перечень  команд с  возможными
значениями  параметров приведен в  таблице.

 ЪДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 і  Код   і     Назначение        і         Параметры           і
 іоперацииі                       і                             і
 ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
 і   1    і Рекалибровать (сброс  і Период импульсов сигнала    і
 і        і головок на цилиндр 0) і "шаг"                       і
 ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
 і   2    і Чтение секторов       і Биты, определяющие необходи-і
 ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ мость повторных обращений   і
 і   3    і Запись секторов       і к диску и повторных попыток і
 ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ считывания при ошибках      і
 і   4    і Проверка секторов     і контрольной суммы           і
 ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
 і   5    і Форматирование дорожкиі Параметр = 0                і
 ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
 і   7    і Поиск цилиндра        і Период импульсов сигнала    і
 і        і                       і "шаг"                       і
 ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
 і   9    і Диагностика           і Параметр = 0                і
 і        ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
 і        і Установка параметров  і Параметр = 1                і
 і        і накопителя (максималь-і                             і
 і        і ное число головок и   і                             і
 і        і секторов)             і                             і
 АДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

 Для получения информации о жёстких дисках, а также их самодиагностики
необходимо программировать IDE контроллер. Для того, чтобы приведённый
исходный текст модуля был более или менее понятен, необходимо разъяснить
некоторые принципы программирования IDE контроллера. Базовый порт
ввода/вывода для первого IDE контроллера - 1F0h. Ещё я использовал порт
контроля (3F6h) для сброса состояния контроллера. Для сброса контроллера
служит функция hd_reset(). Так как контроллер генерирует запрос на
прерывание IRQ14, то е
12345След.
скачать работу

Драйвер жесткого диска

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ