LUFA - бесплатная библиотека USB для микроконтроллеров Atmel AVR |
Написал microsin | |
03.03.2010 | |
LUFA переводится как Lightweight USB Framework for AVRs, т. е. "облегченная рабочая среда USB для микроконтроллеров AVR" (старое название библиотеки MyUSB). Это библиотека и примеры программ (все с открытыми исходными кодами, разрешающая лицензия MIT), реализующие полный стек протоколов USB на микроконтроллерах ATmel, которые имеют аппаратную поддержку интерфейса USB - серии AT90USBxxxx and ATMEGAxxUx, например AT90USB162. Поддерживаются все известные Atmel USB AVR и отладочные платы USB AVR. Библиотека в настоящий момент имеет стабильные релизы, доступные для загрузки и использования в проектах пользователей. Поддерживается работа в режиме USB устройства и USB хоста (режим хоста имеет некоторые ограничения). Библиотека LUFA написана специально для бесплатного компилятора AVR-GCC и использует некоторые выражения языка, специфичные только для GCC - чтобы сделать интерфейс API библиотеки более наглядным и упрощенным. В среде Windows для использования AVR-GCC можно свободно скачать и использовать пакет WinAVR.
В архив библиотеки LUFA добавлены многочисленные примеры демонстрационных программ, которые показывают, как использовать библиотеку. Примеры разработаны для макетных плат USBKEY, STK525, STK526, EVK527, XPLAIN и RZUSBSTICK (в большинстве случаев в двух вариантах - Low Level API и USB Class Driver). Вот список примеров:
Пакет библиотеки LUFA также содержит загрузчики программного кода (bootloader) для следующих классов USB:
В пакете библиотеки LUFA имеются также следующие проекты с открытым исходным кодом: [Отличия LUFA от стека библиотек Atmel] Atmel предоставляет официальный стек библиотек USB AVR stack, который может использоватья в пользовательских проектах и продуктах. Так как и LUFA, и стек Atmel предназначен для одной и той же цели и функциональности в проектировании устройств USB, то часто спрашивают - чем лучше LUFA по сравнению с официальным стеком библиотек Atmel USB stack. Ниже описаны некоторые из преимуществ LUFA по отношению к официальному стеку. Лицензирование: LUFA выпущен в соответствии с очень либеральной лицензией MIT (см. Source Code License), в то время как стек Atmel вводит несколько ограничений относительно того, как и где её библиотека может использоваться. Лицензирование LUFA одинаково хорошо подходит и для коммерческих и для некоммерческих объектов. Демонстрационные примеры и проекты: в отличие от стека Atmel, LUFA поставляется со многими демонстрационными примерами для режима устройства USB и режима хоста USB в проектах, готовых для немедленного запуска. У Atmel отдельные примеры разбросаны по разным местам демонстрационных примеров AVR USB, что требует большего количества времени для поиска и предлагает меньше вариантов конечному пользователю. LUFA также содержит несколько загрузчиков (bootloader CDC и DFU) с открытым исходным кодом, которые могут быть изменены в соответствии с пожеланиями пользователя вместо того, чтобы быть вынужденным использовать единственный предварительно созданный загрузчик DFU Atmel (с закрытым исходным кодом). Central Library Code: LUFA разработан, чтобы позволить коду ядра центральной библиотеки быть совместно использованным среди нескольких проектов (при условии очистки make clean скомпилированных объектных файлов между различными проектами). Это находится на прямом контрасте по отношению к библиотеке Atmel - библиотека Atmel строго связана с проектом, в который интегрирована. LUFA позволяет использовать только одну копию ядра библиотеки, которое будет необходимо для всех приложений, и делает обновление библиотеки используемым во всех проектах тривиальный процессом copy-and-paste. Чистый API: одна из основных целей проекта LUFA состоит в том, чтобы сделать API удобным. В то время как LUFA - гибкий проект, который подвергся многим усовершенствованиям API, то его проще использовать и легче понять, чем эквивалентный код стека Atmel. API LUFA более полон, чем стек Atmel, и содержит много функций, чтобы ускорить разработку приложений. Полная поддержка аппаратных средств: LUFA поддерживает весь ряд микроконтроллеров AVR USB Atmel (см. "Device and Hardware Support" в документации LUFA), с портированием между микросхемами, являющимися во многих случаях столь же простым, как единственный переключатель компиляции (makefile -> MCU). Стек Atmel требует, чтобы различные библиотеки использовались на основании определенной серии микроконтроллера AVR USB, что усложняет процесс перемещения между моделями AVR USB. Кроме того, LUFA содержит драйверы для всех аппаратных средств, содержащихся на базовых макетных платах AVR USB Atmel (и многих популярных платах других производителей), благодаря чему Вы можете быстро и легко начать программировать на LUFA. Лучшая поддержка Библиотеки: так как множество людей теперь используют LUFA, вокруг этой библиотки появилось сообщество. Вы можете быстро получить ответы на вопросы, связанные с LUFA электронной почтой от автора библиотеки, или отправив запрос на официальный LUFA support mailing list. LUFA не единственный (хотя наверное, наилучший) стек, доступный для AVR USB. Здесь перечислены другие известные стеки AVR USB. [Проекты, основанные на библиотеке LUFA] LUFA в настоящий момент используется повсюду в мире, во многих приложениях - коммерческих и некоммерческих. Ниже приведен список (состояние на начало 2011 года) известных публичных проектов, основанных на LUFA, использующих библиотеку LUFA разными способами. Для получения дополнительной информации о каждом проекте посетите их домашнюю страницу. Если у Вас есть проект, который Вы хотели бы добавить в этот список, напишите автору библиотеки LUFA. Платы для разработки (Development Boards) AVR-USB, использующие LUFA В следующем списке - известные платы для разрабоки AVR USB, с которыми рекомендуется использовать LUFA для стека USB. Некоторые из них имеют открытый дизайн, и все доступны для приобретения как полноценные макетные платы для разработки.
- AVR-USB-162, похожая на USBKEY плата разработки для чипа AT90USB162 Хобби-проекты с использованием LUFA Далее идут известные хобби-проекты, использующие библиотеку LUFA. Многие открыты (open source), и показывают интересные способы, с которыми библиотека LUFA может быть интегрирована в многие приложения.
- Игровой джойстик с акселерометром Коммерческие проекты на библиотеке LUFA Следующий список показывает известные коммерческие продукты на библиотеке LUFA. Некоторые из них - открытый исходный код, хотя многие - "черный ящик", без предоставленного исходного кода.
- Arduino Uno, официальная плата Arduino [Альтернативные стеки библиотек USB AVR - Аппаратные стеки (Hardware USB AVR Stacks)] Это известные альтернативные стеки USB, которые разработаны для и выполнены исключительно на серийных микроконтроллерах AVR USB, которые содержат аппаратные средства контроллера USB на микросхеме - с целью получения максимальной скорости и наибольшего количества функций.
Name: Atmel USB AVR Stack (Atmel Inc.)
Name: Dr. Stefan Salewski's AT90USB1287 Stack (Dr. Stefan Salewski)
Name: PJRC Teensy Stack (Paul Stoffregen) [Альтернативные стеки библиотек USB AVR - программные стеки(Software AVR Stacks)] Известные альтернативные стеки USB, которые могут работать на обычных (без аппаратной поддержки USB) моделях AVR. Используется bit-banged (эмулированная) версия протокола USB. Стек ограничен в возможностях из-за циклов, требуемых для выделения поддержкой шины USB, но предлагает дешевый способ реализовать функциональность USB в проекте.
Name: AVR309: Software USB (Atmel)
Name: V-USB (Objective Development) [Ссылки]
1. LUFA - тут можно найти ссылки на закачку последнего стабильного релиза. |
|
Последнее обновление ( 11.02.2013 ) |