Программисту usb устройств часть 1 знакомство с

Практикум программиста USB-устройств Часть 4. Разработка программатора МК P89LPC9xx - PDF

Практикум программиста USB-устройств Часть 1. начиная от знакомства с элементной базой и заканчивая написанием собственного драйвера. Начнём знакомство с регистра кон фигурации – EPxCFG (см. рис. 1). Ра ботоспособность точки определяется состоянием бита VALID. Если точка x. 1 Практикум программиста USB-устройств Часть 4. Разработка программатора МК Начнём знакомство с регистра конфигурации EPxCFG ( см. рис. 1).

Поэтому между передачей OUT и командами, влияющими на целостность данных, следует предусмотреть некоторый интервал времени. Или, если используется дополнительное требование, устройство может отвечать STALL до завершения обработки данных. В последнем случае хост повторит команду позднее второй пакет HALT. Вариант, когда фаза деактивации начинается по собственным событиям МК, лишён ранее описанного недостатка. Такими событиями могут являться объём обработанных данных, ответ конечного устройства и.

Данные, поступающие после фазы деактивации, следует уничтожать. В ПЗУ объёмом 16 Кб необходимо записать данные. Хост посылает файл размером 17,5 Кб. В таком случае МК после обработки данных объёмом 16 Кб выполняет фазу деактивации и оставшиеся 1,5 Кб уничтожает то есть просто освобождает буфер. Здесь необходимо выполнить очистку буфера и подготовить ресурсы к приёму данных. Для того чтобы уничтожить пакет, помещённый в буфер, необходимо записать результат операции ИЛИ значения 80h и номера точки 82h, 84h, 86h, 88h.

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

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

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

Существует два сценария дальнейшей работы. Как только хост заберёт пакет, будет установлен соответствующий флаг. Поскольку буфер освободился, продолжаем подготовку данных. Мы продолжаем подготовку и запись данных в буфер до тех пор, пока бит FULL сброшен в 0. Сразу после его установки все буферы точки заполнены начинаем действовать по первому сценарию. События, которые служат сигналом к завершению фазы работы, идентичны событиям точки OUT.

Хост или устройство самостоятельно могут определить момент начала фазы деактивации. Реакция устройства на стандартные или дополнительные запросы хоста повторяет действия точки OUT.

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

Наглядным является пример с ПЗУ. Устройство передаёт хосту 16 Кб данных, а на все последующие запросы возвращает пакеты нулевой длины. Для того чтобы повторить чтение ПЗУ, необходимо заново выполнить фазу инициализации. Благодаря большому набору функций, МК данного семейства давно пользуются заслуженным вниманием разработчиков. Упакованы они в корпуса различного размера, имеющие от 8 до 48 выводов. Это позволяет легко расширять возможности разрабатываемого устройства, заменяя микроконтроллер более производительным с минимальными доработками ПО.

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

Данный способ является самым надёжным, поскольку он не зависит от наличия встроенных программ загрузки. С другой стороны, параллельный способ малопривлекателен из-за того, что он неприменим к МК, установленным в устройство. Программный способ программирования IAPа точнее, перепрограммирования, в противоположность параллельному, возможен только для МК, работающего в устройстве.

Данный способ используется для обновления встраиваемого ПО и сохранения рабочих констант. Реализовать такой способ может программист при написании программы для разрабатываемого устройства. В данном случае используются встроенные ресурсы МК загрузочная программа для ISPкоторые обеспечивают приём и запись кода во флэшпамять.

В разрабатываемом нами программаторе реализуем последовательные способы программирования. Метод программирования ICP почему-то не так подробного описан в документации, хотя именно данный метод применим ко всем МК семейства. Тем не менее, существует отдельный документ, в котором описана спецификация программирования методом ICP [5].

Этими документами мы и будем руководствоваться при разработке программатора. Способы начала программирования и линии передачи данных индивидуальны для каждого метода. Для обмена данными используются две линии порта P0: Тактовый сигнал формируется программатором. В этом методе обмен данными происходит по линиям TxD и RxD.

Передаваемый пакет имеет формат: Скорость может отличаться от рекомендуемых бод, поскольку в МК имеется программная автоподстройка скорости обмена. Программирование Когда МК находится в режиме программирования, он готов к приёму команд стирания, записи и чтения. Более унифицированный формат команд разработан для метода ISP. Поэтому в данном разделе обзор начнем с. Формат всех команд в данном методе соответствует формату HEX-записи, созданному более 20 лет назад фирмой Intel.

Запись представляет собой следующую строку: Как видим, программирование методом ISP довольно просто выполнить: Список команд протокола ISP показан в таблице 2. Два символа NN характеризуют количество байт данных в записи. Следующие четыре символа AAAA задают адрес, с которого необходимо записать данные.

Два символа RR являются признаком типа записи обычные данные 00, конец файла 01 и. Далее следуют символы данных DD. Последние два символа CC являются контрольной суммой и позволяют проверять целостность записи. Поскольку формат команды соответствует HEX-записи, её передача программируемому МК осуществляется методе нет такого унифицированного формата команд, как в ISP. При помощи команд, представленных в таблице 3, мы получаем доступ к названым регистрам и можем инициировать выполнение микроконтроллером любой операции из таблицы 4.

При получении операции служит байт статуса. В слу- Передача данных в протоколе ICP осуществляется байтами. На линию PDA байт выдаётся младшим битом. Изменения на линии данных Таблица 2. FF Запись служебной информации Чтение служебной информации Стирание сектора или страницы Чтение контрольной суммы сектора: Все рассмотренные особенности нам необходимо будет учесть при разработке системы команд программатора.

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

Разработка программной части Скопируем каталог mydevice в новый каталог и назовем его proglpc. В новом каталоге аналогично переименуем главный файл проекта mydevice. Основа программы для нового устройства готова. В первую очередь начнём редактировать файл переменных. Поскольку у нас уже разработана схема, то мы зададим символические имена используемым линиям портов: Для прочих команд, в том числе и чтения, объёмы передаваемых данных малы.

В связи с этим наиболее правильным будет оформить все команды, кроме записи, в виде дополнительных требований, поскольку их необходимо подавать редко и выборочно, а вот запись осуществлять через точку OUT, потому что файл с программой для МК имеет большое количество HEX-записей. В этом случае нам необходимо выполнять выборку и обработку каждой записи в пакете. Задача несложная, так как признаки начала и конца записи известны. Поскольку наше устройство поддерживает два метода программирования, создадим в интерфейсе две альтернативные установки.

На рисунке 6 представлена топология разрабатываемого программатора. Использование одной точки в разных альтернативных установках упростит написание программы, поскольку подпрограммы инициализации, деактивации, приёма данных и выборки записи будут общими. Разделение на интерфейсы будет происходить уже на этапе непосредственной записи данных в P89LPC9xx. Продолжим редактирование файлов проекта. Установим программатору идентификатор PID, равный h.

Количество альтернативных установок зададим равным 2. При изменении количества альтернативных установок следует соответствующим образом скорректировать таблицу значений конфигурационных регистров tablecfg1if0. Теперь редактируем описание топологии.

Программисту USB-устройств Часть 3. Стандартные дескрипторы USB - PDF

В нём будут описаны те же самые три точки. В каждом дескрипторе интерфейса добавим строковое описание его назначения. Он позволяет контролировать данные, проходящие через GPIF, и корректировать ошибку в одном бите или обнаружить ошибку в двух битах блока данных. При заполнении всех буферов GPIF приостанавливает работу до появления свободного буфера. Вмешательство микроконтроллера не требуется; Single Read одиночное чтение.

Для активизации транзакции используется микроконтроллер. Модуль поддерживает два режима работы шины USB из трёх возможных полноскоростной full-speed и высокоскоростной high-speed.

Сразу после подключения происходит аппаратная идентификация доступного режима работы для FX2LP. Как известно, далее хост запрашивает описание устройства. В FX2LP имеется встроенная поддержка стандартных требований. Контрольная точка модуля имеет два буфера: Кроме стандартных требований, модуль поддерживает дополнительные vendor требования. Фирма Cypress зарезервировала номера требований 0A0h С помощью данного требования происходит загрузка нового кода для ядра Программист даже при отключении встроенной поддержки стандартных требований не может запретить выполнение зарезервированных требований, и поэтому для своих дополнительных требований необходимо использовать оставшиеся свободными номера.

Практикум программиста USB-устройств Часть 1. EZ-USB FX2LP универсальное USB-решение

Модуль USB поддерживает шесть точек. Эти точки используются только для передач типа bulk и interrupt. Источники прерывания модуля USB представлены в табл. Для работы используются всего три регистра: Модуль генерирует прерывание после передачи или приёма байта по шине. Помимо общего назначения обмена данными с микросхемами I 2 C в процессе работы, данный модуль имеет ещё одно специфическое назначение.

После прохождения внешнего сигнала Reset модуль используется для загрузки памяти программ из внешней микросхемы. Поиск загрузочной микросхемы происходит в следующем порядке: Если считанный байт имеет значение 0C2h, то происходит загрузка программы. На начальном этапе нам потребуется поддержка выполнения следующих действий: Выбор и настройка транслятора Существует огромное количество трансляторов, которые позволяют получить код для микроконтроллеров, совместимых споэтому предпочтение следует отдать хорошо изученному транслятору.

Главное, чтобы он поддерживал включаемые файлы с предопределёнными именами регистров. В частности, для решения нашей задачи подойдёт ассемблер asem [2]. Его несомненными достоинствами являются свободное распространение и многоплатформенность.

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

Программисту USB-устройств Часть 3. Стандартные дескрипторы USB

Готовый пакетный файл можно найти на сайте журнала. Пакет содержит универсальный, настраиваемый пользователем драйвер, библиотеки для работы с драйвером и программу управления USB-устройствами. Данный комплект программ позволяет разработчику практически сразу приступить к разработке и отладке низкоуровневого программного обеспечения. Настройка драйвера Драйвер является связующим звеном между приложением пользователя и USB-устройством. К установочным файлам относятся: Изначально информационный файл не имеет сведений о каких-либо устройствах и действиях над ними, поэтому перед установкой драйвера необходимо отредактировать CyUSB.

Для того чтобы приступить к работе с микроконтроллером, нам достаточно включить его поддержку и предусмотреть поддержку разрабатываемого устройства. Итак, добавим в информационный файл следующие идентификаторы: В любом текстовом редакторе открываем файл CyUSB. В результате получим описание: Далее, почти в самом конце файла, находим раздел [String] и в нём строку следующего содержания: Здесь происходит сопоставление идентификаторов устройства и названия.

Добавляем ещё две строки следующего вида XXXX заменяем реальными значениями: Итак, установочные файлы драйвера готовы. Запомним каталог, в котором они располагаются, так как при первом подключении устройства необходимо будет произвести установку драйвера, указав полный путь к установочным файлам.

Возможности драйвера на этом не исчерпаны. Обзор возможностей программы обслуживания Теперь, когда драйвер подготовлен к установке, познакомимся с программой обслуживания USB-устройств. Программа имеет два режима работы: Обмен данными с типовым USBустройством; 2.

Низкоуровневый доступ к функциям микроконтроллера CY7Cx. Внешний вид консоли для первого режима работы представлен на рис. Как можно заметить, интерфейс программы вполне дружелюбен, нагляден и интуитивно понятен.

В таблице Select Device отображаются найденные устройства. По умолчанию программа работает с драйвером CyUSB, поэтому круг идентифицируемых устройств ограничен списком, составленным пользователем в информационном файле CyUSB. На протяжении всего времени работы программы осуществляется контроль за подключением устройств, а любое изменение незамедлительно отражается в таблице Select Device. Пользователю доступны для изменения следующие свойства: Изменение любого из параметров приводит к переходу устройства в новый режим работы, а точки, доступные в этом режиме, отображаются в таблице Interface Endpoints.

Значения, установленные на первой закладке, становятся активными для работы на остальных закладках и не меняются до следующего выбора пользователя. Пользователь, используя элементы управления, имеет возможность сформировать 8-байтный пакет SETUP с любыми значениями полей. В примере на рис.

Буфер точки занят Bulk out failedпоэтому данные не достигли адресата. Последняя закладка, показанная на рис. Закладка Other Endpt Xfers, показанная на рис.

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