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

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

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

8. АН=7 — отмена установки будильника.

Функции BIOS Int 15h позволяют программировать таймер CMOS RTC — вводить задержку или запускать таймер установки флага, указывая время в микросекундах (СХ — старшее слово, DX — младшее). Нулевое значение интервала не вызывает никаких действий. Достижимое разрешение в зависимости от производительности ПК может достигать единиц миллисекунд, максимальная выдержка — около 70 часов. Перечисленные ниже номера функций указываются при вызове в регистре АН или АХ.

9. AH=86h — задержка на заданное время. Управление будет возвращено вызвавшему процессу только через указанный интервал. По окончании задержки будет установлен бит 7 в ячейке BDA 0040:00A0. Таймер может оказаться занятым, тогда вызов сразу возвратит флаг CF=1 (при успехе CF=0, а в AL окажется маска, записанная в 8259А#2).

10. AX=8300h — запуск таймера, устанавливающего флаг после указанной задержке бит 7 в ячейке, заданной регистрами ES:BX. При успешном запуске CF=0; если таймер занят (он один) — CF=1 и AL=0. Управление возвращается процессу сразу, а флаг будет установлен через заданное время. Перед завершением программа, запускавшая таймер, должна его сбросить функцией 8301h (во-первых, чтобы освободить; во-вторых, чтобы снять «адскую машинку», которая неожиданно сама может изменить значение ячейки памяти, вполне возможно уже задействованную другим, ничего не «подозревающим» процессом).

11. AX=8301h — сброс того же таймера.

12.8.7. PCI BIOS

Функции PCI BIOS используются только для поиска и конфигурирования устройств PCI — процедур, требующих доступа к их конфигурационному пространству (см. п. 8.2). Регулярная работа с этими устройствами выполняется через обращения к регистрам устройств по адресам, полученным при конфигурировании, и обработке известных номеров прерываний от этих устройств. Для 16-битного интерфейса реального режима, V86 и 16-битного реального режима, функции PCI BIOS вызываются через прерывание Int 1Ah; номер функции задается при вызове в регистре АХ. Возможна и программная имитация прерывания дальним вызовом по физическому адресу 000FFE6EH (стандартная точка входа в обработчик Int 1Ah) с предварительным занесением в стек регистра флагов.

Признаком нормального выполнения является CF=0 и АН=0; при CF=1 АН содержит код ошибки:

♦ 81h — неподдерживаемая функция;

♦ 83h — неправильный идентификатор производителя;

♦ 86h — устройство не найдено;

♦ 87h — неправильный номер регистра PCI.

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

♦ АХ = B101h — проверка присутствия PCI BIOS. При наличии PCI BIOS возвращает CF=0, АН=0 и EDX=20494350h (строка символов "PCI "); проверяться должны все три признака. При этом в AL находится описатель аппаратного механизма доступа к конфигурационному пространству и генерации специальных циклов PCI:

 • Бит 0 — поддержка механизма № 1 для доступа к конфигурационному пространству;

 • Бит 1 — поддержка механизма № 2 для доступа к конфигурационному пространству;

 • Биты 2:3=00 (резерв);

 • Бит 4 — поддержка генерации специального цикла по механизму № 1;

 • Бит 5 — поддержка генерации специального цикла по механизму № 2;

 • Биты 6:7=00 (резерв).

В регистрах ВН и BL возвращается старший и младший номер версии (BCD-цифры), в CL — максимальный номер шины PCI, присутствующий в системе (число шин +1, поскольку они нумеруются с нуля последовательно). В регистре EDI может возвращаться линейный адрес точки входа 32-разрядных сервисов BIOS. Этот адрес возвращается не всеми версиями BIOS (некоторые не изменяют EDI); для проверки можно при вызове обнулять EDI и проверять на нуль возвращенное значение.

♦ АХ = B102h — поиск устройства по идентификатору. При вызове в СХ указывается идентификатор устройства, в DX — идентификатор производителя, в SI — индекс (порядковый номер) устройства. При успешном возврате в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции. Для нахождения всех устройств с указанными идентификаторами вызовы выполняют, последовательно инкрементируя SI от 0 до получения кода возврата 86h.

♦ AX = B103h — поиск устройства по коду класса. При вызове в ЕСХ[23:16] указывается код класса, в ЕСХ[15:8] — подкласса, в ЕСХ[7:0] — интерфейс, в SI — индекс устройства (аналогично предыдущему). При успешном возврате в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции.

♦ АХ = B106h — генерация специального цикла PCI. При вызове в BL указывается номер шины, в EDX — данные специального цикла.

♦ АХ = В108h — чтение байта конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (0-FFh). При успешном возврате в CL — считанный байт.

♦ АХ = B109h — чтение слова конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (0-FFh, четный). При успешном возврате в СХ — считанное слово.

♦ АХ = В10Ah — чтение двойного слова конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (0-FFh, кратный 4). При успешном возврате в ЕСХ — считанное двойное слово.

♦ АХ = B10Bh — запись байта конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (0-FFh), в CL — записываемый байт.

♦ АХ = B10Ch — запись слова конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (0-FFh, четный), в СХ — записываемое слово.

♦ АХ = B10Ah — запись двойного слова конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (0-FFh, кратный 4), в ЕСХ — записываемое двойное слово.

12.9. Расширения ROM BIOS

В микросхеме ROM BIOS, установленной на системной плате, поддерживаются только стандартные (по назначению и реализации) устройства. При необходимости дополнительные устройства, устанавливаемые в слоты шин расширения (ISA, PCI, PCMCIA), могут иметь микросхемы ПЗУ своей программной поддержки — Additional ROM BIOS (дополнительные модули ROM BIOS), они же Expansion ROM. Эта необходимость возникает, когда программная поддержка устройств требуется до загрузки ОС и прикладного ПО. В таком модуле может содержаться и вся программа функционирования специализированного бездискового контроллера на базе PC. Расширения ROM BIOS используют графические адаптеры EGA/VGA/SVGA, некоторые контроллеры жестких дисков, контроллеры SCSI, сетевые адаптеры с удаленной загрузкой и другие периферийные устройства. Для модулей расширения устройств с шиной ISA в пространстве памяти зарезервирована область C8000h-F4000h. POST сканирует эту область с шагом 2 Кбайт в поисках дополнительных модулей BIOS на завершающем этапе выполнения (после загрузки векторов прерываний указателями на собственные обработчики). Дополнительный модуль BIOS графического адаптера (EGA, VGA, SVGA…) имеет фиксированный адрес C0000 и инициализируется раньше (на шаге инициализации видеоадаптера). Устройства с шиной PCI в своем конфигурационном пространстве содержат лишь признак использования модуля расширения, а его приписку к адресам памяти назначает POST.

Дополнительный модуль ROM BIOS должен иметь заголовок, выровненный по границе 2-килобайтной страницы памяти, формат заголовка ПЗУ иллюстрирует табл. 12.8.

Таблица 12.8. Заголовок модуля дополнительного ПЗУ

Смещение Длина Назначение 0 2 Сигнатура (признак начала модуля): байт 0=55h, байт 1=AAh 2 1 Длина, указанная в блоках по 512 байт 3 3 Точка входа процедуры инициализации, заканчивающейся дальним возвратом Ret Far (вызывается инструкцией Far Call во время POST). Обычно здесь располагается трехбайтная инструкция JMP, указывающая на начало процедуры 6-17h   Резерв 18h 2 Указатель на структуру данных PCI (только для карт PCI), см. ниже п. 12.9.1 1Ah 2 Указатель на структуру расширенного заголовка карт ISA PnP, см. ниже п. 12.9.2

В традиционном заголовке присутствовали только первые 3 поля, указатели на структуры PCI и ISA PnP ввели позже. Корректным считается модуль, начинающийся с признака AA55h (значения слова с учетом порядка байтов) и нулевой суммой (по модулю 256) всех байтов в объявленной области (реальная длина модуля может превышать объявленную, но байт контрольной суммы, естественно, должен входить в объявленную область).

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

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

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


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

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


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

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

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


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