Комбинированное звуковое USB-устройство с функциями автономного MP3-плеера и поддержкой Bluetooth
5.2 Разработка блок-схемы алгоритма управляющей программы
Управляющий микроконтроллер AT91SAM7SE имеет встроенную программу-загрузчик, которая определяет дальнейший характер его работы. Во-первых, инициализируются DBGU-порт и USB-порт микроконтроллера, затем управление передается программе-загрузчику SAM-BA.
Загрузочная последовательность представлена на рис. 1
3.
Рис. 13. Загрузочная последовательность AT91SAM7SE
Инициализация управляющего микроконтроллера состоит из следующих этапов:
инициализация FIQ (линии быстрого прерывания);
установка стека в режим supervisor;
инициализация встроенного Flash контроллера;
обнаружение внешнего резонатора;
если не обнаружен внешний резонатор, то настройка внутреннего резонатора микроконтроллера;
переключение основной частоты устройства на главный внутренний резонатор;
копирование кода в SRAM-память;
инициализация переменных C;
инициализация PLL;
выключение сторожевого таймера, активация возможности сброса;
инициализация USB-порта;
передача управления загрузчику SAM-BA.
Перед началом работы устройства, необходимо инициализировать управляющий контроллер и определить дальнейший характер его работы.
Если есть соединение по USB, то в зависимости от установок, хранящихся в энергонезависимой памяти устройства, необходимо сконфигурировать микроконтроллер для работы в качестве звуковой USB-карты или флеш-памяти.
В режиме звуковой карты управляющий микроконтроллер должен выполнять следующие действия:
получать данные от USB-порта компьютера;
передавать их дальше цифро-аналоговому преобразователю в составе модуля F2M03MLA.
В режиме флеш-памяти AT91SAM7SE должен обеспечить работу со встроенной памятью устройства.
Если нет соединения по USB, то устройство должно выполнять функции MP3-плеера, а именно:
управление при помощи управляющих клавиш;
выдача информации на LCD-дисплей;
считывание информации со встроенной памяти устройства и передача стерео кодеку в составе модуля F2M03MLA;
обеспечение возможности передачи звука на беспроводные наушники.
Таким образом, получили следующую блок-схему алгоритма управляющей программы (рис. 14).
Рис. 14. Блок-схема алгоритма управляющей программы
Работа в качестве звуковой карты, съемного диска или MP3-плеера представляет собой отдельные блоки в прошивке управляющего микроконтроллера.
5.3 Разработка шаблона драйвера устройства
Фирмы-разработчики аппаратного обеспечения постоянно совершенствуют внешние устройства и другие узлы персонального компьютера. Постоянно появляются новая периферийная аппаратура и новые модификации уже существующих устройств. Старые устройства наделяются новыми возможностями, новые делают такое, о чем раньше не приходилось и мечтать.
Интуитивно ясно, что должна существовать какая-то программная прослойка между аппаратным и программным обеспечением, выполняющая “согласующие” и “унифицирующие” действия. Эта прослойка работает напрямую с аппаратурой, а прикладное и системное программное обеспечение имеет дело только с этой интерфейсной прослойкой. Этой программной прослойкой являются драйвера устройств.
Рассмотрим внутреннюю организацию шины USB.
Система USB подразделяется на три логических уровня с определенными правилами взаимодействия. Устройство содержит интерфейсную, логическую и функциональную части. Все передачи инициируются хостом, а периферийные устройства могут лишь реагировать на его запросы. Хост также делится на три части – интерфейсную, системную и программное обеспечение.
Связь между логическим уровнем устройства и системной частью хоста осуществляется при помощи логического потока на уровне устройств. Связь между функциональной частью устройства и программным обеспечением хоста осуществляется логическим потоком на уровне функций.
Уровень клиентского программного обеспечения в хосте обычно представляется драйвером устройства.
Логическое устройство USB представляет собой набор независимых конечных точек, с которыми клиентское программное обеспечение обменивается информацией. Каждому логическому устройству USB назначается свой адрес, уникальный на данной шине USB. Каждая конечная точка характеризуется своим номером и направлением передачи.
Транзакция на шине USB – это последовательность обмена пакетами между хостом и периферийным устройством, в ходе которой может быть передан или принят один пакет данных. Когда клиентское программное обеспечение передает запрос уровню системного драйвера, USB-драйвер преобразует его в одну или несколько транзакций шины и затем передает получившийся перечень транзакций контроллеру хоста.
Хост контроллер передает данные периферийному устройству в виде кадров. Каждая передача состоит из одной или нескольких транзакций. Каждая транзакция состоит из пакетов. Каждый пакет состоит из идентификатора пакета, данных и контрольной суммы.
Существует четыре различных типа передачи:
управляющие передачи – для конфигурирования устройства во время подключения, для управления устройство и получения статусной информации в процессе работы;
передачи массивов данных – для обеспечения гарантированной доставки данных, однако время доставки неограниченно;
передачи по прерываниям – передача одиночных пакетов данных небольшого размера за ограниченное время;
изохронные передачи – для обмена данными в реальном времени, имеют наивысший приоритет.
Конечная точка представляет собой буфер и имеет следующие основные параметры: частота доступа к шине, допустимая величина задержки обслуживания, требуемая ширина полосы пропускания канала, номер конечной точки, способ обработки ошибок, максимальный размер пакета, используемый тип посылок и направление передачи данных.
Запрос к устройству и его параметры передаются в виде конфигурационного пакета. Стандартные запросы к устройству – это:
получение состояния (GET_STATUS) – позволяет определить состояние устройства, интерфейса или конечной точки;
сброс свойства (CLEAR_FEATURE) – для запрета свойства или состояния;
разрешение свойства (SET_FEATURE);
задание адреса на шине (SET_ADDRESS) – для присвоения устройству адреса;
получение дескриптора (GET_DESCRIPTOR) – для получения дескриптора устройства, конфигурации или точки;
передача дескриптора (SET_DESCRIPTOR) – позволяет дополнить существующий дескриптор или добавить новый дескриптор устройства, конфигурации или строки;
получение кода конфигурации (GET_CONFIGURATION) - устройство выдает код своей текущей конфигурации;
задание кода конфигурации (SET_CONFIGURATION) – позволяет задать устройству новую конфигурацию.
Дескриптор устройства – это структура данных или форматированный блок информации, который позволяет хосту получить описание устройства.
Стандартный дескриптор устройства содержит основную информацию об USB-устройстве и его конфигурациях. Устройство должно иметь только один такой дескриптор, однако если устройство может работать в нескольких режимах (на разных скоростях), то оно должно иметь еще и уточняющий дескриптор.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
- Базовые функции почтовых клиентов
- Моделирование линейных непрерывных систем в среде LabVIEW
- Анализ Интернет-ресурсов органов по делам молодёжи
- Особенности применения, подготовки и печати рекламных буклетов
- Разработка прикладной программы тестового контроля с использованием технологий JSP и сервлетов
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности