В этой части перевода статьи Implementation USB into microcontroller: IgorPlug-USB (AVR) (Внедрение USB в микроконтроллер: IgorPlug-USB (AVR)), речь пойдет о подключении приемника инфракрасного дистанционного управления компьютером IgorPlugUSB и установке драйверов.
Установка устройства IgorPlug-USB (AVR):Для успешной коммуникации между устройством USB и компьютером, устройству необходим драйвер. Этот драйвер запрашивается операционной системой при первом подключении IgorPlug-USB (AVR) в порт USB компьютера. В будущем, этот драйвер, вероятно, не будет необходим: возможно изменение во встроенном программном обеспечении, тогда устройство станет стандартным классом USB (СКРЫТЫЙ класс, Класс памяти...), — для этих классов есть драйвера, встроенные в операционную систему. Преимущество собственного драйвера в том, что мы контролируем поведение драйвера. Я делаю выбор в пользу "собственного" драйвера только из-за возможности изучения, "как он работает" и главным образом за простоту внедрения во встроенное программное обеспечение устройства. Следующие изображения показывают операции установки устройства (и установки драйвера) на первом включении IgorPlug-USB (AVR) в порт USB. Драйвер — одинаковый для Windows98, WindowsME, Windows2000 и WindowsXP (не подходит для Windows95): Вначале для windows XP:
Windows находит устройство IgorPlug-USB (AVR). Выберите установку из нашего списка драйверов. Здесь просматриваем папки с установочными файлами (файл INF и СИСТЕМНЫЙ драйвер). Windows делает некоторые необходимые изменения. Драйвер не имеет цифровой подписи от Microsoft — но мы не останавливаем установку. Windows делает резервную копию (для безопасного восстановления ;-)). И в случае когда Windows не находит СИСТЕМНЫЙ драйвер,... ... …тогда мы показываем правильный путь к драйверу. И установка закончена: И для Windows98:То же самое как и для WindowsXP, только в другой визуальной форме. После удачной установки мы можем видеть устройство в "Менеджере устройства": Менеджер Устройства для WindowsXP: Менеджер Устройства для Windows98: Программная поддержка:Как я уже упоминал — для правильной работы устройства необходим драйвер, который запрашивается операционной системой в процессе установки. Этот драйвер я написал в Microsoft Windows2000 DDK (среда средств создания драйверов), (и имеет некоторые усовершенствования по сравнению со старым драйвером). Название этого драйвера — "IgorPlug.sys", он включен в установочный пакет. Для установки необходим установочный описательный файл INF. Когда Windows запрашивает этот файл в процессе установки устройства, мы должны просмотреть папку с этим файлом INF, если у нас запросят расположение драйвера. В этом файле содержится установочная информация для данного устройства – и в соответствии с этой информацией будет установлен драйвер – и, в конечном итоге, последуют другие действия. Я создал этот файл INF согласно файлу шаблона из книги о USB. Поскольку каждому устройству USB должен быть задан номер продавца (VID) от USB-организации(USB-IF), то я «позаимствовал» этот номер у компании Atmel (я надеюсь, что Atme1 простят мне это — поскольку я не буду платить примерно 1500 US$ за получение номера), и я внедряю его в микропроцессор и в файл INF. Название этого файла — "IgorPlug.inf" и он включен в установочный пакет. Таким образом для установки устройства понадобятся только два файла ("IgorPlug.sys" и "IgorPlug.inf"). Таким образом, мы успешно установили устройство IgorPlug-USB (AVR). И теперь мы можем приступить к его тестированию. Для этой цели я написал библиотеку DLL "IgorUSB.dll", которая содержит функции, выполняемые устройством IgorPlug-USB (AVR). Эта библиотека DLL взаимодействует с драйвером " IgorPlug.sys "и обеспечивает сериализацию потока данных (когда мы используем DLL от нескольких потоков или приложений). Библиотека DLL для доступа к устройству изначально открыта для программистов: экспортируемые функции от DLL опубликованы. Следующие изображения иллюстрируют информацию о библиотеке DLL и СИСТЕМНОМ драйвере, как это было отображено для WindowsXP: В итоге, я создал приложение — программу “от AVR к USB", которая показывает все функции устройства IgorPlug-USB (AVR), вызывая функции библиотеки DLL "IgorUSB.dll". Функции программы: - - настройка и чтение 8-битового порта данных (см. описание схемы),
- - управление потоком битов данных порта и считывание состояния этого потока данных
- - управление выходным напряжением на выводах разъема данных (допустимое напряжение или высокий ввод импеданса) и считывание этого состояния
- - чтение состояния уровня данных на выводах (обновляется каждые 200ms)
- - установка диодов LED, которые связаны с выводами данных через резисторы (катод на заземлении, необходимо установить все биты как выводы)
- - чтение данных от всего СППЗУ
- - запись данных на все СППЗУ
- - запись — передача данных на последовательную линию микропроцессора
- - получение символа (ов) от последовательной линии (запрос каждые 100ms)
- - изменение скорости пересылки данных в бодах последовательной линии (недопустимая скорость пересылки данных в бодах — скорость пересылки данных в бодах с ошибкой большей чем 4 % — отображается как сводное число (номер), о неудачной установке сообщает красный цвет в поле скорости пересылки данных в бодах)
- - считывание настоящей внутренней скорости пересылки данных в бодах (запрос каждые 100ms)
- - получение осциллоскопического отчета инфракрасного кода, полученного во внутренний буфер микропроцессора(обновление каждые 50ms)
(полученный инфракрасный код, отображен в графической форме на осциллографе — его декодирование должно сделать другое приложение) (в течение получения инфракрасного кода — этот код передается также по последовательной линии, но "на лету" – необходимо установить высокую скорость пересылки данных в бодах RS232, поэтому после включения, скорость пересылки данных — 57600 бодов)
Следующее изображение показывает функции демонстрационной программы от AVR к USB и его свойства (в стиле WindowsXP): Содержание
|
Подробнее...