Kniga-Online.club
» » » » Михаил Гук - Аппаратные интерфейсы ПК. Энциклопедия

Михаил Гук - Аппаратные интерфейсы ПК. Энциклопедия

Читать бесплатно Михаил Гук - Аппаратные интерфейсы ПК. Энциклопедия. Жанр: Компьютерное "железо" издательство -, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

12.8.3. Int 13h — поддержка дисков

Функции дискового сервиса вызываются программным прерыванием Int 13h.

Традиционно дисковый сервис подразделяет физические диски на дискеты (diskette) и фиксированные диски (fixed disk). Набор функций (табл. 7.8) для этих классов устройств несколько различается как по составу, так и по реализации. Классы различаются по диапазонам номеров физических устройств: для дискет отводятся номера 0-7Fh (реально только 0–3), а для фиксированных дисков — 80h-FFh.

Контроллеры дисковых интерфейсов, имеющие в своем составе дополнительные модули BIOS, перехватывают вектор Int 13h, беря на себя обслуживание своих устройств. Когда в IBM PC/XT появились жесткие диски со своим контроллером, модуль BIOS этого контроллера, инициализирующийся во время теста POST, вставал на место Int 13h, а указатель на исходный обработчик дискового сервиса (драйвер НГМД из системной BIOS) сохранялся на месте Int 40h. Хотя поддержка жестких дисков давно уже включена в системную BIOS, ради совместимости возможность использования прерывания Int 40h для вызова драйвера гибких дисков сохраняется. Интерфейс этого вызова совпадает с Int 13h, но номер устройства (в регистре DL) не должен превышать 7Fh.

Кроме функций дискового сервиса (Int 13h) c дисковыми устройствами связаны еще и векторы, обслуживающие аппаратные прерывания от контроллера НГМД — Int 0Eh (линия IRQ 6) и от контроллера жестких дисков — Int 76h (линия IRQ 14). При наличии двухканального порта ATA второй канал обычно задействует линию IRQ 15 (вектор 77h). В XT контроллер жестких дисков занимал линию IRQ 5 (вектор 0Dh). Дополнительные контроллеры дисков могут использовать и другие прерывания. Аппаратные прерывания вырабатываются контроллерами по завершении (нормальному и аварийному) внутренних операций. На эти прерывания BIOS не реагирует, а при инициализации их векторы направляются на программную заглушку (инструкцию IRET).

Стандартные драйверы дисковых функций BIOS (включая и расширенный сервис) имеют однозадачное происхождение. Во время выполнения функции значительное процессорное время может затрачиваться на ожидание завершения операции устройством. Драйверы многозадачного режима построены иначе: у них есть вызывающая часть, инициализирующая начало операции, и обработчик аппаратного прерывания от контроллера, сообщающий операционной системе о выполнении операции и результате.

Традиционный сервис BIOS

Традиционный дисковый сервис работает в 16-разрядном режиме процессора, все параметры вызова передаются через регистры процессора. Адрес сектора задается в системе CHS и размещен весьма специфично. Сервис вызывается программным прерыванием Int 13h, при вызове принимаются следующие соглашения:

♦ номер функции задается в регистре АН и не должен превышать 3Fh;

♦ логический номер диска задается в регистре DL (бит 7 = 0 — признак обращения к НГМД);

♦ номер цилиндра (0-1023) задается в регистре СН (младшие 8 бит) и CL[7:6] (старшие 2 бита);

♦ номер головки (0-255) задается в регистре DH;

♦ номер начального сектора (1-63) задается в регистре CL[5:0];

♦ количество секторов, участвующих в операции, 8 бит — в регистре AL (0-255);

♦ указатель на начало буфера оперативной памяти для считываемых и записываемых данных (address of buffer) — в регистрах ЕS:BX;

♦ результат выполнения операции определяется по флагу переноса: СF = 0 — успешное выполнение операции, CF = 1 — обнаружены ошибки (код состояния возвращается в регистре АН, код завершения последней операции с дискетами хранится по адресу 40:41h, с жесткими дисками — 40:74h);

♦ таблица параметров диска для дискет (DPT) задана указателем в памяти по адресу 0:78h, для жестких дисков (HDPT) — 0:104h или 0:118h.

Список функций традиционного сервиса приведен в табл. 12.7, подробнее они описаны в [4, 9]. Устройства могут не поддерживать некоторые функции, о чем драйверы должны «честно сообщить» кодом возврата 01h.

Таблица 12.7. Функции традиционного дискового сервиса

Номер функции АН Назначение параметров Использование регистров указателей и таблиц DL DH, CL, CH AL ES: BX DPT/HDPT 00h Reset Disk System — сброс дисковой системы (всех контроллеров и устройств), позиционирование на нулевой цилиндр - - - - - 01h Read Status of Last Operation — чтение состояния последней операции + - - - - 02h Read Sectors into Memory — чтение секторов с диска в память + + + + + 03h Write Sectors from Memory — запись секторов из памяти на диск   + + + + 04h Verify Sectors — верификация секторов (холостое чтение без записи в память и проверка CRC/ECC) + + + - + 05h Format Desired Track — форматирование трека + + + + + 08h Get Drive Parameters — получение параметров диска +³ +³ +³ - +³ 09h¹ Initialize Drive Parameters — инициализация таблиц параметров диска + - - - + 0Ah¹ Read Long — «длинное» чтение (сектор и поле ЕСС) + + + + + 0Bh¹ Write Long — «длинная» запись (сектор и поле ЕСС) + + + + + 0Ch¹ Seek — поиск цилиндра + + - - - 0Dh¹ Alternative Disk Reset — альтернативный сброс (не затрагивая контроллера дискет) + - - - - 10h¹ Test Drive Ready — проверка готовности + - - - - 11h¹ Recalibrate — рекалибровка (позиционирование на нулевой цилиндр) + - - - - 14h¹ Controller Internal Diagnostics — диагностика контроллера жестких дисков - - - - - 15h Read DASD Туре — получение типа диска: АН=0 — нет диска; АН=1 — дискета, без датчика смены диска; АН=2 — дискета, с датчиком смены диска; АН=3 — жесткий диск; иные значения — код ошибки. CX: DX содержат число 512-байтных секторов на диске + - - - - 16h² Diskette Change Line Status — проверка статуса смены дискеты: CF=0: АН=0 — смены носителя не было; CF=1: AH=1 — недопустимый номер диска; АН=6 — была смена диска или определение смены не поддерживается; AH=80h — дисковод не готов или не установлен; иные значения — код ошибки + - - - - 17h² Set Diskette Type for Format — установка типа дискеты для форматирования (перед форматированием) +   +³     18h² Set Media Type for Format — установка типа носителя (для форматирования) + +³ - - - 20h² Get Media Type — получение типа установленного носителя + - - - - 24h¹ Set Multiple Mode — установка параметров режима многосекторного обращения (в AL — число секторов за операцию) + - + - - 25h¹ Identify Drive ATA — идентификация накопителя (только для ATA-дисков) + - - + -

¹ Только для фиксированных дисков.

Перейти на страницу:

Михаил Гук читать все книги автора по порядку

Михаил Гук - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Аппаратные интерфейсы ПК. Энциклопедия отзывы

Отзывы читателей о книге Аппаратные интерфейсы ПК. Энциклопедия, автор: Михаил Гук. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*