МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Драйвер жесткого диска

    Приведем формат слова состояния устройства:

    |Би|Назначение |

    |т | |

    |0-|Код ошибки устройства (если команда выполнена с ошибкой и драйвер установил |

    |7 |признак ошибки (бит 15) в единицу, в это поле он должен записать код ошибки). |

    |8 |Команда выполнена. Этот бит всегда устанавливается драйвером перед тем, как он |

    | |возвращает управление операционной системе. |

    |9 |Занято. Этот бит устанавливается обработчиком команды, когда физическое |

    | |устройство занято выполнением предыдущей операции и поэтому не может выполнить |

    | |требуемую команду. Этот бит используется также для передачи такой информации, |

    | |как "буфер клавиатуры не пуст", "среда носителя данных заменяемая" (в команде |

    | |проверки возможности замены среды носителя данных). |

    |10|Зарезервировано. |

    |-1| |

    |4 | |

    |15|Признак ошибки. Устанавливается драйвером, когда он не может обработать запрос |

    | |или произошла физическая либо логическая ошибка при обработке правильного |

    | |запроса. Биты 0-7 при этом должны содержать код ошибки. |

    Приведем таблицу возможных кодов ошибок:

    |Ко|Описание |

    |д | |

    |0 |Нарушение защиты от записи. Была предпринята попытка записи информации на |

    | |защищенное от записи устройство. |

    |1 |Неизвестное устройство. |

    |2 |Устройство не готово. |

    |3 |Неизвестная команда. Затребованная команда не поддерживается драйвером. |

    |4 |Ошибка CRC. При выполнении команды обнаружена ошибка циклического кода |

    | |проверки. |

    |5 |Неправильная длина запроса. Поле длины в заголовке запроса содержит неверное |

    | |значение. |

    |6 |Ошибка при поиске дорожки (дорожка не найдена). |

    |7 |Неизвестный носитель данных. |

    |8 |Сектор не найден. |

    |9 |Нет бумаги в принтере. |

    |0A|Ошибка записи. |

    |h | |

    |0B|Ошибка чтения. |

    |h | |

    |0C|Общая ошибка. |

    |h | |

    |0D|Зарезервировано. |

    |h | |

    |0E|Зарезервировано. |

    |h | |

    |0F|Неразрешенная замена диска (только для DOS версии 3.0 и более поздних версий).|

    |h | |

    Общая схема действий программы прерывания драйвера такова:

    . получив управление от операционной системы, программа прерывания

    сохраняет содержимое всех регистров процессора и считывает номер

    команды из заголовка запроса;

    . при необходимости программа считывает дополнительную информацию из

    области запроса;

    . затребованная команда выполняется (если она поддерживается драйвером);

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

    устройства для передачи их DOS, то сами данные или их адреса программа

    прерывания записывает в область запроса;

    . программа прерывания устанавливает слово состояния устройства в

    соответствии с результатами выполнения команды (если драйвер не

    поддерживает затребованную команду, в слове состояния устройства

    устанавливаются биты 15 и в биты 0-7 записывается код ошибки 3 -

    неизвестная команда);

    . восстанавливается содержимое регистров процессора, и управление

    возвращается операционной системе с помощью команды возврата из

    дальней процедуры.

    Инициализация драйвера

    Эта функция выполняется только один раз при загрузке драйвера и подключении

    его к операционной системе.

    Функция инициализации должна поддерживаться любым драйвером, так как она

    сообщает операционной системе сведения, необходимые DOS для правильного

    подключения и использования драйвера.

    Приведем формат запроса для команды инициализации:

    |(0)|head|Заголовок запроса. |

    |13 |er | |

    |(+1|n_un|Количество устройств, обслуживаемых драйвером. Это поле заполняется |

    |3) |its |только блочным драйвером. |

    |1 | | |

    |(+1|end_|Конечный FAR-адрес резидентной части кода драйвера. В это поле драйвер |

    |4) |addr|записывает адрес байта памяти, следующего за той частью кода драйвера, |

    |4 | |которая должна стать резидентной. |

    |(+1|parm|FAR-адрес строки параметров инициализации драйвера из файла CONFIG.SYS. |

    |8) | |Эта строка содержит все, что находится в строке файла после команды |

    |4 | |'DEVICE=', она заканчивается символами перевода строки и возврата |

    | | |каретки 0Ah, 0Dh. При возврате драйвер блочного устройства должен |

    | | |записать в это поле адрес массива указателей на блоки параметров |

    | | |BIOSBIOS (BPB), по одному указателю на каждое устройство, обслуживаемое |

    | | |драйвером. |

    |(+2|driv|Номер устройства. Для версии DOS 3.0 и более поздних версий в это поле |

    |2) |e |при загрузке драйвера операционная система заносит номер, назначенный |

    |1 | |устройству, обслуживаемому драйвером. Например, для устройства А: это 0,|

    | | |для B: - 1 и т.д. |

    При инициализации драйвер символьного устройства сохраняет в своей

    внутренней области данных параметры инициализации, используя адрес parm.

    Если параметры содержат числовые величины, программа инициализации может

    произвести их перекодировку и сохранить значения в двоичном формате.

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

    устройства ввода/вывода, инициализацию своих внутренних переменных, вывести

    на экран какие-либо сообщения либо даже запросить у оператора

    дополнительные данные - функция инициализации может пользоваться для

    организации диалога с оператором и других действий функциями прерывания 21h

    с номерами от 01h до 0Ch, 25h, 30h, 35h и функциями BIOS.

    Кроме этого, драйвер должен заполнить поле end_addr адресом конца

    резидентной части драйвера. Так как программа инициализации выполняется

    только один раз, обычно ее располагают в конце драйвера и для экономии

    памяти не оставляют резидентной.

    Драйверы блочных устройств дополнительно должны возвратить DOS количество

    обслуживаемых устройств (в поле n_units) и указатель на массив указателей

    на блоки BPB (в поле parm).

    Количество устройств используется DOS для определения логических имен

    устройств. Например, если Ваш драйвер обслуживает три логических

    устройства, и на момент его загрузки в системе имеются устройства A:, B: и

    C:, то устройства, обслуживаемые Вашим драйвером, получат имена D:, E: и

    F:. Количество устройств необходимо указывать также и в заголовке драйвера,

    в первом байте поля имени устройства dev_name.

    Для каждого логического устройства драйвер должен содержать так называемый

    блок параметров BIOS (BIOS Parameter Block) BPB.

    Блок BPB содержится в загрузочном секторе диска и содержит информацию,

    необходимую BIOS для работы с диском. Приведем формат BPB:

    |(0) |sect|Количество байтов в одном секторе диска. |

    |2 |_siz| |

    |(+2)|clus|Количество секторов в одном кластере. |

    |1 |tsiz| |

    |(+3)|res_|Количество зарезервированных секторов. |

    |2 |sect| |

    |(+5)|fat_|Количество таблиц FAT. |

    |1 |cnt | |

    |(+6)|root|Максимальное количество дескрипторов файлов, |

    |2 |_siz|содержащихся в корневом каталоге диска. |

    |(+8)|tot_|Общее количество секторов на носителе данных (в разделе|

    |2 |sect|DOS). |

    |(+10|medi|Байт-описатель среды носителя данных. |

    |) 1 |a | |

    |(+11|fat_|Количество секторов, занимаемых одной копией FAT. |

    |) 2 |size| |

    Приведем фрагмент исходного текста драйвера, возвращающего при

    инициализации указатель на массив BPB:

    lea dx,bpb_ptr

    mov es:[bx+18],dx

    mov es:[bx+20],cs

    . . . . . . . . . .

    В этом примере предполагается, что ES:BX содержит адрес заголовка запроса.

    Разметка диска

    Данные на жесткий диск записываются в секторах. Сектора

    располагаются на дорожках. Нумерация дорожек начинается с внешней

    стороны пластины (там расположена нулевая дорожка). Количество пластин

    (дисков) и головок, так же как и максимальное число дорожек, могут

    колебаться в довольно широких пределах и зависят от типа конкретного

    накопителя. Дорожка обычно содержит от 8 до 26 секторов и для

    данного конкретного накопителя число секторов на дорожке постоянно.

    Начало дорожки определяется сигналом "индекс", который

    генерируется накопителем при каждом обороте диска. Далее следует первый

    сектор дорожки. Второй сектор будет отстоять от первого на число

    секторов, равное значению фактора чередования минус 1, третий еще на

    столько же и т. д. Таким образом при факторе

    чередования равном 3, сектора на 17-секторной дорожке будут

    располагаться следующим образом:

    ЪДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДї

    і 1і 7і13і2 і8 і14і3 і9 і15і4 і10і16і 5і11і17і 6і12і

    ГДДБДДБДДБВДБДДБДДБВДБДДБДДБДДБДДБДДБДДБДДБДДБДДБДДґ

    і і фактор і і

    і ічер-ния і і

    іі индекс --> і

    Формат сектора приведен в таблице.

    ЪДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДї

    іОбозначениеі Назначение іДлина і

    і і і(байт)і

    ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ

    і АМ і Адресный маркер і 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=данные при выполнении пос-

    Страницы: 1, 2, 3


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.