Нужны ли устройства подключения и воспроизведения драйверов?
Общая информация о поддержке устройств Plug & Play
Как только BIOS определил жесткий диск, видеокарту и клавиатуру, которую она готова к запуску (загрузка операционной системы в память из жесткого диска). Если вы сказали BIOS, что у вас есть операционная система PNP (ОС PNP), она должна начать загружать компьютер, как указано выше, и позволить операционной системе завершить настройку PNP. В противном случае, PNP-биос (до загрузки), вероятно, попытается сделать остальную часть PNP настройки устройств (но не информируйте драйверы устройства о том, что он сделал). Но драйверы все еще могут узнать это, используя функции, доступные в ядре Linux.
Нужны ли устройства подключения и воспроизведения драйверов?
Если вы не понимаете этот раздел, прочитайте следующий раздел аппаратные устройства и общение с ними
Уваженная, подключаемая и игра сообщает программному обеспечению (драйверы устройств), где найти различные части аппаратного обеспечения (устройства), такие как модемы, сетевые карты, звуковые карты и т. Д. Задача подключения и игры состоит в том, чтобы сопоставить физические устройства с программным обеспечением (драйверы устройств), которое управляет ими, и установить каналы связи между каждым физическим устройством и его драйвером. Чтобы достичь этого, PNP выделяет и устанавливает следующие «автобусные ресурсы» в оборудовании: адреса ввода/вывода, области памяти, IRQ, каналы DMA (только шины LPC и ISA). Эти 4 вещи иногда называют «ресурсами 1 -го порядка» или просто «ресурсами». PNP сохраняет запись о том, что сделано, и позволяет драйверам устройства получать эту информацию. Если вы не понимаете, что это за 4 автобусные ресурсы, прочитайте следующие подразделы этого Howto: адреса ввода/вывода, IRQ, каналы DMA, области памяти. Статья в Linux Gazette, касающуюся 3 из этих автобусных ресурсов,-это введение в IRQ, DMA и базовые адреса. После того, как эти автобусные ресурсы были назначены (и если установлен правильный драйвер), фактический драйвер и «файлы» для него в каталоге /dev готовы к использованию.
Это назначение PNP от запасных автобусов иногда называют «настройкой», но это лишь тип настройки низкого уровня. Каталог /etc имеет много файлов конфигурации, но большинство из них не предназначены для настройки PNP. Таким образом, большая часть настройки аппаратных устройств не имеет ничего общего с PNP или автобусными ресурсами. Для примера инициализация модема с помощью «init string» или настройка его скорости не является PNP. Таким образом, при разговоре о PNP «настройка» означает только определенный тип настройки. В то время как другая документация (например, для MS Windows) просто называет «ресурсы» автобуса, я иногда использую термин «перераспределение шины» вместо просто «ресурсов», чтобы отличить его от множества других видов ресурсов.
PNP – это процесс, который проводится различным программным и аппаратным обеспечением. Если бы была только одна программа, которая обрабатывала PNP в Linux, это было бы просто. Но с Linux каждый драйвер устройства делает свой собственный PNP, используя программное обеспечение, поставляемое ядром. Оборудование BIOS ПК выполняет PNP, когда ПК сначала включен. И это гораздо больше, чем это.
Компьютер состоит из процессора/процессора для выполнения компьютерной и оперативной памяти для хранения программ и данных (для быстрого доступа). Кроме того, существует ряд устройств, таких как различные виды дисководов, видеокарта, клавиатура, сетевые устройства, модемные карты, звуковые устройства, USB-шина, последовательные и параллельные порты и т. Д. В старые времена большинство устройств были на картах, вставленных в слоты на ПК. Сегодня многие устройства, которые ранее были картами, теперь находятся на борту, так как они содержатся в чипсах на материнской плате. Существует также источник питания, чтобы обеспечить электрическую энергию, различные шины на материнской плате для подключения устройств к процессору, и корпус, чтобы поместить все это в.
Карты, которые подключаются к материнской плате, могут содержать более одного устройства. Чипы памяти также иногда считаются устройствами, но не являются подключаемыми и играми в том смысле, что используется в этом Howto.
Чтобы компьютерная система работала правильно, каждое устройство должно находиться под управлением «драйвера устройства». Это программное обеспечение, которое является частью операционной системы (возможно, загруженной как модуль) и работает на ЦП. Драйверы устройств связаны с «специальными файлами» в каталоге /dev, хотя на самом деле они не являются файлами. У них есть такие имена, как HDA3 (третья перегородка на жестком диске A), TTYS1 (второй последовательный порт), ETH0 (первая карта Ethernet) и т. Д.
Устройство Eth0 предназначено для карты Ethernet (NIC Card). Ранее это был /dev /eth0, но теперь это просто виртуальное устройство в ядре. Что ссылается ETH0, зависит от типа карты Ethernet, которая у вас есть. Если драйвер является модулем, это назначение, вероятно, находится во внутренней таблице ядра, но может быть найдено в /и т. Д. /Модули.conf (называется «псевдоним»). Например, если у вас есть карта Ethernet, которая использует чип «тюльпан», вы можете поместить «псевдоним Eth0 Tulip» в /etc /modules.Conf, чтобы, когда ваш компьютер запрашивает ETH0. Тем не менее, современные ядра обычно могут найти правильный модуль драйвера, чтобы вам редко нужно было указать его самостоятельно.
Чтобы управлять устройством, ЦП (под управлением драйвера устройства) отправляет команды и данные и считывает состояние и данные с различных устройств. Чтобы сделать это, каждый драйвер устройства должен знать адрес устройства, которым он управляет. Знание такого адреса эквивалентно настройке канала связи, даже если физический «канал» на самом деле является шиной данных внутри ПК, который совместно используется со многими другими устройствами.
Этот канал связи на самом деле немного сложнее, чем описано выше. «Адрес» на самом деле является диапазоном адресов, поэтому иногда используется диапазон слова «диапазон» вместо «адрес». Может быть даже более одного диапазона (без перекрытия) для одного устройства. Кроме того, существует обратная часть канала (известная как прерывания), которая позволяет устройствам отправлять срочный запрос «справки» в драйвер устройства.
Автобус PCI имеет 3 адресных пространства: ввод/вывод, основная память (память IO) и конфигурация.
Общая информация о поддержке устройств Plug & Play
Как только BIOS определил жесткий диск, видеокарту и клавиатуру, которую она готова к запуску (загрузка операционной системы в память из жесткого диска). Если вы сказали BIOS, что у вас есть операционная система PNP (ОС PNP), она должна начать загружать компьютер, как указано выше, и позволить операционной системе завершить настройку PNP. В противном случае, PNP-биос (до загрузки), вероятно, попытается сделать остальную часть PNP настройки устройств (но не информируйте драйверы устройства о том, что он сделал). Но драйверы все еще могут узнать это, используя функции, доступные в ядре Linux.
Нужны ли устройства подключения и воспроизведения драйверов?
Если вы не понимаете этот раздел, прочитайте следующий раздел аппаратные устройства и общение с ними
Уваженная, подключаемая и игра сообщает программному обеспечению (драйверы устройств), где найти различные части аппаратного обеспечения (устройства), такие как модемы, сетевые карты, звуковые карты и т. Д. Задача подключения и игры состоит в том, чтобы сопоставить физические устройства с программным обеспечением (драйверы устройств), которое управляет ими, и установить каналы связи между каждым физическим устройством и его драйвером. Чтобы достичь этого, PNP выделяет и устанавливает следующие «автобусные ресурсы» в оборудовании: адреса ввода/вывода, области памяти, IRQ, каналы DMA (только шины LPC и ISA). Эти 4 вещи иногда называют «ресурсами 1 -го порядка» или просто «ресурсами». PNP сохраняет запись о том, что сделано, и позволяет драйверам устройства получать эту информацию. Если вы не понимаете, что это за 4 автобусные ресурсы, прочитайте следующие подразделы этого Howto: адреса ввода/вывода, IRQ, каналы DMA, области памяти. Статья в Linux Gazette, касающуюся 3 из этих автобусных ресурсов,-это введение в IRQ, DMA и базовые адреса. После того, как эти автобусные ресурсы были назначены (и если установлен правильный драйвер), фактический драйвер и «файлы» для него в каталоге /dev готовы к использованию.
Это назначение PNP от запасных автобусов иногда называют «настройкой», но это лишь тип настройки низкого уровня. Каталог /etc имеет много файлов конфигурации, но большинство из них не предназначены для настройки PNP. Таким образом, большая часть настройки аппаратных устройств не имеет ничего общего с PNP или автобусными ресурсами. Для примера инициализация модема с помощью «init string» или настройка его скорости не является PNP. Таким образом, при разговоре о PNP «настройка» означает только определенный тип настройки. В то время как другая документация (например, для MS Windows) просто называет «ресурсы» автобуса, я иногда использую термин «перераспределение шины» вместо просто «ресурсов», чтобы отличить его от множества других видов ресурсов.
PNP – это процесс, который проводится различным программным и аппаратным обеспечением. Если бы была только одна программа, которая обрабатывала PNP в Linux, это было бы просто. Но с Linux каждый драйвер устройства делает свой собственный PNP, используя программное обеспечение, поставляемое ядром. Оборудование BIOS ПК выполняет PNP, когда ПК сначала включен. И это гораздо больше, чем это.
Компьютер состоит из процессора/процессора для выполнения компьютерной и оперативной памяти для хранения программ и данных (для быстрого доступа). Кроме того, существует ряд устройств, таких как различные виды дисководов, видеокарта, клавиатура, сетевые устройства, модемные карты, звуковые устройства, USB-шина, последовательные и параллельные порты и т. Д. В старые времена большинство устройств были на картах, вставленных в слоты на ПК. Сегодня многие устройства, которые раньше были картами, теперь на борту, так как они содержатся в чипсах на материнской плате. Существует также источник питания, чтобы обеспечить электрическую энергию, различные шины на материнской плате для подключения устройств к процессору, и корпус, чтобы поместить все это в.
Карты, которые подключаются к материнской плате, могут содержать более одного устройства. Чипы памяти также иногда считаются устройствами, но не являются подключаемыми и играми в том смысле, что используется в этом Howto.
Чтобы компьютерная система работала правильно, каждое устройство должно находиться под управлением «драйвера устройства». Это программное обеспечение, которое является частью операционной системы (возможно, загруженной как модуль) и работает на ЦП. Драйверы устройств связаны с «специальными файлами» в каталоге /dev, хотя на самом деле они не являются файлами. У них есть такие имена, как HDA3 (третья перегородка на жестком диске A), TTYS1 (второй последовательный порт), ETH0 (первая карта Ethernet) и т. Д.
Устройство Eth0 предназначено для карты Ethernet (NIC Card). Ранее это был /dev /eth0, но теперь это просто виртуальное устройство в ядре. Что ссылается ETH0, зависит от типа карты Ethernet, которая у вас есть. Если драйвер является модулем, это назначение, вероятно, находится во внутренней таблице ядра, но может быть найдено в /и т. Д. /Модули.conf (называется «псевдоним»). Например, если у вас есть карта Ethernet, которая использует чип «тюльпан», вы можете поместить «псевдоним Eth0 Tulip» в /etc /modules.Conf, чтобы, когда ваш компьютер запрашивает ETH0. Тем не менее, современные ядра обычно могут найти правильный модуль драйвера, чтобы вам редко нужно было указать его самостоятельно.
Чтобы управлять устройством, ЦП (под управлением драйвера устройства) отправляет команды и данные и считывает состояние и данные с различных устройств. Чтобы сделать это, каждый драйвер устройства должен знать адрес устройства, которым он управляет. Знание такого адреса эквивалентно настройке канала связи, даже если физический «канал» на самом деле является шиной данных внутри ПК, который совместно используется со многими другими устройствами.
Этот канал связи на самом деле немного сложнее, чем описано выше. «Адрес» на самом деле является диапазоном адресов, так что иногда используется слово «диапазон» вместо «адрес». Может быть даже больше, чем один диапазон (без перекрытия) для одного устройства. Кроме того, существует обратная часть канала (известная как прерывания), которая позволяет устройствам отправлять срочный запрос «справки» в драйвер устройства.
Автобус PCI имеет 3 адресных пространства: ввод/вывод, основная память (память IO) и конфигурация. У старой шины ISA не хватает подлинного адреса «конфигурации». Только пространства памяти I/0 и IO используются для устройства IO. Адреса конфигурации фиксируются и не могут быть изменены, поэтому их не нужно выделять. Более подробная информация см. В адрес адресного пространства конфигурации PCI PCI
Когда ЦП хочет получить доступ к устройству, он помещает адрес устройства на основную шину компьютера (для PCI: адресная/шина данных). Все типы адресов (например, как ввод -вывод, так и основная память) имеют одну и ту же шину внутри ПК. Но наличие или отсутствие напряжения на определенных выделенных проводах в шине ПК сообщает, в каком «пространстве» находится адрес: вводный/вывод, основная память (см. Диапазоны памяти) или конфигурация (только PCI). Это немного упрощено, поскольку сообщает устройству PCI, что это доступ к пространству конфигурации, на самом деле более сложный, чем описано выше. Для получения подробной информации см. Адресное пространство конфигурации PCI. См. Детали адреса для получения более подробной информации о адресации в целом.
Адреса устройства хранятся в его регистрах в физическом устройстве. Они могут быть изменены программным обеспечением, и они могут быть отключены, чтобы у устройства вообще не было адреса. За исключением того, что адрес конфигурации PCI не может быть изменен или отключен.
Устройства были первоначально расположены в адресном пространстве ввода/вывода, но сегодня они могут использовать пространство в основной памяти. Адрес i/0 иногда просто называется «I/O», «io», «I/O» или «io». Термины «порт ввода/вывода» или «диапазон ввода/вывода» также используются. Не путайте эти порты ввода -вывода с «памятью IO», расположенной в основной памяти. Есть два основных шага для распределения адресов ввода/вывода (или некоторых других автобусных ресурсов, таких как прерывания на автобусе ISA):
- Установите адрес ввода/вывода и т. Д. в оборудовании (в одном из его регистров)
- Сообщите его драйвере устройства, что этот адрес ввода -вывода и т. Д. является
Часто драйвер устройства делает оба эти (вроде). Драйверу устройства на самом деле не нужно устанавливать адрес ввода/вывода, если он узнает, что адрес ранее был установлен (возможно, BIOS) и готов принять этот адрес. Как только драйвер либо узнал, какой адрес ранее был установлен или устанавливает сам адрес, он, очевидно, знает, что это за адрес, поэтому нет необходимости сообщать водителю адрес -он уже знает его.
Двухэтапный процесс выше (1. Установите адрес в оборудовании. 2. Сообщите водителю это.) – это что -то вроде двух частичной проблемы поиска чьего -либо дома на улице. Кто -то должен установить номер на передней части дома, чтобы его можно было найти, и тогда люди, которые могут захотеть перейти по этому адресу, должны получить (и записать) этот номер дома, чтобы они могли найти дом. Для компьютеров аппаратное обеспечение устройства должно сначала вставить свой адрес в специальный регистр в своем оборудовании (поставьте номер дома), а затем драйвер устройства должен получить этот адрес (напишите номер дома в его адресной книге). Оба из них должны быть сделаны, либо автоматически с помощью программного обеспечения, либо путем ввода данных вручную в файлы конфигурации. Проблемы могут возникнуть, когда только один из них сделан правильно.
Для ручной конфигурации PNP некоторые люди совершают ошибку, делая только один из этих двух шагов, а затем задаются вопросом, почему компьютер не может найти устройство. Например, они могут использовать «setSerial» для назначения адреса серийному порту, не осознавая, что это только говорит о драйвере по адресу. Он не устанавливает адрес в самом аппаратном обеспечении последовательного порта. Если вы сказали водителю неправильно, то у вас проблемы. Еще один способ сказать драйвере – дать адрес в качестве опции модулю ядра (драйвер устройства). Если то, что вы говорите, это неправильно, могут быть проблемы. Умный драйвер может обнаружить, как на самом деле установлено оборудование, и отклонить неверную информацию, предоставленную опцией (или, по крайней мере, выпустите сообщение об ошибке).
Очевидным требованием является то, что до того, как драйвер устройства сможет использовать адрес, он должен быть сначала установлен в физическом устройстве (например, карта). Поскольку драйверы устройств часто запускаются вскоре после запуска компьютера, они иногда пытаются получить доступ к карте (чтобы увидеть, есть ли она и т. Д.) до того, как адрес будет установлен на карте программой конфигурации PNP. Тогда вы видите сообщение об ошибке, которое они не могут найти карту, даже если она есть (но еще нет адреса).
То, что было сказано в последних нескольких параграфах относительно адресов ввода/вывода, применяется с равной силой для большинства других автобусных ресурсов: диапазоны памяти, IRQS-Каналы DMA и DMA. Что они будут объяснены в следующих 3 разделах. Исключение состоит в том, что прерывания на шине PCI не установлены не регистрами карт, а вместо этого направляются (сопоставлены) на IRQs чипом на материнской плате. Тогда карта IRQ A PCI направляется, записана в регистр карты только для информационных целей.
Чтобы увидеть, какие адреса IO используются на вашем компьютере, посмотрите на файл /proc /ioports.
Многим устройствам назначается адресное пространство в основной памяти. Иногда его называют «общей памятью» или «IO, нанесенное на карту памяти» или «IO Memory». Эта память физически расположена внутри физического устройства, но компьютер обращается к нему так же, как она будет получить доступ к воспоминаниям на чипах памяти. При обсуждении автобусных ресурсов его часто называют «памятью», «мем» или «iomem». В дополнение к использованию такой «памяти», такое устройство также может использовать обычное адресное пространство ввода -вывода. Чтобы увидеть, что Mem используется на вашем компьютере, посмотрите /proc /iomem. Этот «файл» включает в себя память, используемая вашими обычными чипами памяти ОЗУ, поэтому он показывает распределение памяти в целом, а не только распределение IOMEM. Если вы видите странный номер вместо имени, это, вероятно, количество устройства PCI, которое вы можете проверить, набрав «LSPCI».
Когда вы вставляете карту, которая использует IOMEM, вы фактически вставляете модуль памяти для основной памяти. Выбранный адрес выбирается для него PNP, так что он не конфликтует с основными модулями памяти (чипы). Эта память может быть либо ROM (читать только память) или общую память. Общая память разделена между устройством и процессором (запуск драйвера устройства) так же, как общее пространство IO используется между устройством и процессором. Эта общая память служит средством «передачи данных» между устройством и основной памятью. Это вход-выпуск (io), но это не сделано в пространстве ввода. И карта, и драйвер устройства должны знать диапазон памяти.
Rom (читайте только память) на картах – другой вид iomem. Вероятно, это программа (возможно, драйвер устройства), которая будет использоваться с устройством. Это может быть код инициализации, чтобы драйвер устройства все еще требуется. Надеюсь, он будет работать с Linux, а не только с MS Windows. Это может быть затенено, что означает, что он скопирован в ваши основные чипы памяти, чтобы работать быстрее. Как только он затенен, это больше не «читать только».
После прочтения это может захотеть прочитать прерывания -вытекает на гораздо больше деталей. Следующее преднамеренно упрощено: помимо адреса, есть также номер прерывания (например, IRQ 5). Это называется номер IRQ (запрос на прерывание) или просто «IRQ» для короткого. Мы уже упоминали выше, что драйвер устройства должен знать адрес карты, чтобы иметь возможность общаться с ней.
Но как насчет общения в противоположном направлении? Предположим, что устройство должно немедленно сообщить своему драйвере устройства что -нибудь. Например, устройство может получать множество байтов, предназначенных для основной памяти, и его буфер, используемый для хранения этих байтов, практически полон. Таким образом, устройство должно сообщить своему драйверу получить эти байты сразу, прежде чем буфер переполнится от входящего потока байтов. Другой пример – сигнализировать о том, что устройство закончило отправлять кучу байтов и теперь ждет еще нескольких байтов от драйвера, чтобы оно тоже мог их отправить.
Как устройство должно быстро сигнализировать о своем драйвере? Он может не иметь возможности использовать основную шину данных, так как, вероятно, уже используется. Вместо этого он ставит напряжение на выделенный провод прерываний (также называемый линией или трассировкой), который часто зарезервирован только для этого устройства. Этот сигнал напряжения называется запросом на прерывание (IRQ) или просто «прерывание» для короткого. Есть эквивалент 16 (или 24 и т. Д.) такие провода в ПК и каждая провода (косвенно) к определенному драйверу устройства. Каждый провод имеет уникальный номер IRQ (запрос на прерывание). Устройство должно поставить прерывание на правильный провод, а драйвер устройства должен прослушать прерывание по правильному проводу. В какой провод, устройство отправляет такие «запросы справки», определяется номером IRQ, хранящимся в устройстве. Этот же номер IRQ должен быть известен драйвере устройства, чтобы драйвер устройства знал, какую линию IRQ прослушать.
Как только драйвер устройства получает прерывание от устройства, он должен выяснить, почему было выпущено прерывание, и предпринять соответствующие действия для обслуживания прерывания. На шине ISA каждое устройство обычно нуждается в собственном уникальном номере IRQ. Для шины PCI и других особых случаев разрешено совместное использование IRQ (два или более устройств PCI могут иметь одинаковый номер IRQ). Кроме того, для PCI каждое устройство PCI имеет фиксированный провод “прерывания PCI”. Но программируемый чип маршрутизации отображает провода PCI на прерывания типа ISA. Смотрите прерывания -Details для получения подробной информации о том, как работает все вышеперечисленное.
- Чтение куски байтов из пространства памяти ввода/вывода устройства и помещение этих байтов в сам процессор
- Написание этих байтов из процессора в основную память
С DMA это один шаг процесс отправки байтов непосредственно от устройства в память. Устройство должно иметь возможности DMA, встроенные в его аппаратное обеспечение, и, следовательно, не все устройства могут делать DMA. Пока DMA продолжается, процессор не может сделать слишком много, так как основной шины используется передачей DMA.
Старый автобус ISA может делать медленный DMA, в то время как автобус PCI делает «DMA» от автобусного мастеринга. В автобусе LPC есть как старый DMA, так и новый DMA (мастерство автобуса). На автобусе PCI то, что более точно следует назвать «мастерством автобусов», часто называют «Ultra DMA», «BM-DNA», «UDMA» или просто «DMA», Mastering автобуса позволяет временно становиться мастерами автобусов, и переводить байты почти как мастер автобуса. Он не использует никаких номеров каналов, так как организация шины PCI такова, что аппаратное обеспечение PCI знает, какое устройство в настоящее время является мастером шины, а какое устройство просит стать мастером шины. Таким образом, распределение ресурсов каналов DMA для шины PCI, и для этой шины нет ресурсов канала DMA. Предполагается, что шина LPC (низкий уровень PIN) должна быть настроена BIOS, поэтому пользователям не нужно беспокоиться о своих каналах DMA.
Это только для автобуса LPC и старого автобуса ISA. Когда устройство хочет сделать DMA, оно выдает DMA-запрос, используя выделенные провода запроса DMA, очень похожие на запрос прерывания. DMA на самом деле мог быть обработан с использованием прерываний, но это приведет к некоторым задержкам, так что это быстрее сделать, имея особого типа прерывания, известного как DMA-Request. Как и прерывания, DMA-запросы пронумеруются таким образом, чтобы определить, какое устройство делает запрос. Это число называется DMA-канал. Поскольку DMA Transfers использует основную шину (и только один может работать за раз), все они фактически используют один и тот же канал для потока данных, но число «канал DMA» служит для определения того, кто использует «канал». Регистры аппаратного обеспечения существуют на материнской плате, которая хранит текущее состояние каждого «канала». Таким образом, чтобы выпустить DMA-запрос, устройство должно знать свой канальный номер DMA, который должен храниться в специальном регистре на физическом устройстве.
Таким образом, драйверы устройств должны быть «прикреплены» каким -то образом к аппаратному обеспечению, которое они управляют. Это делается путем распределения перерывов шин (ввода/вывода, память, IRQ, DMA) как на физическое устройство, так и позволение драйвере устройства узнать об этом. Например, серийный порт использует только 2 ресурса: IRQ и адрес ввода/вывода. Оба этих значения должны быть предоставлены драйвере устройства и физическому устройству. Драйверу (и его устройство) также дается имя в каталоге /dev (например, TTYS1). Адрес и номер IRQ сохраняется физическим устройством в регистрах конфигурации на своей карте (или в чипе на материнской плате). Старое оборудование (в середине 1990 -х годов) использовали коммутаторы (или прыгуны) для физического установления IRQ и адреса в оборудовании. Эта настройка оставалась фиксированной до тех пор, пока кто -то не снял обложку компьютера и не перенесет перемычки.
Но для случая PNP (без прыгунов) данные регистра конфигурации обычно теряются при включении компьютера (выключен), так что данные о переработке шин.
Идеальные компьютеры
Архитектура ПК предоставляет только ограниченное количество ресурсов: IRQ, каналы DMA, адрес ввода -вывода и области памяти. Если бы были только ограниченные численные устройства, и все они использовали стандартизированные значения-ресурсов шин (например, уникальные адреса ввода/вывода и номера IRQ), не было бы проблем с прикреплением драйверов устройств к устройствам. Каждое устройство будет иметь фиксированные ресурсы, которые не будут противоречить каким -либо другим устройствам на вашем компьютере. Никакие два устройства не будут иметь одинаковых адресов, не было бы конфликтов IRQ на автобусе ISA и т. Д. Каждый драйвер будет запрограммирован с уникальными адресами, IRQ и т. Д. жестко кодируется в программу. Жизнь была бы простой.
Другим способом предотвращения конфликтов с адресами, чтобы включить номер слота каждой карты как часть адреса. Таким образом, не может быть адреса конфликта между двумя разными картами (поскольку они находятся в разных слотах). Конструкция карт не позволит конфликты адреса между различными функциями карты. Оказывается, что адресное пространство конфигурации (используемое для запроса ресурсов и назначения) фактически делает это. Но это не сделано для адресов ввода/вывода, ни регионов памяти. Совместное использование IRQ, как на шине PCI, также избегает конфликтов, но может вызвать другие проблемы.
Настоящие компьютеры
Но архитектура ПК имеет проблемы с конфликтами. Увеличение количества устройств (включая несколько устройств одного типа), как правило, увеличивает потенциальные конфликты. В то же время, введение шины PCI, где два или более устройств могут разделить одно и то же прерывание, и введение большего количества прерываний, как правило, снижает конфликты. Общий результат из -за перехода на PCI стал сокращение конфликтов, так как наиболее Scarcest Resource – IRQS. Однако даже на автобусе PCI более эффективно избегать обмена IRQ. В некоторых случаях, когда прерывания происходят в быстрой последовательности и должны действовать при быстром (например, аудио), может вызвать ухудшение производительности в производительности. Так что нехорошо назначать все устройства PCI одинаковый IRQ, назначение должно быть сбалансировано. И все же некоторые люди считают, что все их устройства PCI находятся на одном IRQ.
Таким образом, устройства должны иметь некоторую гибкость, чтобы их можно было установить на любой адрес, IRQ и т. Д. необходимо, чтобы избежать каких -либо конфликтов и достижения балансировки. Но некоторые IRQ и адреса довольно стандартны, например, для часов и клавиатуры. Это не нуждается в такой гибкости.
Помимо проблемы противоречивого распределения автобусных ресурсов, есть проблема с ошибкой в том, чтобы рассказать драйвере устройства, каковы автобусные ресурсы. Это, скорее всего, произойдет для случая старомодной ручной конфигурации, когда пользователи типизит в ресурсах, используемых в файле конфигурации, хранящихся в жесткой стороне. Это часто работало нормально, когда ресурсы были установлены прыгунами на картах (при условии, что пользователь знал, как он был установлен, и не ошибались при набрасе этих данных в файлы конфигурации). Но с ресурсами, установленными программным обеспечением PNP, они не всегда могут быть установлены одинаково, и это может означать проблемы для любой ручной конфигурации, когда пользователи типы в значениях автобусных ресурсов, которые были установлены PNP.
Распределение автобусных ресурсов, если все сделано правильно, устанавливает неконфликтные каналы связи между физическим оборудованием и их драйверами устройства. Например, если определенный диапазон адресов ввода/вывода (ресурс) выделен как на драйвер устройства, так и на кусок аппаратного обеспечения, то он установил односторонний канал связи между ними. Драйвер может отправлять команды и другую информацию на устройство. На самом деле это больше, чем односторонние связи, поскольку драйвер может получить информацию от устройства, прочитав его регистры. Но устройство не может инициировать какую -либо общение таким образом. Чтобы инициировать связь, устройству нужен IRQ, чтобы оно могло отправить прерывания в свой драйвер. Это создает двухсторонний канал связи, где и драйвер, и физическое устройство могут инициировать связь.
Термин «подключаемость» (PNP) имеет различные значения. В широком смысле это просто автоматическая конфигурация, где один просто подключает устройство и настраивается. В смысле, используемом в этом одном, PNP означает настройку PNP-автобусных ресурсов (установление их на физических устройствах) и сообщить о драйверах устройства об этом. Для случая Linux часто является просто драйвером, определяющим, как BIOS устанавливает запас автобусов и, если необходимо, драйвер, дающий команду для изменения (сброса). «PNP» часто просто означает PNP на шине ISA, чтобы сообщение от ISAPNP: «Не найдено плагин и воспроизведение», просто означает, что никаких устройств ISA PNP не было найдено. Стандартные спецификации PCI (которые были изобретены до придумывания термина «PNP») предоставляют эквивалент PNP для шины PCI.
PNP совпадает с устройствами со своими драйверами устройства и указывает их каналы связи (выделяя автобусные ресурсы). Он в электронном виде связывается с регистрами конфигурации, расположенными внутри физических устройств с использованием стандартизированного протокола. На автобусе ISA перед подключением. Иногда в электронном виде можно установить автобусные ресурсы в электронном виде (обычно написанный только для ОС MS, но в редких случаях поддерживается драйвером Linux). Это было что -то вроде PNP, но стандартизированный протокол не использовался, так что он не был PNP. У некоторых карт была настройка перемычки, которые могли быть переопределены таким программным обеспечением. Для Linux перед PNP большинству драйверов программного обеспечения были назначены автобусными ресурсами по файлам конфигурации (или т.п.) или путем расследования устройства на адресах, где оно ожидалось. Но эти методы все еще используются сегодня, чтобы позволить Linux использовать старое не-PNP-оборудование. И иногда эти старые методы все еще используются сегодня на аппаратном обеспечении PNP (после того, как вы скажут, что BIOS назначил ресурсы для оборудования с помощью методов PNP).
Автобус PCI была похожа на PNP с самого начала, но обычно не называется PNP или «Plug and Play» с результатом, что PNP часто означает PNP на шине ISA. Но PNP в этих документах обычно означает PNP на шине ISA или PCI.
Вот как PNP должен работать в теории. Гипотетическая программа конфигурации PNP находит все устройства PNP и спрашивает каждую, какие автобусные ресурсы ей нужны. Затем он проверяет, какие автобусные ресурсы (IRQ и т. Д.) он должен отдать. Конечно, если в нем зарезервировано ресурсы автобусов, используемые не-PNP (Legacy) устройствами (если он знает о них), это не отдает их. Затем он использует некоторые критерии (не указанные в соответствии с спецификациями PNP), чтобы раздавать автобусные ресурсы, чтобы не было конфликтов и чтобы все устройства получали то, что им нужно (если возможно). Затем он косвенно рассказывает каждому физическому устройству, какое у него присваивается автобусные ресурсы, и устройства настроены на использование только назначенных автобусных ресурсов. Затем драйверы устройства каким-то образом узнают, какие автобусные ресурсы используют их устройства, и, таким образом, способны эффективно общаться с устройствами, которые они контролируют.
Например, предположим, что карта нуждается в одном прерывании (номер IRQ) и 1 МБ общей памяти. Программа PNP считывает этот запрос из регистров конфигурации на карте. Затем он назначает карту IRQ5 и 1 МБ адресов памяти, начиная с адреса 0xE9000000. Программа PNP также считывает идентифицирующую информацию из карты, сообщающую, какой тип устройства она, его идентификационный номер и т. Д. Затем он прямо или косвенно говорит соответствующему драйверу устройства, что это сделано. Если это сам драйвер, который делает PNP, то нет необходимости находить драйвер для устройства (поскольку его драйвер уже работает). В противном случае необходимо найти подходящий драйвер устройства, и рано или поздно рассказано, как настроено его устройство.
Это не всегда так просто, поскольку карта (или таблица маршрутизации для PCI) может указать, что она может использовать только определенные номера IRQ или что 1 МБ памяти должна лежать в определенном диапазоне адресов. Детали различны для автобусов PCI и ISA с большей сложностью на автобусе ISA.
Один из способов, которые обычно используются для распределения ресурсов,-начать с одного устройства и распределить его с помощью автобусных ресурсов. Затем сделайте то же самое для следующего устройства и т. Д. Затем, если, наконец, все устройства получают выделенные ресурсы без конфликтов, то все в порядке. Но если выделение необходимого ресурса создаст конфликт, то необходимо вернуться назад и попытаться внести некоторые изменения в предыдущие ассигнования, чтобы получить необходимый автобус. Это называется перебалансировка. Linux не делает перебалансировку, но в некоторых случаях MS Windows делает. Для Linux все это делается с помощью драйверов BIOS и/или ядра и/или устройств. В Linux драйвер устройства не получает окончательного распределения ресурсов до тех пор, пока водитель не запустится, поэтому одним из способов избежать конфликтов является просто не запускать какое -либо устройство, которое может вызвать конфликт. Тем не менее, BIOS часто выделяет ресурсы на физическое устройство до того, как Linux будет загружен, а ядро проверяет устройства PCI на наличие адресов. Конфликты на время загрузки.
Есть некоторые ярлыки, которые может использовать программное обеспечение PNP. Одним из них является отслеживание того, как он назначил автобусные ресурсы при последней конфигурации (когда компьютер использовался в последний раз) и повторно используйте это. Bioss делайте это, как и MS Windows, и это, но Standard Linux не. Но в некотором смысле это происходит, поскольку он часто использует то, что сделал Bios. Windows хранит эту информацию в своем «Реестре» на жестком диске, а BIOS PNP/PCI хранит ее в нелетучих памяти в вашем ПК (известный как ESCD; см. Базу данных BIOS ESCD). Некоторые говорят, что отсутствие в реестре (например, Linux) лучше, поскольку с Windows реестр может быть поврежден, и его трудно редактировать. Но у PNP в Linux тоже есть проблемы.
В то время как MS Windows (за исключением Windows 3.x и nt4) были PNP, Linux изначально не была ОС PNP, но постепенно становился PNP OS. Первоначально PNP работал в Linux, потому что PNP BIOS настроил бы автобусные ресурсы, а драйверы устройств узнают (используя программы, поставляемые ядром Linux), что сделал BIOS. Сегодня большинство водителей могут выпускать команды для создания собственной настройки автобуса и не нужно всегда полагаться на BIOS. К сожалению, водитель может взять автобусную ресурса, в которой понадобится другому устройству позже. Некоторые драйверы устройств могут сохранить последнюю конфигурацию, которую они использовали в файле конфигурации, и использовать ее в следующий раз, когда компьютер включен.
Если оборудование устройства запомнила свою предыдущую конфигурацию, то не было бы никакого оборудования для настройки PNP в следующее время загрузки. Но аппаратное обеспечение, кажется, забывает о своей конфигурации, когда питание отключено. Некоторые устройства содержат конфигурацию по умолчанию (но не обязательно последний используемый). Таким образом, устройство PNP необходимо переполнять каждый раз, когда ПК питается. Кроме того, если было добавлено новое устройство, то его тоже нужно настроить. Распределение автобусных ресурсов на это новое устройство может включать в себя устранение некоторых автобусных ресурсов от существующего устройства и назначение существующего устройства альтернативного ресурса, которые он может использовать вместо этого. В настоящее время Linux не может выделить с этой сложностью (и MS Windows XP, возможно, не сможет этого сделать).
Когда ПК сначала включил чип Bios, запускает свою программу, чтобы запустить компьютер (первый шаг – проверить оборудование материнской платы). Если операционная система хранится в жестком диске (как обычно), то BIOS должен знать о жестком диске. Если жесткий див PNP, то BIOS может использовать методы PNP, чтобы найти его. Кроме того, чтобы позволить пользователю вручную настроить CMOS BIOS и отвечать на сообщения об ошибках, когда компьютер запускается, экран (видеокарта) и клавиатура также требуются. Таким образом, BIOS всегда должен устройства с конфигурацией PNP, необходимые для загрузки операционной системы из жесткого диска.
Как только BIOS определил жесткий диск, видеокарту и клавиатуру, которую она готова к запуску (загрузка операционной системы в память из жесткого диска). Если вы сказали BIOS, что у вас есть операционная система PNP (ОС PNP), она должна начать загружать компьютер, как указано выше, и позволить операционной системе завершить настройку PNP. В противном случае, PNP-биос (до загрузки), вероятно, попытается сделать остальную часть PNP настройки устройств (но не информируйте драйверы устройства о том, что он сделал). Но драйверы все еще могут узнать это, используя функции, доступные в ядре Linux.
Чтобы увидеть, что находится на типе шины PCI LSPCI или LSPCI -VV . Или введите scanpci -v для той же информации в формате числового кода, где устройство отображается номером (например: «Устройство 0x122d», а не по имени и т. Д. В редких случаях Scanpci найдет устройство, которое LSPCI не может найти.
Сообщения времени загрузки на ваших устройствах отображения, которые были найдены на различных шинах (используйте Shift-Pageup, чтобы сделать резервное копирование через них). Смотрите сообщения времени загрузки
ISA-старый автобус старых IBM-совместимых ПК, в то время как PCI-более новая и более высокая автобуса от Intel. Шина PCI была разработана для того, что сегодня называется PNP. Это позволяет легко (по сравнению с автобусом ISA) выяснить, как были назначены автобусные ресурсы PNP.
Для шины ISA была реальная проблема с реализацией PNP, поскольку никто не имел в виду PNP, когда была разработана шина ISA, и почти нет адресов ввода -вывода, доступных для отправки информации о конфигурации на физическое устройство. В результате, как PNP был поднят на автобусе ISA, очень сложный. Целые книги были написаны об этом. Смотрите книгу PNP. Среди прочего, это требует, чтобы каждому устройству PNP было назначено временное «ручку» программой PNP, чтобы можно было обратиться к нему для настройки PNP. Присвоение этих «ручек» – это изоляция вызовов ». Смотрите изоляцию ISA для сложных деталей.
По мере вымершего автобуса ISA PNP будет немного проще. Тогда будет не только легче выяснить, как BIOS настроил аппаратное обеспечение, но и будет меньше конфликтов, поскольку PCI может поделиться прерыванием. По -прежнему будет необходимость сопоставить драйверы устройств с устройствами, а также необходимость настройки устройств, которые добавляются при запуске ПК и запуска. Серьезная проблема того, что некоторые устройства не поддерживаются Linux, останется.
У Linux были серьезные проблемы в прошлом в работе с PNP, но большинство из этих проблем были решены (по состоянию на середину 2004 года). Linux перешел от не-PNP-системы до той, которая может быть PNP, если при составлении ядра выбираются определенные параметры. BIOS может назначать IRQ, но Linux также может назначить некоторые из них или даже переназначить то, что сделал BIOS. Конфигурационная часть ACPI (предварительная конфигурация и интерфейс питания) предназначена для облегчения операционных систем для своей собственной настройки. Linux может использовать ACPI, если он будет выбран, когда ядро скомпилировано.
В Linux для каждого драйвера устройства традиционно выполнять свою собственную настройку низкого уровня. Это было сложно, пока Linux не предоставит программное обеспечение в ядре, которое драйверы могли бы использовать, чтобы облегчить им для них. Сегодня (2005) он достиг точки, когда драйвер просто вызывает функцию ядра: pci_enable_device (), и устройство настроено, чтобы быть включенным и имея как IRQ (если необходимо), так и адреса, назначенные на устройство. Это задание могло быть тем, что ранее было назначено BIOS или тем, что ядро было зарезервировано для него, когда ядро было обнаружено ядро, когда устройство PCI или ISAPNP было обнаружено. Есть даже параметр ACPI для Linux, чтобы назначить все устройства IRQS на время загрузки.
Итак, сегодня, в некотором смысле, драйверы все еще делают настройку, но они могут сделать это, просто сказав Linux сделать это (и Linux, возможно, не нужно много делать, поскольку иногда он может использовать то, что уже было установлено Bios или Linux). Так что это действительно часть ядра Linux, которая делает большую часть настройки. Таким образом, может быть правильно назвать Linux операционной системой PNP, по крайней мере для общих компьютерных архитектур.
Затем, когда драйвер устройства находит свое устройство, он просит посмотреть, какие адреса и IRQ были назначены (BIOS и/или Linux) и обычно просто принимает их. Но если драйвер хочет это сделать, он может попытаться изменить адреса, используя функции, поставляемые ядром. Но ядро не примет адреса, которые противоречат другим устройствам или теми, которые оборудование не может поддерживать. Когда компьютер запускается, вы можете отметить сообщения на экране, показывающие, что некоторые драйверы устройств Linux нашли свои аппаратные устройства и какие диапазоны IRQ и адреса.
Таким образом, ядро предоставляет драйверам функции (программный код), которые драйверы могут использовать, чтобы выяснить, существует ли их устройство, как оно было настроено, и функции для изменения конфигурации, если это необходимо, при необходимости. Ядро 2.2 мог сделать это только для шины PCI, но ядро 2.4 Была ли эта функция для шин ISA и PCI (при условии, что при составлении ядра были выбраны соответствующие параметры PNP и PCI). Ядро 2.6 вышел с лучшим использованием ACPI. Это ни в коем случае не гарантирует, что все водители будут полностью и правильно использовать эти функции. И устаревшие устройства, о которых BIOS не знает, могут не настроиться на то, чтобы вы (или какая -то утилита конфигурации) не установит свой адрес, IRQ и т. Д. в файл конфигурации.
Кроме того, ядро помогает избежать конфликтов ресурсов, не позволяя двум устройствам, которые он знает о том, чтобы использовать одни и те же автобусные ресурсы одновременно. Первоначально это было только для IRQ и DMAS, но теперь это также для адресных ресурсов.
Если у вас есть старый автобус ISA, программа ISAPNP должна работать в Boottime, чтобы найти и настроить устройства PNP на шине ISA. Посмотрите на сообщения с “DMESG”.
Чтобы увидеть, какую помощь может оказать ядро драйверами устройства, см. Directory /usr /. /. /Документация, где один из . содержит слово «ядро-док» или тому подобное. Предупреждение: документация здесь имеет тенденцию быть устаревшей, поэтому для получения последней информации, которую вам нужно будет прочитать сообщения в списках рассылки, отправленных разработчиками ядра, и, возможно, компьютерный код, который они пишут, включая комментарии. В этом каталоге документации ядра см. PCI.TXT (“Как написать драйверы PCI Linux”) и файл:/usr/include/linux/pci.час. Если вы не являетесь гуру драйвера и не знаете программирования C, эти файлы написаны настолько, что они на самом деле не позволят вам писать драйвер. Но это даст вам некоторое представление о том, какие функции типа PNP доступны для использования драйверами.
Для ядра 2.4 См. ISAPNP.текст. Для ядра 2.6, isapnp.TXT заменяется PNP.TXT, который полностью отличается от ISAPNP.TXT, а также имеет дело с шиной PCI. Также см. Книга О’Рейли: Драйверы устройств Linux, 3 -е изд., 2005. Полный текст находится в Интернете.
Но есть ряд вещей, которые настоящая операционная система PNP может лучше справиться:
- Выделите автобусные ресурсы, когда им не хватает перераспределения ресурсов, если это необходимо
- Работайте с выбором драйвера, когда существует более одного драйвера для физического устройства
Поскольку это каждый водитель для себя, водитель может захватить автобусные ресурсы, которые необходимы другим устройствам (но еще не выделяются им ядром). Таким образом, более сложное ядро PNP Linux было бы лучше, когда ядро сделало ассигнование после всех запросов в. Другая альтернатива – попытка перераспределить ресурсы, уже назначенные, если устройства не смогут получить запрошенные ресурсы, которые он запрашивал.
Проблема «нехватка перераспределения шины» становится менее проблемой по двум причинам: одна из причин заключается в том, что шина PCI заменяет шину ISA. При PCI нет недостатка в IRQ, поскольку IRQS может быть разделен (даже если совместное использование немного менее эффективно). Кроме того, PCI не использует ресурсы DMA (хотя он делает эквивалент DMA без необходимости таких ресурсов).
Вторая причина заключается в том, что для устройства i/0 доступно больше адресного пространства. В то время как обычное адресное пространство ввода/вывода на автобусе ISA было ограничено 64 КБ, автобус PCI имеет 4 ГБ. Поскольку больше физических устройств используют основные адреса памяти вместо адресного пространства IO, еще больше места, даже на шине ISA. На 32-битных ПК есть 4 ГБ основного адресного пространства памяти, и большая часть этой шины-ресурса доступна для устройства IO (если у вас установлена 4 ГБ основной памяти).
Общая информация о поддержке устройств Plug & Play
Устройства подключения и воспроизведения могут быть использованы немедленно, без необходимости установки. Они обнаруживаются и настроены автоматически, как только они подключены к компьютеру. Соответствующие драйверы устройства установлены автоматически. Пользователь не обязан делать какие -либо входные данные.
Однако автоматическая установка операционной системой работает только при определенных условиях, e.г. (Смотрите подробнее об этом в Windows Help):
- У драйвера устройства есть либо “Разработан для Windows” логотип или цифровая подпись.
- Драйвер устройства уже присутствует на компьютере.
Если эти условия не выполнены, операционная система запускает аппаратный мастер. Если у пользователя нет права локального администратора, он не может завершить установку этим мастером.
В этих ситуациях DSM ’S Поддержка устройств Plug & Play позволяет устанавливать устройства без пользователя, имеющего права локального администратора.
- Драйверы WAN Miniport
- Виртуальные сетевые адаптеры
Была ли эта статья полезна?
Устройство PURCE-N-Play для использования определенного драйвера
Оборудование: Presonus Отстройщик микрофон Цель: Я хотел бы использовать свой микрофон дальше через расширение USB-to-RJ45. В основном отправляя USB по эфирному шнуру. Проблема: Когда микрофон подключен непосредственно к ноутбуку, он работает нормально. Но когда я подключаю его к удлинителю, я не могу ничего записать, и компьютер вообще не регистрирует устройство. Микрофон получает питание, а компьютер издает шум «соединения», но ничего не. Диспетчер устройств: Я проверил диспетчер устройств в обоих сценариях. При подключении непосредственно я вижу «Микрофон (откровение)» в «Аудио входы и выходы». При подключении к RJ45 я только что вижу «Откровение» под «неизвестными устройствами», а также желтый треугольник предупреждения, указывающий, что не было загружено водителя. Информация о драйвере: Я использовал программу USBDeview, чтобы собрать некоторую подробную информацию на устройстве при подключении к использованию различных соединений. Ниже приведено сравнение бок о бок.
Подключен напрямую | Подключен через RJ45 | |
---|---|---|
Имя устройства | Откровение | Откровение |
Описание | USB -композитное устройство | Откровение |
Тип устройства | Неизвестный | Специфичный для продавца |
Связанный | Да | Да |
Безопасно отключить | Да | Нет |
Неполноценный | Нет | Нет |
USB Hub | Нет | Нет |
Серийный номер | JM1C20431589 | JM1C20431589 |
Продавца | 194f | 194f |
Идантификационный номер продукта | 0d01 | 0d01 |
Пересмотр прошивки | 1.02 | 1.02 |
USB класс | 0 | фф |
USB подкласс | 0 | 0 |
USB -протокол | 0 | 0 |
Parentid Prefix | 6 & 1ea95f5f & 0 | 6 & 1ea95f5f & 0 |
наименование услуги | USBCCGP | |
Описание услуг | @USB.Inf,%GenericParent.Svcdesc%; Microsoft USB Generic Parent Driver | |
Имя файла драйвера | USBCCGP.система | |
Устройство MFG | (Стандартный USB -хост -контроллер) | |
Власть | 200 мА | 200 мА |
USB -версия | 2 | 2 |
Описание драйвера | USB -композитное устройство | |
Версия драйвера | 10.0.19041.1949 | |
Инфекция водителя | Композит.Девчонка.Н.д | |
Водитель infpath | USB.инф | |
Идентификатор экземпляра | USB \ VID_194F & PID_0D01 \ JM1C20431589 | USB \ VID_194F & PID_0D01 \ JM1C20431589 |
Возможности | “Съемный, уникальный, удивление | “Съемный, уникальный” |
Основное отличие состоит в том, что при подключении непосредственно микрофон распознается как композитное устройство (USBDeview также показывает несколько других USB -устройств, загружаемых одновременно). При подключении через RJ45 он не распознается как таковой, и без нагрузки драйверов. Могут ли другие устройства подключиться?: Я попробовал разъем RJ45 с USB-диском и другой маркой микрофона (Audio-Technica AT2020). В обоих случаях они работали нормально и загружали одни и те же драйверы. Микрофон особенно интересен, так как он также является композитным устройством, но не имеет никаких проблем. Вопрос: Можно ли заставить мой компьютер использовать один и тот же драйвер в обоих сценариях? Я занимаюсь поиском, но все, что я могу найти, это вещи, связанные с загрузкой драйверов с веб -сайта компании (я не мог найти). Я пробовал вручную выбрать файлы Sys и Inf через диспетчер устройств, но это, похоже, не сработало. Возможно, я делаю этот шаг неправильно.
Что такое драйвер устройства? Определение, типы и приложения
Драйвер устройства – это программа без пользовательского интерфейса, которая управляет аппаратным обеспечением, прикрепленным к компьютеру и поддерживает его функционирование.
Технический писатель Chiradeep Basumallick
12 октября 2022 г
Драйвер устройства определяется как программа без пользовательского интерфейса (пользовательский интерфейс), который управляет аппаратными компонентами или периферийными устройствами, прикрепленными к компьютеру, и позволяет им плавно функционировать с компьютером. В этой статье объясняется работа драйверов устройств, их различных типов и пять критических приложений.
Оглавление
-
- Что такое драйвер устройства?
- 9 типов драйверов устройств
- Приложения драйверов устройств
Что такое драйвер устройства?
Драйвер устройства – это программа без пользовательского интерфейса (пользовательский интерфейс), которая управляет аппаратными компонентами или периферийными устройствами, прикрепленными к компьютеру и позволяет им плавно функционировать с компьютером.
Драйвер устройства-это специализированное программное обеспечение, которое управляет конкретным компьютерным устройством, подключенным к компьютеру-предложение программного интерфейса для оборудования позволяет операционным системам и другим компьютерным приложениям доступа к аппаратным функциям.
Аппаратное обеспечение связано с подсистемой компьютерной шины/связи, через которую драйверы устройств взаимодействуют с устройством. Они зависят от оборудования и специфичной для операционной системы (ОС). Они предлагают обработку прерывания, необходимая для любого зависимого от времени асинхронного аппаратного интерфейса.
Драйвер устройства’S Основная цель – позволить компьютерам и компонентам сетевого аппаратного обеспечения взаимодействовать и взаимодействовать с конкретными устройствами. Они обрабатывают запросы, сделанные ядром в отношении определенного типа устройства. Драйверы устройств определяют сообщения и механизмы, с помощью которых компьютер’S Операционная система и приложения могут получить доступ к устройству или вносить запросы на устройство. Они также обрабатывают ответы и сообщения устройств для доставки на компьютер.
Как функционируют драйверы устройств
Драйверы устройств работают внутри слоя ядра ОС. Они работают в очень привилегированной среде, потому что им нужен низкоуровневый доступ к аппаратным операциям, чтобы функционировать. Они включают компьютер’S Операционная система (ОС) для взаимодействия с аппаратным обеспечением, для которого они были разработаны. И через компьютерную шину, которая связывает устройство с компьютером, драйверы и устройство общаются.
Драйверы устройств должны получать советы от операционной системы для доступа и выполнения инструкций устройства. После завершения задания они передают аппаратное устройство’S вывод или сообщение в операционную систему. Такие устройства, как модемы, маршрутизаторы, динамики, клавиатуры и принтеры, требуют управления устройствами для работы.
Понимание разработки драйвера устройства
Драйверы устройств включают периферийные устройства, такие как принтеры или клавиатуры, взаимодействовать с компьютером. В следующем изложены шаги, которые могут предпринять разработчики или программисты при разработке драйверов устройств для операционных систем, таких как Windows, Linux или MacOS.
1. Знать оборудование
При разработке драйвера устройства программисты должны иметь глубокое понимание платформы’S Аппаратное обеспечение. Они должны знать интерфейс шины, который оборудование использует для связи с хостом и расположением программного обеспечения для драйверов устройства. Они должны прочитать таблицу устройства, чтобы понять соответствующие термины и определения. Они также должны знать метод, с помощью которого происходит передача данных.
Если основное устройство является системой на чипе, разработчики должны знать, как взаимодействует драйвер со своей прошивкой и протоколами команд. Кроме того, разработчики должны быть готовы к документации, чтобы терпеть неудачу при обращении с новым типом аппаратного обеспечения. Таким образом, они должны быть готовы провести больше тестов, чем обычно.
2. Напишите код драйвера
На этом этапе разработчики должны получить рабочий прототип своего предпочтительного оборудования. Затем они должны начать писать драйвер режима ядра.
Если устройство неверно разработано, драйверы, работающие в режиме пользователя, могут привести к сбою системы. Точно так же, если что -то пойдет не так, когда водители работают в условиях привилегированных условий, могут возникнуть операционные проблемы. Таким образом, разработчики должны воспользоваться информацией в документации по разработке драйвера, доступной для выбранной операционной системы, будь то Windows или Linux.
Первые функции драйвера устройства, которые разработаны, – это функции нагрузки и выгрузки. Когда операционная система запускается и останавливается, эти функции вызываются. Одной из основных обязанностей функций загрузки/выгрузки является определение того, подключено ли оборудование в систему или нет. Пользователи могут обнаружить оборудование, используя идентификатор устройства, указанный конкретной шиной. Если оборудование подключено, то функция загрузки успешна. Если нет, вызовите функцию разгрузки.
3. Инициализируйте аппаратное обеспечение
Как только устройство сможет обнаружить аппаратное обеспечение, следующий шаг его инициализирует его. Требуемый тип инициализации может отличаться в зависимости от вида оборудования. Инициализация может варьироваться от записи до регистра устройств до загрузки микрокода на устройство и общение на долгосрочной основе, используя протоколы проприетарных команд.
4. Управляйте аппаратным обеспечением
Управление аппаратным обеспечением возможно только в том случае, если разработчики могут инициализировать и общаться с аппаратным обеспечением. Процесс управления зависит от устройства. Разработчики должны рассмотреть вопрос о том, будет ли устройство просто передавать данные с одного устройства на другое.
Например, при передаче музыки со смартфона на динамик. Они также должны учитывать, будет ли устройство постоянно отправлять данные и инструкции на другие устройства. Например, сообщение принтеру печатать черно-белый на одной стороне бумаги, а затем двухсторонний отпечаток в цвете.
Драйвер устройства включает настройки данных, такие как скорость воспроизведения и быстрый вход через компьютер в команды для устройства. В отличие от предыдущих трех шагов, это может занять больше времени. Первые три шага могут быть разовой работой, когда загружается ОС. Тем не менее, разработчикам может потребоваться выполнить шаг 4 несколько раз после того, как ОС настраивается и работает. Пользователи могут иногда объединять 3 -й и 4 -й шаги в один шаг.
5. Начать связь с аппаратным обеспечением
Несколько устройств имеют дело с какой -то формой данных, будь то аудио или видео. Как только устройство будет инициализировано, разработчики могут отправлять постоянный поток данных по мере необходимости. Драйвер устройства действует как труба между приложением более высокого уровня и оборудованием или прошивкой нижнего уровня для передачи данных.
Как отмечено на первом этапе, разработчики должны знать протоколы, предназначенные для передачи данных. Передаты данных могут быть прерываны или опрошены. ОС предоставляет средства, такие как обмен сообщениями или процедуры службы прерывания, используемые в процессе передачи данных. Разработчики должны начать с передачи одного пакета данных и обеспечения того, чтобы весь процесс от шагов 1 по 3 работает нормально.
6. Контроль данных данных
На этом этапе разработчики необходимо контролировать передачу данных и управлять коммуникацией в нескольких ситуациях. Когда возникают проблемы, пользователи должны помешать периферийным устройствам отправлять то же сообщение об ошибке. В аудио -потоке, когда есть переполнение буфера или значительная проблема с качеством звука, они должны отправить команду Stop.
7. Проверьте драйвер и отлаживает его
Тестирование является важным аспектом. Разработчики должны проверить устройство, чтобы убедиться, что оно распознается и инициализировано. Они также должны запускать функциональные тесты, чтобы обеспечить работу драйверов устройства, как и ожидалось. Они также должны быть готовы внести изменения в аппаратное обеспечение, чтобы обеспечить плавную работу. Кроме того, разработчики должны проверить драйверы устройств на различных версиях операционной системы, чтобы убедиться, что они являются вперед и обратно совместимы. Как только драйвер устройства работает, разработчики могут зарегистрировать его.
9 типов драйверов устройств
Разработчики могут различать следующие типы драйверов устройств:
1. Драйверы устройства ядра
Драйверы устройств ядра состоят из некоторого общего оборудования, загруженного с операционной системой (ОС) как часть ОС. Они включают материнские платы, переработчики и биос. Они вызываются и загружаются в память о случайном доступе (ОЗУ) при необходимости. Когда некоторые из них работают одновременно, машина может замедлиться. Таким образом, существует минимальное требование для каждой ОС.
Драйверы устройств ядра уловывают. Драйверы более высокого уровня, такие как драйверы файловой системы, получение данных из приложений, фильтровать их и передавать их драйверу более низкого уровня, поддерживая функциональность диска. Драйверы устройств ядра реализованы как дискретные и модульные компоненты, которые имеют четко определенную набор необходимых функций.
2. Драйверы устройств пользователя
Драйверы устройств пользователя режима выполняются в режиме пользователя. Они ссылаются на драйверы устройств, которые пользователи могут запустить во время сеанса. При использовании системы пользователи могут иметь свои собственные внешние устройства, которые они используют, например, внешние устройства Plug-и Play. Эти устройства также требуют, чтобы водители функционировали. В системах Windows драйверы устройств пользователя обеспечивают интерфейс между драйверами приложения Win32 и драйверами режима ядра или другими операционными системами. Пользователи могут написать эти драйверы на диск, чтобы уменьшить нагрузку на компьютерные ресурсы.
3. Драйверы персонажей
Драйверы устройств символов обеспечивают неструктурированный доступ к аппаратному обеспечению. Они передают данные на устройства и обратно без использования конкретного адреса устройства. Они разрешают чтение или написание одного байта за раз в качестве потока последовательных данных. Драйверы символов не обрабатывают ввод/вывод (ввод/вывод) через буферный кеш, поэтому они более гибки в обработке ввода -вывода. Они в паре с блочными устройствами, чтобы обойти буферный кэш, чтобы предложить необработанные операции ввода -вывода прямо в адресное пространство программы пользователя.
Кроме того, они предоставляют дополнительные интерфейсы, такие как команды управления вводом/выводом, опрос устройств и отображение памяти. Примерами являются модемы и контроллеры шины.
4. Блок драйверов
Драйверы блокировки устройств обеспечивают структурированный доступ к аппаратному обеспечению. Они используют буферы размером с блока файловой системы из буферного кэша, поставляемого ядром для выполнения ввода/вывода. Буферный кеш – это пул памяти, установленные ядром для хранения часто доступных блоков через блочные устройства. Буферный кэш уменьшает количество запросов ввода/вывода, которые нуждаются в операции ввода/вывода с устройства.
Кроме того, драйверы блокировки устройств обеспечивают доступный блок-ориентированный ввод-вывод и демонстрируют долговечность данных. Они принимают запрос на файловую систему и выдают процедуры ввода/вывода на диск для передачи запрошенного блока. Примерами являются ключи от памяти USB и дисковые диски.
5. Водители производителя оригинального оборудования (OEM)
Драйверы устройств могут быть классифицированы как общие или OEM-связанные. Общие драйверы ссылаются на драйверы устройств с их программным обеспечением, связанным с оборудованием OEM. Можно использовать общие драйверы с разными брендами конкретного типа устройства. Например, Linux работает с несколькими общими драйверами, которые функционируют без необходимости установить какое -либо другое программное обеспечение вручную.
OEM -производители могут создавать свои проприетарные драйверы устройств, которые необходимо установить отдельно после установки ОС. Водители OEM включают аппаратное обеспечение, такое как клавиатуры, чтобы общаться с ОС хоста. Например, драйверы OEM включают такие функции, как интеграция системы управления освещением с оборудованием OEM в Google Assistant и Alexa.
6. Драйверы виртуальных устройств
Драйверы виртуальных устройств необходимы для управления виртуальными машинами или виртуальными машинами . Они работают как в средах виртуализации, так и в не виртуализации. В средах виртуализации эти драйверы используются для эмуляции аппаратного обеспечения хост -устройства. Они управляют или управляют оборудованием для ресурса хост -устройства, чтобы гарантировать, что как гостевое, так и хост -устройство запускаются в соответствии с ожиданием.
Например, когда гостевая операционная система работает на хосте, она делает вызовы функций для драйверов виртуальных устройств для доступа к аппаратному обеспечению. Кроме того, они имитируют события на уровне процессора, такие как прерывания, и передают их на виртуальную машину.
7. Биос
Основная система ввода (BIOS) является наиболее фундаментальным драйвером на компьютере. Он расположен в чипе памяти только для чтения (ROM), который гарантирует, что BIOS будет доступен, даже если отформатирован жесткий диск. Он отвечает за загрузку компьютера и предоставление его набором инструкций во время этого процесса. Он также выполняет силовые тестирование (post), которые требуются во время запуска. BIOS также предоставляет драйверы для базового оборудования, такого как клавиатуры и мониторы, чтобы обеспечить взаимодействие с операционной системой для функционирования как предполагаемое.
8. Водители материнской платы
Драйверы материнской платы – это простые приложения, которые могут использовать как Windows, так и Linux. Они существуют в операционной системе и обеспечивают фундаментальные компьютерные операции. Эти драйверы составляют приложения, которые позволяют клавиатуру и мышь’S USB -устройства и порты ввода -вывода работают. У некоторых материнских плат есть драйверы, которые поддерживают видео и аудио.
Драйверы материнской платы специфичны для модели чипсета, например, B460 для компьютеров Intel. Чтобы понять материнскую плату’S Полный потенциал и включение компонентов, подключенных к нему, для правильной работы, пользователям может потребоваться установить дополнительные драйверы.
9. Драйверы с открытым исходным кодом
Водители с открытым исходным кодом относятся к водителям, которые выпускаются по бесплатной лицензии с открытым исходным кодом. Например, графические драйверы с открытым исходным кодом управляют выходом на дисплей, если дисплей является частью графического оборудования. Исходный код для драйверов с открытым исходным кодом доступен для всех, что облегчает сотрудничество программного обеспечения. Они более заслуживают доверия, так как люди могут проверить их на наличие вредоносного кода.
Водители с открытым исходным кодом предлагают больше конфиденциальности. Если они отслеживают пользователей, люди могут перераспределить копию программного обеспечения с удалением отслеживания. Драйверы с открытым исходным кодом длится дольше, так как все больше людей продолжают вносить улучшения, гарантируя, что даже когда компания перестает их распространять, остается копия.
Приложения драйверов устройств
Эти важные строительные блоки личных и корпоративных вычислений используются следующими способами:
1. Драйверы устройств для доступа к системам хранения
Системы хранения компьютеров позволяют пользователям хранить данные и делать их по запросу. Они включают в себя внешние и внутренние устройства, такие как USB-флэш-накопители, жесткие диски и сетевое хранилище. Драйверы в системах хранения позволяют им взаимодействовать с компьютером. Это гарантирует, что компьютер сможет получить доступ к своим внутренним или внешним системам хранения, запросит их информацию и разрешает передачу данных.
Подключение устройств хранения к компьютеру без драйверов становится трудным, поскольку ОС не обнаруживает их. Обычно ОС распознаются жесткие диски и CD-ROMS и не требуют, чтобы водители были установлены вручную. Пользователи должны устанавливать драйверы из производителя’Сайт S, если они не обнаружены автоматически.
2. Драйверы устройств для устройств ввода и вывода
Компьютер’S OS взаимодействует с драйверами устройств, чтобы обеспечить его аппаратные функции, как и ожидалось. Входные устройства включают мышей и клавиатуры, в то время как выходные устройства включают в себя устройства отображения, такие как мониторы. Клавиатуры, мышей и мониторов классифицируются как устройства Plug и Play.
Обычно драйверы для устройств Plug-and-Play являются общими и не требуют ручной установки, как компьютер’S OS распознает их и устанавливает автоматически. Однако, если внешнее устройство не является устройством для подключаемой игры, пользователям может потребоваться вручную установить драйверы с диска установки или загрузить их. Это позволит ОС распознавать эти устройства.
3. Драйверы устройств для цифровых камер
Драйвер цифровой камеры – это программа, которая позволяет общаться между ИТ и другими устройствами, такими как компьютеры. Без драйверов ОС не обнаружит это устройство. Большинство цифровых камер совместимы только с ОС Windows, так как Linux Systems отстает.
Цифровые драйверы камеры позволяют передавать фотографии с камеры на компьютер. Они позволяют цифровым камерам печатать фотографии, используя стандарт Pictbridge непосредственно на компьютерный принтер, способствующий Pictbridge, без необходимости компьютера. Драйверы в порте вывода видео позволяют пользователям отображать изображения по телевизору, выбирая одно видео или фото за раз.
4. Драйверы для мобильных операционных систем, таких как Android
У мобильных телефонов есть драйверы, позволяющие им общаться с компьютерами. Драйверы поставляются в комплекте с прошивкой на большинстве телефонов, что позволяет компьютерам загружать их для поддержки оборудования, так как ОС не указана. Однако иногда пользователям может потребоваться установить программное обеспечение OEM PC сначала для установки драйверов и разрешения передачи данных.
Драйверы позволяют интегрировать периферийные устройства, такие как игровые контроллеры или клавиатуры на основе операционных систем, таких как Android Things и Android. Драйверы обеспечивают доступ и управление аппаратным обеспечением. Кроме того, они позволяют интеллектуальным устройствам работать с пользовательскими приложениями.
5. Драйверы устройств для превосходной производительности видео
Графические карты являются основными компонентами компьютерной системы и несут ответственность за превосходную производительность видео в компьютерах, играх или других графических задачах. Графические драйверы позволяют графическим картам взаимодействовать с компьютером’S Операционная система и, таким образом, необходима для получения максимальной производительности от графических карт.
Обновление графических драйверов и других драйверов Windows 11 (или более старых) может дать пользователям повышение скорости, исправление проблем, а иногда даже предоставлять пользователям новые функции. Например, обновление игровых драйверов может увеличивать кадры в секунду, уменьшая задержку.
Еда на вынос
Поскольку потребители и предприятия все чаще используют устройства и периферийные устройства, драйверы устройств необходимы для ИТ -инфраструктуры . Современная технология драйвера может улучшить функционирование компьютера за счет снижения потребления ресурсов и скорости повышения. Вот почему необходимо знать, как работают драйверы, и иметь обычный график исправления и обновления драйвера, чтобы вся экосистема устройства работала гладко.
Вы нашли эту статью полезной при изучении драйверов устройств? Расскажи нам Facebook Открывает новое окно , Twitter Открывает новое окно , и LinkedIn Открывает новое окно . Мы’D люблю слышать от тебя!
Подробнее о DevOps
- 10 лучших сертификатов Azure DevOps в 2022 году
- Что такое жизненный цикл DevOps? Определение, ключевые компоненты и лучшие практики управления
- 10 лучших сертификатов Scrum Master в 2022 году
- Топ -18 azure devOps Вопросы интервью в 2022 году
- 10 лучших сертификатов и курсов DevOps в 2022 году