Ips driver что это

Обновлено: 05.07.2024

Сетевые драйверы можно разделить на 2 категории: TDI-драйверы (Transport Driver Interface) и NDIS-драйверы (Network Driver Interface Specification). TDI-драйверы — это высокоуровневые драйверы, например, SMB-клиент, SMB-сервер, обертки SMB (NFFS, MSFS) и т.п. Мы с Вами рассмотрим NDIS-драйвера. NDIS — это специальный драйвер (ему соответствует файл ndis.sys), который содержит функции, используемые низкоуровневыми сетевыми драйверами. NDIS как бы обволакивает низкоуровневые сетевые драйверы и является посредником в их общении между собой и с железом. По сути NDIS можно считать третьим ядром Windows. Чтобы более четко уяснить себе что из себя представляет NDIS можно посмтореть на следующую картинку:

  • Минипорт-драйверы (драйверы адаптера)
  • Промежуточные драйверы (например, psched.sys)
  • Драйверы протокола (например, tcpip.sys)

Минипорт-драйверы

  • производит инициализацию своего устройства (адаптера)
  • создание /включение/выключение/удаление сетевых подключений
  • выдача клиенту или изменение параметров адаптера
  • отправка пакетов
  • получение пакетов
  • оповещение ОС о состоянии адаптера
  • перезагрузка и остановка адаптера

Минипорт-драйверы бывают «Connectionless» (например, драйвер Ethernet-адаптера) и «Сonnection-oriented» (например, драйвер модема). У Сonnection-oriented драйверов система коллбэков чуть сложнее, в нее входят обработчики событий, связанных с подключением к каналу связи, отключением от канала, выбором канала (для беспроводных адаптеров) и т.п. Для некоторых операций Сonnection-oriented драйверы вызывают специальные функции NDIS, отличающиеся префиксом «Со» в имени (например, вместо NdisMIndicateReceivePacket Сonnection-oriented драйвер должен вызывать NdisMColndicateReceivePacket).

Каждый коллбэк выполняет свою задачу: выдача информации, отправка данных, прием данных и т.п. Подробнее можно посмотреть в хелпе к WDK (DDK). Там можно получить полную информацию о коллбэках.

Драйверы протоколов могут передоверять минипорт-драйверу (при условии, что минипорт-драйвер это умеет — либо сам, либо адаптер умеет это делать на аппаратном уровне) некоторые свои функции (например, разграничить контрольную сумму или цифровую подпись IP-пакета или принять решение, как фрагментировать большой ТСP-пакет). Это значительно повышает производитель сети.

  1. LBFO (Load Balancing and Fail Over) — позволяет понимающим его адаптерам распределять между собой исходящий трафик и исправлять ошибки друг друга. Впрочем, что имеет смысл только на backbone routers (центральных маршрутизаторах больших сетей), на которые редко ставят Windows
  2. FFP (Fast Forwarding Path) — позволяет понимающим его адаптерам маршрутизировать/фильтровать пакеты чисто аппаратно, вообще без участия ОС и не нагружая основные процессоры компьютера

Промежуточные драйверы

Промежуточный драйвер сверху виден как минипорт-драйвер (смотрим на картинку), т.е. как бы виртуальный адаптер, а снизу — как драйвер протокола (снова смотрим на картинку), как бы виртуальный протокол. Как частный случай, возможна ситуация, когда промежуточный драйвер виден только сверху.

  • организуют «справедливый» доступ разных клиентских программ к адаптерам дабы программы не мешали друг другу
  • фильтруют и перехватывают трафик
  • маршрутизируют пакеты из одной сети в другую, если эти сети различаются (например, Ethernet и WI-FI)
Драйверы протоколов

Драйверы протокола — это самый верхний уровень спецификации NDIS. Эти драйверы занимаются тем, что выделяют ресурсы для соответствующих пакетов, копируют данные приложений в пакеты и передают их драйверам нижнего уровня. Также драйверы протоколов обеспечивают интерфейс для получения пакетов от нижележащих драйверов.

К драйверам протоколов относятся и драйверы транспорта, реализующие стек сетевых протоколов, такой как например TCP/IP (tspip.sys).

Если пост будет интересен читателям, то в следующих постах можно конкретно на примере написать свой сниферо-подобный промежуточный драйвер или также описать как написать каждый из типов драйверов (минипорта, промежуточный или протокола).


Как уважаемый хабрапользователь наверняка знает, «драйвер устройства» — это компьютерная программа управляющая строго определенным типом устройства, подключенным к или входящим в состав любого настольного или переносного компьютера.

Основная задача любого драйвера – это предоставление софтового интерфейса для управления устройством, с помощью которого операционная система и другие компьютерные программы получают доступ к функциям данного устройства, «не зная» как конкретно оно используется и работает.

Обычно драйвер общается с устройством через шину или коммуникационную подсистему, к которой подключено непосредственное устройство. Когда программа вызывает процедуру (очередность операций) драйвера – он направляет команды на само устройство. Как только устройство выполнило процедуру («рутину»), данные посылаются обратно в драйвер и уже оттуда в ОС.

Любой драйвер является зависимым от самого устройства и специфичен для каждой операционной системы. Обычно драйверы предоставляют схему прерывания для обработки асинхронных процедур в интерфейсе, зависимом от времени ее исполнения.

Любая операционная система обладает «картой устройств» (которую мы видим в диспетчере устройств), для каждого из которых необходим специфический драйвер. Исключения составляют лишь центральный процессор и оперативная память, которой управляет непосредственно ОС. Для всего остального нужен драйвер, который переводит команды операционной системы в последовательность прерываний – пресловутый «двоичный код».

Как работает драйвер и для чего он нужен?

Основное назначение драйвера – это упрощение процесса программирования работы с устройством.

Он служит «переводчиком» между хардовым (железным) интерфейсом и приложениями или операционными системами, которые их используют. Разработчики могут писать, с помощью драйверов, высокоуровневые приложения и программы не вдаваясь в подробности низкоуровневого функционала каждого из необходимых устройств в отдельности.

Как уже упоминалось, драйвер специфичен для каждого устройства. Он «понимает» все операции, которые устройство может выполнять, а также протокол, с помощью которого происходит взаимодействие между софтовой и железной частью. И, естественно, управляется операционной системой, в которой выполняет конкретной приложение либо отдельная функция самой ОС («печать с помощью принтера»).

Если вы хотите отформатировать жесткий диск, то, упрощенно, этот процесс выглядит следующим образом и имеет определенную последовательность: (1) сначала ОС отправляет команду в драйвер устройства используя команду, которую понимает и драйвер, и операционная система. (2) После этого драйвер конкретного устройства переводит команду в формат, который понимает уже только устройство. (3) Жесткий диск форматирует себя, возвращает результат драйверу, который уже впоследствии переводит эту команду на «язык» операционной системы и выдает результат её пользователю (4).

Как создается драйвер устройства


Для каждого устройства существует свой строгий порядок выполнения команд, называемой «инструкцией». Не зная инструкцию к устройству, невозможно написать для него драйвер, так как низкоуровневые машинные команды являются двоичным кодом (прерываниями) которые на выходе отправляют в драйвер результат, полученный в ходе выполнения этой самой инструкции.

При создании драйвера для Линукса, вам необходимо знать не только тип шины и ее адрес, но и схематику самого устройства, а также весь набор электрических прерываний, в ходе исполнения которых устройство отдает результат драйверу.

Написание любого драйвера начинается с его «скелета» — то есть самых основных команд вроде «включения/выключения» и заканчивая специфическими для данного устройства параметрами.

И чем драйвер не является

Часто драйвер устройства сравнивается с другими программами, выполняющими роль «посредника» между софтом и/или железом. Для того, чтобы расставить точки над «i», уточняем:

  • Драйвер не является интерпретатором, так как не исполняется напрямую в софтовом слое приложения или операционной системы.
  • Драйвер не является компилятором, так как не переводит команды из одного софтового слоя в другой, такой же.

Ну и на правах рекламы – вы всегда знаете, где скачать новейшие драйвера для любых устройств под ОС Windows.

Недавно один знакомый попросил меня помочь с проблемой. Он занимается разработкой LED ламп, попутно ими приторговывая. У него скопилось некоторое количество ламп, работающих неправильно. Внешне это выражается так – при включении лампа вспыхивает на короткое время (менее секунды) на секунду гаснет и так повторяется бесконечно. Он дал мне на исследование три таких лампы, я проблему решил, неисправность оказалась очень интересной (прямо в стиле Эркюля Пуаро) и я хочу рассказать о пути поиска неисправности.

LED лампа выглядит вот так:



Рис 1. Внешний вид разобранной LED лампы

Разработчик применил любопытное решение – тепло от работающих светодиодов забирается тепловой трубкой и передается на классический алюминиевый радиатор. По словам автора, такое решение позволяет обеспечить правильный тепловой режим для светодиодов, минимизируя тепловую деградацию и обеспечивая максимально возможный срок службы диодов. Попутно увеличивается срок службы драйвера питания диодов, так как плата драйвера оказывается вынесенной из теплового контура и температура платы не превышает 50 градусов Цельсия.

Такое решение – разделить функциональные зоны излучения света, отвода тепла и генерации питающего тока – позволило получить высокие эксплуатационные характеристики лампы по надежности, долговечности и ремонтопригодности.
Минус таких ламп, как ни странно, прямо вытекает из ее плюсов – долговечная лампа не нужна производителям :). Историю о сговоре производителей ламп накаливания о максимальном сроке службы в 1000 часов все помнят?

Ну и не могу не отметить характерный внешний вид изделия. Мой «госконтроль» (жена) не разрешил мне ставить эти лампы в люстру, где они видны.

Вернемся к проблемам драйвера.

Вот так выглядит плата драйвера:



Рис 2. Внешний вид платы LED драйвера со стороны поверхностного монтажа

И с обратной стороны:



Рис 3. Внешний вид платы LED драйвера со стороны силовых деталей

Изучение ее под микроскопом позволило определить тип управляющей микросхемы – это MT7930. Это микросхема контроля обратноходового преобразователя (Fly Back), обвешанная разнообразными защитами, как новогодняя елка – игрушками.

В МТ7930 встроены защиты:

• от превышения тока ключевого элемента
• понижения напряжения питания
• повышения напряжения питания
• короткого замыкания в нагрузке и обрыва нагрузки.
• от превышения температуры кристалла

Декларирование защиты от короткого замыкания в нагрузке для источника тока носит скорее маркетинговый характер :)

Принципиальной схемы на именно такой драйвер добыть не удалось, однако поиск в сети дал несколько очень похожих схем. Наиболее близкая приведена на рисунке:


Рис 4. LED Driver MT7930. Схема электрическая принципиальная

Анализ этой схемы и вдумчивое чтение мануала к микросхеме привело меня к выводу, что источник проблемы мигания – это срабатывание защиты после старта. Т.е. процедура начального запуска проходит (вспыхивание лампы – это оно и есть), но далее преобразователь выключается по какой-то из защит, конденсаторы питания разряжаются и цикл начинается заново.

Внимание! В схеме присутствуют опасные для жизни напряжения! Не повторять без должного понимания что вы делаете!

Для исследования сигналов осциллографом надо развязать схему от сети, чтобы не было гальванического контакта. Для этого я применил разделительный трансформатор. На балконе в запасах были найдены два трансформатора ТН36 еще советского производства, датированные 1975 годом. Ну, это вечные устройства, массивные, залитые полностью зеленым лаком. Подключил по схеме 220 – 24 – 24 -220. Т.е. сначала понизил напряжение до 24 вольт (4 вторичных обмотки по 6.3 вольта), а потом повысил. Наличие нескольких первичных обмоток с отводами дало мне возможность поиграть с разными напряжениями питания – от 110 вольт до 238 вольт. Такое решение конечно несколько избыточно, но вполне пригодно для одноразовых измерений.



Рис 5. Фото разделительного трансформатора

Из описания старта в мануале следует, что при подаче питания начинает заряжаться конденсатор С8 через резисторы R1 и R2 суммарным сопротивлением около 600 ком. Два резистора применены из требований безопасности, чтобы при пробое одного ток через эту цепь не превысил безопасного значения.

Итак, конденсатор по питанию медленно заряжается (это время порядка 300-400 мс) и когда напряжение на нем достигает уровня 18,5 вольт – запускается процедура старта преобразователя. Микросхема начинает генерировать последовательность импульсов на ключевой полевой транзистор, что приводит к возникновению напряжения на обмотке Na. Это напряжение используется двояко – для формирования импульсов обратной связи для контроля выходного тока (цепь R5 R6 C5) и для формирования напряжения рабочего питания микросхемы (цепь D2 R9). Одновременно в выходной цепи возникает ток, который и приводит к зажиганию лампы.

Почему же срабатывает защита и по какому именно параметру?

Первое предположение

Срабатывание защиты по превышению выходного напряжения?

Для проверки этого предположения я выпаял и проверил резисторы в цепи делителя (R5 10 ком и R6 39 ком). Не выпаивая их не проверить, поскольку через обмотку трансформатора они запараллелены. Элементы оказались исправны, но в какой-то момент схема заработала!

Я проверил осциллографом формы и напряжения сигналов во всех точках преобразователя и с удивлением убедился, что все они – полностью паспортные. Никаких отклонений от нормы…

Дал схеме поработать часок – все ОК.

А если дать ей остыть? После 20 минут в выключенном состоянии не работает.

Очень хорошо, видимо дело в нагреве какого-то элемента?

Но какого? И какие же параметры элемента могут уплывать?

В этой точке я сделал вывод, что на плате преобразователя имеется какой-то элемент, чувствительный к температуре. Нагрев этого элемента полностью нормализует работу схемы.
Что же это за элемент?

Второе предположение

Подозрение пало на трансформатор. Проблема мыслилась так – трансформатор из-за неточностей изготовления (скажем на пару витков недомотана обмотка) работает в области насыщения и из-за резкого падения индуктивности и резкого нарастания тока срабатывает защита по току полевого ключа. Это резистор R4 R8 R19 в цепи стока, сигнал с которого подается на вывод 8 (CS, видимо Current Sense) микросхемы и используется для цепи ОС по току и при превышении уставки в 2.4 вольта отключает генерацию для защиты полевого транзистора и трансформатора от повреждений. На исследуемой плате стоит параллельно два резистора R15 R16 с эквивалентным сопротивлением 2,3 ома.

Но насколько я знаю, параметры трансформатора при нагреве ухудшаются, т.е. поведение системы должно быть другим – включение, работа минут 5-10 и выключение. Трансформатор на плате весьма массивный и тепловая постоянная у него ну никак не менее единиц минут.
Может, конечно в нем есть короткозамкнутый виток, который исчезает при нагреве?

Перепайка трансформатора на гарантированно исправный была в тот момент невозможна (не привезли еще гарантированно рабочую плату), поэтому оставил этот вариант на потом, когда совсем версий не останется :). Плюс интуитивное ощущение – не оно. Я доверяю своей инженерной интуиции.

К этому моменту я проверил гипотезу о срабатывании защиты по току, уменьшив резистор ОС по току вдвое припайкой параллельно ему такого же – это никак не повлияло на моргание лампы.

Значит, с током полевого транзистора все нормально и превышения по току нет. Это было хорошо видно и по форме сигнала на экране осциллографа. Пик пилообразного сигнала составлял 1,8 вольта и явно не достигал значения в 2,4 вольта, при котором микросхема выключает генерацию.

К изменению нагрузки схема также оказалась нечувствительна – ни подсоединение второй головки параллельно, ни переключение прогретой головы на холодную и обратно ничего не меняло.

Третье предположение

Я исследовал напряжение питания микросхемы. При работе в штатном режиме все напряжения были абсолютно нормальными. В мигающем режиме тоже, насколько можно было судить по формам сигналов на экране осциллографа.

По прежнему, система мигала в холодном состоянии и начинала нормально работать при прогреве ножки трансформатора паяльником. Секунд 15 погреть – и все нормально заводится.

Прогрев микросхемы паяльником ничего не давал.

И очень смущало малое время нагрева… что там может за 15 секунд измениться?

В какой-то момент сел и методично, логически отсек все гарантированно работающее. Раз лампа загорается — значит цепи запуска исправны.
Раз нагревом платы удается запустить систему и она часами работает — значит и силовые системы исправны.
Остывает и перестает работать — что-то зависит от температуры…
Трещина на плате в цепи обратной связи? Остывает и сжимается, контакт нарушается, нагревается, расширяется и контакт восстанавливается?
Пролазил тестером холодную плату — нет обрывов.

Что же еще может мешать переходу от режима запуска в рабочий режим.

От полной безнадеги интуитивно припаял параллельно электролитическому конденсатору 10 мкф на 35 вольт по питанию микросхемы такой же.

И тут наступило счастье. Заработало!

Замена конденсатора 10 мкф на 22 мкф полностью решило проблему.

Вот он, виновник проблемы:



Рис 6. Конденсатор с неправильной емкостью

Теперь стал понятен механизм неисправности. Схема имеет две цепи питания микросхемы. Первая, запускающая, медленно заряжает конденсатор С8 при подаче 220 вольт через резистор в 600 ком. После его заряда микросхема начинает генерировать импульсы для полевика, запуская силовую часть схемы. Это приводит к генерации питания для микросхемы в рабочем режиме на отдельной обмотке, которое поступает на конденсатор через диод с резистором. Сигнал с этой обмотки также используется для стабилизации выходного тока.

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

Отловить эту просадку напряжения питания осциллографом не получалось — слишком грубая оценка. Мне казалось, что все нормально.

Прогрев же платы увеличивал емкость конденсатора на недостающие проценты — и энергии уже хватало на нормальный запуск.

Понятно, почему только некоторая часть драйверов отказала при полностью исправных элементах. Сыграло роль причудливое сочетание следующих факторов:

• Малая емкость конденсатора по питанию. Положительную роль сыграл допуск на емкость электролитических конденсаторов (-20% +80%), т.е. емкости номиналом 10 мкф в 80% случаев имеют реальную емкость около 18 мкф. Со временем емкость уменьшается из-за высыхания электролита.
• Положительная температурная зависимость емкости электролитических конденсаторов от температуры. Повышенная температура на месте выходного контроля — достаточно буквально пары-тройки градусов и емкости хватает для нормального запуска. Если предположить, что на месте выходного контроля было не 20 градусов, а 25-27, то этого оказалось достаточно для практически 100% прохождения выходного контроля.

Производитель драйверов сэкономил конечно, применив емкости меньшего номинала по сравнению с референс дизайн из мануала (там указано 22 мкф) но свежие емкости при повышенной температуре и с учетом разброса +80% позволили партию драйверов сдать заказчику. Заказчик получил вроде бы работающие драйверы, которые со временем стали отказывать по непонятной причине. Интересно было бы узнать – инженеры производителя учли особенности поведения электролитических конденсаторов при повышении температуры и естественный разброс или это получилось случайно?

«Слетели драйвера», «У меня нет драйверов на принтер», «Видеокарте нужны драйвера» — если вам непонятно, что это значит и на что влияют драйверы, то эта статья для вас.

Что такое драйвер

Драйвер — это программа, которая работает как инструкция для операционной системы. Драйвер объясняет операционке, как пользоваться каким-то устройством.

Устройство — это то, что физически подключается к компьютеру:

  • видеокарта,
  • мышь,
  • криптотокен,
  • монитор,
  • сканер,
  • джойстик для игр.

Драйвер рассказывает компьютеру, как этим железом пользоваться, что оно умеет, какие команды понимает и как это железо могут использовать другие программы.

👉 Технически драйвер — это программа, которая висит в памяти компьютера всё время, пока компьютеру нужно это устройство.

Что такое драйвер и зачем он нужен

Известное и неизвестное железо

Операционная система в компьютере знает и умеет многое, в том числе и работать со стандартным оборудованием. Стандартным — это значит тем, которое предоставляет стандартные возможности.

Например, клавиатура, мышь или веб-камера — это стандартное оборудование, потому что независимо от производителя они делают примерно одно и то же.

Разработчики операционной системы знают про такое оборудование, поэтому могут написать стандартные драйверы, которые подойдут к большинству устройств. Именно поэтому мы можем купить в магазине новую мышь и просто подключить её к компьютеру без установки дополнительных программ — операционная система сама разберётся, что делать.

Но бывает так, что разработчики добавили в устройство нестандартные возможности: переназначение сочетаний клавиш, сделали мышь с несколькими колёсиками или встроенный лазерный дальномер в видеокамеру. В этом случае компьютер не разберётся, как этим всем пользоваться, потому что в стандартных драйверах про это ничего нет.

В таких случаях разработчики устройств пишут свой драйвер, который объяснит компьютеру, как пользоваться всеми возможностями устройства. Этот драйвер нужно будет установить.

Сложное оборудование

Ещё бывает так, что оборудование хоть и стандартное, но сложное, например, видеокарта или принтер. Каждый производитель добавляет свои функции и технологии, которые считает нужными, и чаще всего они не совпадают с другими. Если подключить такое устройство к компьютеру, то компьютер, скорее всего, разберётся, что именно в него воткнули, то как с этим работать — неизвестно.

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

Например, если у вас навороченная видеокарта, вы вставляете её в компьютер и сначала видите странную огромную картинку с низким разрешением. Это значит, что компьютер пока не нашёл драйверов на эту карточку и запустил её в «режиме совместимости» — то есть в том режиме, в котором он точно сможет ей управлять. Но возможности видеокарты будут сильно порезаны, пока мы не установим нужные нам драйверы.

Что значит «слетели драйвера»?

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

Решение простое: берёте заново драйвер с официального сайта или тот, который шёл в комплекте с устройством, и запускаете программу-установщик заново. А она уже сама разберётся, каких файлов не хватает, и настроит всё заново.

Драйверы нужны только на Windows?

Драйверы нужны на всех компьютерах и для всех операционных систем. Но некоторые операционки идут с кучей драйверов в комплекте, а у других этот набор более скромный.

Общее правило для 2021 года такое: большая часть оборудования, которое нужно для обычной офисной работы, подключится к любому компьютеру без необходимости что-то устанавливать. Операционка сама поймёт, что это за устройство, и, скорее всего, у неё уже будут драйверы.

А вот какое-то более сложное оборудование (например, профессиональная аудиокарта или видеокамера) потребуют установки драйверов от производителя.

В чём проблема с драйверами

Проблема в том, что часто производители не делают новые драйверы для старого оборудования. Например:

Есть диджейский контроллер Numark NS7 — это профессиональное оборудование для диджеев и артистов, оно стоит дорого и нужно примерно 100 тысячам человек на всей планете.

Когда контроллер только вышел, компания Numark выпускала драйвера на все свежие операционные системы, проблем с совместимостью не было.

Потом аппарат сняли с производства, поддержку прекратили. Последняя версия драйверов, которую выпустил Numark, — для Windows 10 и MacOS 10.12 (Sierra). С тех пор у Windows вышло большое обновление до 11, а MacOS обновился раз пять. Причём последние две версии сделаны для процессоров Apple, и уже нет надежды, что Numark обновит драйверы для этой архитектуры.

Так что, если вам достался этот редкий профессиональный прибор, вы вынуждены сидеть на древней MacOS Sierra, которая стремительно перестаёт поддерживаться современным софтом.

Читайте также: