Смекни!
smekni.com

Комбинированное звуковое USB-устройство с функциями автономного MP3-плеера и поддержкой Bluetooth (стр. 8 из 17)

Основные процедуры драйвера WDM – это:

DriverEntry – точка входа драйвера;

AddDevice – созданиеобъектадрайвера;

UnLoad – для возможности выгрузки драйвера без перезагрузки системы;

Модель WDM предоставляет следующие типы устройств:

HubDevice (hubclass.sys) – хабы (устройство, обеспечивающее дополнительные порты на шине USB) ;

HID (Human Interface Device) Device (hidclass.sys) – мыши, клавиатуры, джойстики;

AudioDevice(sysaudio.sys) – звуковые колонки, виртуальные MIDI-устройства;

MassStorageDevice(usbstor.sys) – устройства хранения данных, флеш-диски;

Printer (usbprinter.sys) – принтеры;

CommunicationDevice (usb8023.sys, mdismp.sys) – устройства коммуникации (модемы, сетевые карты).

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

При разработке драйвера устройства использовалась программная среда NuMegaDriverStudio 2.0, а также классы драйверов устройств и библиотеки в составе Windows 2000 DDK.

После установки VisualStudio появляется дополнительное окно с возможностями запуска помощника создания драйвера, запуска помощника создания сетевого драйвера, изменения переменных окружения и компиляции с помощью утилиты Build из DDK.

Библиотека классов DriverStudio представляет собой надстройку над чистым WDMAPI, что избавляет программиста от использования довольно запутанных низкоуровневых функций и позволяет выполнять все необходимые операции. Базовым классом устройства является класс KDriver, который предоставляет базовые функции драйвера. Для управления оборудованием используется класс KDevice, который обрабатывает запросы на чтение/запись к устройству. Класс KIrp представляет собой оболочку для структуры пакета запроса. Класс KRegistryKey позволяет обращаться к данным драйвера, сохраненным в реестре.

Собственно для работы с USB-устройствами предназначены следующие классы:

KUsbInterface – предоставляет функции для работы с USB-интерфейсами, драйвер может создавать столько интерфейсов, сколько их описано в дескрипторе устройства;

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

Принцип работы с этими классами следующий:

в конструкторе экземпляра KDriver создается экземпляр класса KPnpDevice (для поддержки Plug-n-Play);

в конструкторе экземпляра KPnpDevice создаются экземпляры классов – KUsbLowerDevice (базовый класс для устройств нижнего уровня), KUsbInterface, KUsbPipe;

в функции драйвера OnStartDevice выполняется активизация одной из точек конфигурации при помощи вызова функции m_Lower.ActivateConfiguration();

при получении запроса ввода/вывода производятся следующие действия – создание и инициализация пакетов, передача запросу драйверу нижнего уровня, передача данных программе-инициатору запроса.

Для создания шаблона драйвера нужно создать проект и выбрать архитектуру создаваемого драйвера (WDM или WindowsNT 4.0). Выбираем модель WDM. Теперь необходимо выбрать шину, на которой будет располагаться устройство. Выбираем шину USB. Для USB-устройства необходимо указать идентификатор производителя (USBVendorID) и идентификатор продукта (USBProductID), они должны соответствовать значениям в дескрипторе устройства.

Указанные значения идентификаторов будут записаны в inf-файл.

Следующий шаг – задание набора конечных точек. У управляющего микроконтроллера 8 конечных точек.

Теперь необходимо выбрать функции драйвера. Возможные варианты – Read (обработка запросов на чтение), Write (обработка запросов на запись), Flush (поддержка функции сброса буферов), DeviceControl (поддержка пользовательских запросов), InternalDeviceControl (обработка запросов от других драйверов) и Cleanup (обработка запросов на очистку буферов обмена).

Драйвер для режима звуковой карты должен иметь только функцию Write. А драйвер для режима флеш-диска должен иметь функции Read и Write.

Следующий шаг – выбор способа обработки запросов:

None – запросы не буферизуются в очереди;

DriverManaged – драйвер содержит одну или более очередей, в которых хранятся запросы ввода/вывода;

SystemManaged – драйвер использует только одну очередь сообщений.

Выберем для обоих драйверов – System Managed.

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

Последний шаг – задание кодов функции DeviceControl и задание дополнительных настроек – создание тестового приложения для драйвера (необязательно), настройки отладки и создания лога событий.

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

Для доработки шаблона драйвера требуется дописать функции ввода/вывода и по необходимости расширить список интерфейсов каждого драйвера.

Рассмотрим процесс установки драйвера.

Скомпилировав проекты получим два драйвера – AT91UsbSounCard и AT91UsbMassStorage.

Теперь подключив устройство в режиме звуковой карты, нужно установить драйвер AT91UsbSounCard, указав путь к файлу AT91UsbSounCard.inf и файлу самого драйвера. Система обнаружит драйвер и установит его.

Аналогично в режиме флеш-диска нужно установить драйвер AT91UsbMassStorage.

Теперь необходимо доработать оба драйвера согласно вышеуказанным требованиям.

Тексты проекты шаблонов драйверов приведены в приложении.

5.4 Возможности расширения функциональности устройства

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

Осуществить программную модификация данного устройства очень просто: подключаете устройство к USB-порту компьютера и при помощи программы-загрузчика “заливаете” новую прошивку.

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

К таким возможностям относится расширение Bluetooth профилей устройства за счет перепрошивки модуля F2M03MLA, например, реализация возможности передачи файлов по Bluetooth (производители модуля в скором времени планируют реализовать эту возможность). Для драйвера можно разработать утилиту для управления характеристиками устройства.


6. Конструкторская часть

6.1 Обзор средств разработки печатных плат

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

На начальном этапе распространения в нашей стране САПР электронной аппаратуры на персональных компьютерах наибольшее распространение получили пакеты программ PCAD и OrCAD. Оба пакета решали примерно одинаковые задачи: графический ввод принципиальных схем и разработка печатных плат, моделирование цифровых устройств и проектирование программируемых логических интегральных схем (ПЛИС).

Пакет PCAD на некоторое время стал фактическим стандартом на промышленных предприятиях, обеспечивая выпуск конструкторской и технологической документации.

Однако со временем ситуация изменилась.

Появились новых версий старых систем проектирования печатных плат, причем часть из них претерпела значительные изменения.

Наилучших результатов добилась компания Mentor Graphics, развивающая линии продуктов Expedition PCB и PADS PowerPCB. Ключом к успеху компании явилась ориентация на современные интегрированные среды проектирования для Windows.

Пакет Expedition PCB представляет сейчас наиболее мощное решение в области проектирования плат. Основу системы составляет среда AutoActive, позволяющая реализовать такие функции, как предтопологический анализ целостности сигналов, интерактивная и автоматическая трассировка с учетом требований высокочастотных плат и специальных технологических ограничений, накладываемых использованием современной элементной базы.

Другой продукт компании Mentor, система PADS PowerPCB предлагает более дешевое решение. Эта система может похвастаться лучшим автотрассировщиком BlaseRouter, поддерживающим все необходимые при трассировке высокочастотных плат функции. Пакет имеет модули предтопологичекого и посттопологического анализа, тесно взаимодействующих с системой контроля ограничений.

Далее по мощности предлагаемых решений идет компания Cadence. Для верхнего уровня проектирования предлагается пакет PCB Design Studio, а в качестве редактора печатных плат здесь используется программа Allegro, позволяющая разрабатывать многослойные и высокоскоростные платы с высокой плотностью размещения компонентов. В качестве штатного модуля авторазмещения и автотрассировки здесь используется программа SPECCTRA, управляемая обширным набором правил проектирования и технологических ограничений. Анализ электромагнитной совместимости топологии платы выполняется с помощью специального модуля SPECCTRAQuest SI Expert, для предварительного анализа проекта и подготовки наборов правил проектирования используется модуль SigXplorer.

Другой продукт компании Cadence, пакет OrCAD рекомендуется как более легкое и дешевое решение для проектирования печатных плат. В последнее время продукт почти не развивается.

Третьим производителем САПР печатных плат можно назвать австралийскую компанию Altium, развивающую пакет Protel DXP. Этот пакет обеспечивает сквозной цикл проектирования смешанных аналого-цифровых печатных плат с использованием программируемой логики фирм Xilinx и Altera. Весь инструментарий реализован на базе интегрированной среды проектирования Design Explorer, работающей под управлением операционной системы Windows XP. К имевшимся ранее средствам посттопологического анализа целостности сигналов (Signal Integrity) добавилась возможность выполнять предтопологический анализ. Но главным новшеством системы Protel DXP должен был стать топологический автотрассировщик Situs, призванный реализовать новый подход к автоматической разводке плат.