Программирование Usb Драйвер

Posted on -
Программирование Usb Драйвер Average ratng: 5,5/10 8023 votes

Купить товар USB Кабель для программирования для Baofeng UV 5R драйвер с CD Программы.

  • Для завершения найдите и выберите файл драйвера. USB Serial Port». Программированию Arduino.
  • Для программирования радиостанций требуется софт. Технические данные. Программное обеспечение. USB Driver Manual.

Введение В этой теме я планирую дать серию уроков, которые позволят любому человеку получить базовое представление о том, как устроена система взаимодействия прикладного ПО и драйверов ОС Windows, научиться читать исходные коды существующих драйверов устройств или написать свой собственный драйвер, работающий с его собственным устройством. Также эти уроки могут помочь аудитории владельцев видеокарт с графическими чипами, произведенными компанией 3dfx, разобраться в доступных исходных кодах драйверов этих видеокарт. Упомянутые исходники могут быть с наименьшим количеством переделок откомпилированы под Windows XP/Windows 2003 Server, которые и будут являться основной целевой системой. В более современной Windows Vista/7 несколько изменилась модель драйверов, наиболее сильно это затронуло графическую подсистему. Это означает, что для их корректной работы придется переписать весьма значительную часть кода. Кроме того, под х64 версиями Vista/7 и более старших операционных систем просто так нельзя загрузить драйвер, не имеющей цифровой подписи. Подпись стоит порядка 500 долларов в год (150, если найти купон на скидку), их не любят давать частным лицам и даже небольшим организациям.

Кроме того, если в подписанном драйвере обнаружится уязвимость и ей воспользуются хакеры – то подпись данного почти всегда юридического лица аннулируется и у него возникают проблемы с получением новой. Еще есть такая процедура, как WHQL-сертификация, но ее я вообще не собираюсь пока здесь обсуждать. Весьма приветствуется, если другие люди будут давать здесь свои собственные уроки, не выходящие за пределы темы. Также здесь можно задавать любые вопросы, предлагать свои идеи для следующих уроков и отписываться об своих удачных/неудачных результатах. Для начала работы требуется иметь некоторое знакомство с любым языком программирования.

Думаю, для этого вполне достаточно школьного / вузовского курса для непрограммистов. Если же в современных программах образования знакомство с программированием не было предусмотрено/за давностью лет курс забыт или просто что-то непонятно – отписывайтесь в теме, я напишу другие уроки, подробней раскрывающие непонятную тему. Установка и настройка программного обеспечения Список используемого программного обеспечения:. Windows XР или Windows 2003 Server х86 – операционная система, под которую будем писать драйверы;.

Visual Studio 2010 – среда разработки приложений на языках С/С и других. Будет использоваться для написания различных простых прикладных программ, в т.ч. И управляющей программы драйвера.

Можно попробовать воспользоваться Visual Studio 11 beta, которая доступна для скачивания по ссылке -;. Windows Driver Kit – набор инструментов, необходимых для разработки драйвера. Включает в себя компилятор, заголовочные файлы и много другого. Требуется версия 7.1.0, ее можно взять по ссылке;. VMWare – при отсутствии физической машины операционную систему можно запустить в виртуальной. Это также безопаснее при разработке - при ошибке в драйвере система уйдет в синий экран;. Daemon Tools – средство для открытия образов CD и DVD дисков в формате iso.

WDK распространяется в виде такого образа. В случае использования VMWare использовать не обязательно, т.к. VMWare умеет монтировать такие образы самостоятельно. Бесплатную lite-версию можно скачать здесь:. DebugView – утилита Марка Руссиновича, которая позволяет увидеть текстовые сообщения, выдаваемые драйверами, собранными в отладочном режиме.

Скачивать здесь -. Far Manager – файловый менеджер, с которым легче работать с консольными утилитами. Взять можно здесь -. Все используемое мною программное обеспечение – на английском языке. В большинстве случаев можно использовать и русские версии, но может возникнуть путаница в командах или другие проблемы с совместимостью. Для начала работы потребуется компьютер с установленной обычной 32-разрядной Windows XP/2003.

Продвинутые пользователи могут пользоваться необычной – отладочной, она же - checked build. Эта версия показывает больше информации при отладке устройств. Обычная же версия Windows носит название free build. Компьютер для экспериментов может быть как реальным, так и виртуальным. Разрабатываемые программы я буду проверять на одной реальной машине и одной виртуальной.

На обоих установлен Windows Server 2003 R2 Enterprise Edition c SP2. Виртуальная машина запущена под VMWare Workstation 8.0.2. Установка Visual Studio Я буду использовать Visual Studio 2010 Ultimate. В принципе, ставить ее не обязательно, так как все необходимые инструменты, включая компилятор и заголовки есть и в WDK. Но для написания прикладных программ, в особенности для новичка, она намного удобней вызова компилятора из консоли. Если ее все же планируется установить, то лучше делать это перед установкой WDK. Берем диск со студией в iso-формате, монтируем его в Daemon Tools, либо подключаем как компакт-дисковод в VMWare.

Запускаем с диска setup.exe, выбираем «Install Microsoft Visual Studio 2010». На следующем шаге под Windows 2003 может появится сообщение, что требуется Windows Imaging Component. Щелкаем по этой строке, запускается браузер – скачиваем подходящий по языку операционной системы (у меня английский, значит wicx86enu.exe), устанавливаем. Заново запускаем setup.exe с диска. Нажимаем Next, соглашаемся с лицензионным соглашением, затем идет выбор типа установки.

Выбираем Custom, изменяем путь установки – для избежания ошибок Visual Studio и все любые другие инструменты следует ставить по максимально короткому пути без русских букв и пробелов. Мой вариант – C: Programs VS10. Следующая страница – выбор пакетов. Устанавливаем в соответствии с рисунком: Рис 0.1 – Выбор пакетов в установщике Visual Studio Кроме показанных, можно также выбрать «Visual C#». C# бывает полезен для расширения возможностей самой Visual Studio и написания небольших утилит.

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

После установки – Finish, Exit. Установка WDK Монтируем скачанный iso-образ аналогично тому, как это было сделано с Visual Studio.

Программирование Usb Драйверов

Запускаем KitSetup.exe, на этапе выбора пакетов устанавливаем галочки в соответствии с рисунком: Рис 0.2 – Выбор пакетов в установщике WDK Нажимаем Ок, укорачиваем путь установки до C: WinDDK, может появится окно установки.net 2.0. Появляется окно с лицензией WDK, соглашаемся. Ждем завершения установки. Нажимаем Finish. Установочный диск WDK не удаляем, а сохраняем до лучших времен, предыдущую версию 7.0 невозможно было корректно удалить без образа именно того диска, с которого ее устанавливали. Устанавливать Visual Studio и WDK не обязательно на той же машине, на которой планируется проверять работу программ. Для проверки я поставил их на реальной машине с Windows 7 х64 и откомпилировал драйвер, который заработал под Windows 2003 Server х86.

Создаем на диске каталог для проектов, учитывая вышеописанные рекомендации (без пробелов и русских букв), например C: Projects. Запускаем Visual Studio, открываем настройки (меню Tools/Option), выбираем в дереве «Projects and Solutions/General», в параметре Projects location выбираем/указываем созданный каталог. Также настоятельно рекомендую установить Far Manager 2 и работать через него. Его преимущество над Windows/Total Commander'ами и Explorer'ами в том, что через него нормально видно содержимое консоли (команда ctrl + O), куда выдается полезная информация при компиляции и запуске консольных программ.

Путь установки желательно записать в переменную PATH. В дальнейшем рассмотрим и драйверы для Windows 9x. Для этого потребуется другое программное обеспечение, но программирование драйверов для Windows 9x проще. Как небольшой анонс на будущее - закончил вчера паять вот это: Это - microcart П. Уварова, простейшее из известных мне PCI-устройств. Однако на этом месте встретился с парой проблем. Так как оно подключается всего лишь по 19 линиям PCI вместо 47 минимально требуемых в стандарте для ведомого устройства, то моя серверная матплата при старте успешно определяет его наличие, показывает в списке как неизвестное PCI-устройство, но потом перед загрузкой ОС, похоже, блокирует его, в результате чего в Windows никаких признаков устройства не видно.

На настольной машине такого не происходит и устройство отлично видно в списке с требуемым Devid'ом. Тем не менее, там установлена Windows 7, а для продолжения экспериментов требуется Windows 98. Попробовал пару раз установить ее, но пока - безуспешно. Проблема в том, что у меня уже много лет нет ни одного рабочего CD/DVD устройства, с которого можно загрузиться. При попытке загрузится с загрузочной флэшки с ДОСом эта самая флэшка определяется как первый диск (с именем C:), после установки на этом диске оказывается загрузчик Windows 98, а вот оттуда он уже загрузится не может и система виснет в момент, когда грузятся драйверы дисковых устройств. Но даже так с ним очень прикольно играться - я сделал на нем делитель частоты (от сигнала clk шины PCI) и в итоге получилось некоторое подобие двоичных часов; затем просто поупражнялся с логикой и триггерами.

Сегодня также получил еще такую штуку. Это устройство для обучения OSR USB-FX-2, описываемое в книге 'Windows Driver Foundation. Разработка драйверов'. Отдельно в пути девелоперская плата с Cyclone 2. Времени, к сожалению, опять нет, чтобы занятся этим более серьезно, но постараюсь в ближайшее время написать еще хотя бы пару простых уроков. В совсем отдаленных мечтах - разработать плату со вторым Stratix'ом.

Тем более, что сейчас есть возможность купить новый чип за 10% от цены. Но изготовление 6-слойной платы (и довольно большой) влетит в копеечку, плюс к этому считается что FBGA припаять в любительских условиях невозможно.

Думаю, что не особо - внутри ПЛИСок можно применять софтовые микроконтроллеры/микропроцессоры, в том числе AVR, ARM и даже х86-совместимые, а также специально разработанный для ПЛИСок Альтеры Nios. Ниос занимает от 700 до 1800 вентилей, так что в циклоне на 5к вентилей не напрягаясь можно разместить пару штук, а в стратиксе - до сотни и больше. А отдельно на плате совмещать физический микроконтроллер и плиску считается проблематично из-за проблем с клоковыми доменами и т.п. У контроллеров, впрочем, есть большое преимущество по цене, поэтому для большинства устройств выгоднее использовать именно их. Можно даже сравнить тот же ардуин с вот такими девайсами - Кстати, помню как-то видел на ебае видеокарту на Xilinx'e. Занятное устройство.

С общими принципами организации работы с USB можно познакомиться в работах Павла Агурова, а здесь будет рассмотрена только одна простая схема, комментирующая принцип работы с любым USB-устройством. В простейшем виде USB-устройство можно представить как некую древовидную структуру, включающую в себя «Конфигурации» (configurations), «Интерфейсы» (interfaces) и «Конечные точки» (endpoints). «Конечная точка» устройства — это программная сущность, у которой есть свой уникальный идентификатор и которая может иметь буфер с некоторым числом байтов для приема-передачи информации. Но чтобы добраться до нее, приложению (под управлением хоста) нужно программным путем пройти через уровни «Устройства», «Конфигурации» и «Интерфейса». Каждый из них описывается стандартной программной структурой, и есть возможность выбирать, какие именно интерфейсы следует использовать, чтобы попасть в требуемую конечную точку.

Важная особенность USB — наличие только одного Мастера (ведущего), которым обычно является компьютер. Само USB-устройство всегда отвечает на разные запросы компьютера, о чем бы ни шла речь и в какую бы сторону ни передавалась информация. Разработчик может написать полноценный драйвер для работы со своим USB-устройством, применяя уже имеющийся в системе заголовочный файл linux/usb.h. Дело в том, что большинство низкоуровневых задач в Linux уже решены, и любая написанная программа будет иметь прикладной характер, хотя формально и получит название драйвера.

Справедливо также заметить, что с каждой новой версией ядра Linux работа с USB становится проще. Драйвер, написанный для поддержки USB-устройства, призван решать следующие задачи:. регистрация и удаление драйвера;. регистрация и удаление устройства;.

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

Да к тому же хотелось бы, чтобы она легко переносилась на другие платформы (Windows, Mac OS и т.д.) хотя бы с минимальными изменениями в тексте или вовсе без них. При этом ее требуется писать на Паскале или даже на С#. Возможно ли это? Но для этого необходима библиотека libusb.

Если в дистрибутиве Linux нет такого «зверя» (ничего не отображается в ответ на команду locate libusb.so), то существует несколько путей:. поставить этот пакет с помощью штатного инсталлятора, к примеру, для Fedora написать в консоли: yum install libusb;. самостоятельно скачать RPM-пакет и попробовать его установить;. скачать пакет «исходников» и собрать на своей машине библиотеку. Важное замечание. На сайте libusb.org выложены две ветки проекта — версии 1.0 и 0.1.

В статье описана работа со старой стабильной версией, по этому будьте внимательны: при использовании версии 1.0, есть расхождения в API. Чтобы понять, имеются ли в системе устройства, соответствующие USB-интерфейсу, можно, например, воспользоваться утилитой usbview либо ее продвинутым аналогом — usbview2 , хотя в любом современном Linux найдутся встроенные консольные команды для таких целей.

Usb

В этой статье мы ограничимся основами и попробуем разобраться в алгоритме создания аналогичной программы для просмотра устройств USB, только работать она будет в консоли. А за основу мы возьмем простую программу вот отсюда —. Внесем в нее русские комментарии и откомпилируем в режиме программы С. При этом в настройках компилятора укажем на использование библиотеки libusb.so.

Как видно, этот пример полностью соответствует описанной ранее логической схеме — мы начинаем работу с общего перебора устройств и заканчиваем конкретными логическими точками. В данном примере идет простой перебор всего, что содержится в системе и что имеет отношение к USB. Но так делать необязательно. Для работы с конкретным устройством нас может интересовать определенный код изготовителя продукта (idVendor) и код продукта (idProduct). Если в этом примере уже указанный заголовочный usb.h заменить на, то это будет уже совсем другая библиотека, которую используют для создания полноценных (непереносимых на другие типы систем) драйверов в среде Linux.

Программирование

Программирование Usb Драйвера

Аналогичный пример нетрудно найти в Сети для языка Free Pascal, а значит, несложно написать собственную графическую утилиту, аналогичную usbview, и в среде Lazarus. Для этого потребуется скачать файл libusb.pp (например, здесь ).

Фрагмент программы, написанной в Lazarus для чтения списка устройств USB представлен на стр. Итак, мы выяснили, что в нашем распоряжении языки Си, C и Паскаль. Но это не предел, рассмотрим простой пример на языке С#. В данном примере (который успешно запускается в среде Linux с помощью платформы Mono) для доступа к библиотеке libusb.so применяется специальная.NET-обертка под названием #USBlib. Разработчики утверждают, что она одинаково подходит как для libusb.so, так и для своего собрата, функционирующего под управлением Windows. Кстати, важно отметить, что наборы функций libusb-win32 и libusb совпадают, а особые платформенные различия указаны в документации.

Это и есть основное достоинство библиотеки libusb — блестящая платформенная переносимость исходного кода. В заключение стоит напомнить, что та конкретная задача, над которой мы трудились, используя разные языки и инструментарии, — вывод списка устройств USB, решается в Linux с помощью встроенных команд Разработчики утверждают, что #USBlib одинаково подходит как для libusb.so, так и для своего собрата, функционирующего под управлением Windows. Кстати, важно отметить, что наборы функций libusb-win32 и libusb совпадают, а особые платформенные различия указаны в документации.