Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
50
Добавлен:
20.05.2015
Размер:
619.52 Кб
Скачать

Тема 9. Периферийные устройства

Лекция 18. Периферийные устройства.

1. Устройства шины PCI.

2. Интерфейсы принтеров и плоттеров

1. Устройства шины pci

Для программистов интерес в первую очередь представляют функции PCI BIOS, поскольку они позволяют получить доступ к информации об адресном пространстве и пространстве ввода-вывода подключенных к шине PCI устройств.

Интерфейс PCI BIOS обеспечивает аппаратно-независимый метод управления устройствами PCI (а также AGP) в любых возможных режимах работы архитектуры х86 (включая реальный, защищенный 6-разрядный, защищенный 32-разрядный режимы и режим с линейным адресным пространством). Основное назначение функций PCI BIOS – работа с конфигурационным пространством и генерация специальных циклов шины PCI.

Общий вид конфигурационного пространства устройства PCI показан на рис. 1.

Рис. 1. Конфигурационное пространство устройства PCI

Конфигурационное пространство содержит три области:

заголовок, не зависящий от типа устройства;

область, определяемая устройством (значением Header Type);

область, определяемая пользователем.

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

Если программисту требуется выполнять с устройством PCI только типовые операции, то ему совершенно не обязательно разрабатывать полноценный драйвер для устройства — для решения некоторых типовых задач достаточно той документации, которую фирмы-изготовители предоставляют через Интернет в режиме свободного доступа. На практике интерес представляют следующие поля конфигурационного пространства:

Vendor ID — код фирмы-изготовителя устройства;

Device ID — код устройства;

Class Code — код класса устройства;

Base Address Registers — регистры базовых адресов;

Interrupt Line — номер выделенного устройству прерывания IRQ.

Код изготовителя, код устройства и код класса применяются в про: цессе поиска заданного устройства. Если необходимо найти конкретное устройство, то поиск выполняется по кодам устройства и его изготовителя (см. вышеупомянутые описания контроллеров Matrox и 3Dfx); если требуется обнаружить все устройства определенного типа, то используется код класса. После того как искомое устройство обнаружено, при помощи регистров базовых адресов можно определить выделенные ему области в адресном пространстве памяти и пространстве ввода-вывода. Наибольший интерес, однако, представляет регистр Interrupt Line, позволяющий выяснить, какая линия IRQ была выделена устройству процедурой РпР BIOS в процессе начальной загрузки компьютера — в некоторых случаях это единственный документированный способ определения номера прерывания.

Функции PCI BIOS

Поскольку конфигурационное пространство не имеет привязки к какой-либо определенной области адресного пространства компьютера, доступ к нему связан с определенными трудностями. С целью упрощения работы с устройствами PCI в BIOS персональных компьютеров были внесены специальные дополнительные функции. Доступ к функциям PCI BIOS при 16-разрядном вызове выполняется через функцию Blh прерывания lAh. Для 32-разрядных вызовов используется 32-разрядная точка входа защищенного режима. Функции PCI BIOS используют регистры процессора для передачи аргументов и получения результатов. При успешном выполнении функции флаг переноса CF сбрасывается в 0, в случае неудачи — устанавливается в 1.

Соседние файлы в папке УМК_Орг_ЭВМ