Вступление.
at90usb162-cdc-1_0_1 – демострационные исходники от ATMEL для микроконтроллера с аппаратным USB-интерфейсом AT90USB162. Представляют из себя реализацию профиля COM-порта.
Первое впечатление.
Написано с моей точки зрения крайне ужасно. Проект можно размещать только в заданном каталоге (или править пути в cdc.aps). Структура проекта состоит большого числа папок с частично дублирующимися файлами. Сократить число папок простым удалением невозможно – ВСЕ участвуют в проекте. Разобраться даже во взаимосвязях исходных файлов очень трудно. Проект, с моей точки зрения, перегружен абстракциями. Некий планировщик задач Sheduler занимает две вложенные папки, состоит из двух файлов в них и дополнительного в папке conf для его настройки, а выполняет всего лишь последовательный вызов прописанных в нем функций. На переферийные устройства выделена отдельная папка lib_mcu в ней в подпапках лежат файлы на устройства. Более того, папка дублируется.
Объяснить такое можно несколькими способами:
- Я отстал от жизни, любой проект (даже небольшой) сейчас так выглядит.
- Исходники предназначены для написания очень больших проектов. Правда на AT90USB162 очень большой физически не реализуешь – размер памяти не позволит.
- ATMEL пишет схожие демострашки для различных контроллеров. Так удобнее их поддерживать.
- Это такой прикол. Не для средних умов. Вроде того что не разобрался – нечего загрязнять “эфир” своими поделками.
Спустя некоторое время.
Наоборот, написано хорошо. Абстракции выполняют роль драйверов и дают возможность переносимости проекта на другие МК. Если конечно у них есть похожий контроллер USB. Структура папок тоже вполне логична:
- at90usb162
- Файлы для проектов на at90usb162
- demo
- Демонстрационные примеры на МК at90usb162.
- demo\XXX
- Проект под IAR
- demo\XXX\conf
- Конфигурации проекта
- demo\XXX\gcc
- Проекта под AVR Studio
- lib_board
- Драверы под разные демонстрационные платы с данным МК.
- lib_mcu
- Драйверы для конкретного МК at90usb162.
- modules
- Программные модули, предназначенные в первую очередь под данный МК.
- common
- Драйверы и программные модули, подходящие под различные МК.