Библиотека LUFA имеет много преимуществ по сравнению с реализацией кода с управлением USB AVR напрямую. Намного предпочтительней встроить LUFA в Ваш уже существующий проект - даже если Вы делаете новый проект, использующий LUFA - чем начинать с нуля и напрямую работать с регистрами USB AVR. Некоторые из причин следующие:
- Переносимость: Стек LUFA разработан для запуска (с некоторыми ресурсами) на всех моделях чипов USB AVR Atmel, независимо от точной версии используемого контроллера USB. Если Вы решите реализовать свой собственный стек USB, Вам либо нужен код, учитывающий различия между каждым контроллером USB в каждой модели чипа USB AVR, либо смириться с тем, что Ваш код будет работать только на конкретной серии моделей чипа USB AVR.
- Скорость разработки: LUFA поставляется с широким диапазоном готовых демок, бутлоадеров и проекатов, которые Вы можете попробовать, поучиться на них и взять за основу в разработке. Каждый из этих демонстранционных примеров протестирован (насколько это было возможно) на многих USB AVR и операционных системах, чтобы убедиться в их работоспособности в разных условиях. Кроме того в библиотеку встроены драйверы класса для нескольких классов USB, которые Вы можете использовать в своих проектах с минимальным усилием.
- Надежность и удобство в эксплуатации: Поскольку LUFA заботится о большой части реализации USB, Вас можно оставить сосредоточению на функциональности Вашего фактического проекта, вместо того, чтобы быть сдержанными, разрабатывая и отлаживая код стека USB. Поскльку LUFA использует чистый и понятный API для разработки USB, Ваш код получится более читаемый, чем если бы это был низкоуровневый код USB, непосредственно интегрируемый в приложение. Обновление библиотеки LUFA - это простая замена папок на новые, и исправления багов делаются за секунды каждый раз, когда выходит новый релиз библиотеки.
- Размер кода: При использовании LUFA не просто требуется меньше усилий для реализации сложного кода USB устройств, LUFA также требует меньше памяти FLASH (в большинстве случаев с корректными опциями компиляции), чем стек Atmel, что означает наличие большего свободного места для приложения пользователя*.
- Техподдержка: Поскольку много людей использует сейчас LUFA в своих проектах, Вы можете использовать в своих интересах знания других, когда сталкиваетесь с трудностями или нуждаетесь в некотором совете. Кроме того, Вы можете также написать автору библиотеки для получения персональной техподдержки, когда в ней нуждаетесь (тема вопроса будет добавлена в рабочее расписание автора).
* Например, демо устройства мыши на стеке Atmel занимает 4292 байта, а демо LUFA Mouse Low Level Device занимает 3332 байта, при одинаковых условиях окружения сборки