+7 (812) 670-9095
Обратная связьEnglish
Главная → Продукты → Системное ПО → Драйверы
Павел Локтев, Руководитель группы продаж
Заказать звонок Задать вопрос
Версия для печати

Драйверы

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

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

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


Заказать презентацию

АстроСофт занимается разработкой драйверов уже более пятнадцати лет. За это время в мире Windows концепция разработки драйверов успела несколько раз измениться — от частично ассемблерного кода для Windows 95 до современной среды WDF, позволяющей разрабатывать некоторые виды драйверов, ничем не отличимых которые ничем не отличаются от обычных пользовательских приложений.

Драйверы Windows

Windows Driver Model (WDM)
Данная концепция разработки драйверов сформировалась в начале тысячелетия. Главный её недостаток для разработчика — отсутствие целостной архитектуры. Наименования функций, подходы к разработке и другие признаки говорят, что она разрабатывалась в разное время разными группами специалистов. Как следствие, порог вхождения в данную область довольно высок и создавать такие драйверы способен только очень опытный и глубоко погрузившийся в эту среду программист.
Примеры WDM-драйверов, созданных АстроСофт:

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

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

  • Мульти-клавиатурный драйвер
    Позволяет обслуживать множество (десятки) USB-клавиатур так, чтобы они были видны из «специальных» приложений, но не могли использоваться для доступа к системе. Это позволило организовать центр тестирования без возможности вмешательства хакеров в основную работу ЭВМ.

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

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

Windows Driver Framework
Концепция WDM, несмотря на всю свою неоднородность и сложность, до сих пор пользуется популярностью. Однако, уже достаточно давно Microsoft разработал принципиально новую среду WDF. Она базируется на том же самом фундаменте WDM, но для программиста предлагается единообразная, хорошо продуманная архитектура. Это позволяет снизить трудозатраты на разработку драйверов (а значит, и стоимость), а также уменьшить вероятность ошибок.

Кроме сложных драйверов уровня ядра, инфраструктура WDF позволяет разрабатывать для ряда устройств драйверы, работающие на пользовательском уровне защиты. Это существенно облегчает процесс разработки и отладки. Специалистами АстроСофт разработано множество драйверов для разнообразных устройств PCIe. Имеется опыт модернизации устаревших WDM-драйверов PCIe, включающей реинжиниринг и восстановление/наращивание прежнего функционала уже в архитектуре WDF. Кроме того, нами создано несколько драйверов для USB-устройств на уровне UMDF.

Драйверы без разработки драйверов
Мало кто знает (хоть это и описано в документации MSDN), что существует универсальный драйвер USB-устройств, который может применяться даже в ОС Windows XP. Его использование в обычных программах позволяет обойтись без разработки специализированных USB-драйверов. АстроСофт владеет данной технологией, и все разрабатываемые USB-устройства с нестандартными протоколами мы обслуживаем через такой драйвер.

Также Microsoft имеет стандартные драйверы USBSER для обслуживания виртуального COM-порта и USBSTOR для обслуживания USB-накопителей. Здесь используется обратный подход: чтобы не писать свои драйверы, а обслуживаться через штатные, при разработке USB-устройств, именно они производятся совместимыми со стандартным протоколом. USBSER.SYS обслуживает не только переходники USB-COM, но и все устройства, в которые подаются терминальные команды. Это могут быть системы управления двигателем, система связи, и даже промышленные SCADA-системы на базе шины MODBUS. При создании всех этих систем, для упрощения разработки, мы выполняем адаптацию существующего протокола под штатные драйверы, поставляющиеся в комплекте с Windows.

Файловая система для устройств мультимедиа
(цифровые видеомагнитофоны (PVR) или телевизоры, поддерживающие функцию Time/Shift).
В АстроСофт создана файловая система, сочетающая свойства общецелевой файловой системы и одновременно удовлетворяющая особым требованиям производительности: поддержка нескольких одновременных потоков чтения и записи с суммарным объемом, сопоставимым с физически возможной скоростью передачи данных на физическом диске. Дополнительно обеспечена поддержка файлов с «дырками», в основном образующимися в начале файла при устаревании архива. Решение основано на поддержке «обычных» файлов, специальной поддержке «больших и быстрых» файлов и управлении свободным местом (особенно, образующимся из «дырок» «больших» файлов).
Для реализации задачи был написан модуль ядра, реализующий интерфейс VFS.

Драйверы контроллера и сканера МФУ
При разработке прошивки для многофункционального печатающего устройства возникла задача передачи данных по USB между сканирующим и головным модулем на базе процессора ARM под управлением VxWorks. Штатные средства системы позволяли работать только со встроенным контроллером USB1.1, скорости которого было недостаточно, поэтому USB-контроллер подключался по шине PCI. Было необходимо разработать драйвер контроллера и драйвер сканера. Драйвер контроллера бал создан на основе Linux-драйвера, адаптированного нами к среде VxWorks: были созданы прослойки для управления процессом запуска, прерываниями, доступа к физической памяти, DMA и свой менеджер памяти (при использовании стандартного для VxWorks скорость работы была недопустимо низкой).

Драйвер для чипа GPS- навигации
Снижение стоимости чипа GPS-навигации возможно за счет переноса вычислений в общецелевой процессор, что поставило задачу быстрой и синхронной передачи больших объемов данных с приёмника GPS в системную память. Нами был создан соответствующий драйвер, а поскольку работать решение должно было с разными операционными системами, то для драйвера получения данных использовался кросс-платформенный механизм libusb. В зависимости от способа передачи (сырой/bulk или изохронный) были решены проблемы производительности или контроля целостности потока.

Fuse drivers
При разработке медицинского прибора встала задача переноса файлов из внутренней памяти прибора в обычный компьютер. Проблема: при подключении флеш-накопителя на компьютере запускается драйвер файловой системы и единолично управляет распределением данных на флеш-карте — при подключении прибора его диском уже управляет операционная система прибора. Первоначальное решение с выделением «сырой» памяти для копирования данных перед подключением к компьютеру было неудобно: передача этой памяти в исключительное управление компьютеру и обратные операции после отключения требовали неочевидных действий пользователя и могли вызывать ошибки синхронизации данных.
Был создан драйвер блочного устройства, выдававший себя за диск, отформатированный в систему FAT, который, однако, предоставлял данные из выделенного каталога родной файловой системы устройства.

Микроконтроллеры — это тоже компьютеры, поэтому для них также необходимы драйверы. В нашем случае все еще сложнее и интереснее: АстроСофт создал и продолжает совершенствовать собственный продукт — операционную систему реального времени МАКС для микроконтроллеров. Разработка драйверов для этой системы — наша ежедневная работа.

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

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