Библиотека PCI

Файлы этого компонента находятся в подкаталоге Libpci Каталога Ехе. Этот компонент отвечает за обнаружение всех уст­ройств PCI в системе и создание объектов для их представления. Основ­ное приложение использует структуру данных, чтобы получить доступ к чипу ROM BIOS через южный мост системы. Этот компонент состоит из нескольких файлов, а именно — access. c, filter. c, generic. с, I386-ports. c, Header. h, internal. h и pci. h. Эта библиотека была портирована из библиоте­ки PCI утилиты Pciutiis Версии 2.1.11 для Linux, разработанной Марти­ном Мэйерсом. Чтобы уменьшить размер исходного Кода Утилиты Bios_probe, Я удалил из первоначальной библиотеки файлы, ко­торые не нужны для нормальной работы утилиты. Подробные описания индивидуальных компонентов библиотеки приводятся в последующих подразделах. Вкратце, назначение каждого исходного файла основного приложения еле дующее: Flash_rom. c. Содержит точку входа в Bios_probe, Т. е. функцию Main. Кр° ме того, этот файл содержит процедуру вызова библиотеки PCI для разрешения доступа к чипу флэш-ROM через южный мост и массив объектов, содержащих функции поддержки чипов ROM. Для каждого типа чипа флэш-ROM имеется свой файл поддержки, реализующий обработчик данного чипа ROM. Flash. h. Содержит определение структуры данных, называющейся Flashchip. Эта структура данных хранит указатели на функции и переменные, необхо­димые для доступа к чипу флэш-ROM. Кроме того, данный файл содержит номер идентификатора производителя и номер идентификато­ра устройства чипа флэш-ROM, поддерживаемого утилитой Bios_probe. Errorjnsg. h. Заголовочный файл для процедуры, выводящей сообщения об ошибках. Errorjnsg. c. Исходный код процедуры, выводящей сообщения об ошиб­ках. Это вспомогательная процедура, так как она не выполняет никаких операций, специфичных для утилиты Bios_probe Direct_io. h. Содержит объявления функций, связанных с драйвером уст­ройства утилиты Bios_probe, Включая функции для прямого взаимодейст­вия с аппаратным портом необходима задержка в 1 Миллисе Кунду. Для этих транзакций мы и откалибровали цикл на 1 миллисекунДУ Обратите внимание, что тип переменной счетчика в функции
Объявлен как Volatile, Чтобы избежать оптимизации при компилировании. Таким образом, эта переменная будет помещена в RAM. Так как при оптими­Зации Счетчик помещается в регистр, и при компиляции цикл разворачивает­ся, возникает вероятность, что вскоре после запуска операция приращения может вызвать переполнение буфера и сопутствующие этому побочные явления.
После калибровки цикла задержки, функция main вызывает функцию initDriver, чтобы инициализировать драйвер устройства.



Рубрика: Женский интерес

Комментарии закрыты.