Библиотека LUFA (раннее название MyUSB) версия 101122
Конфигурирование демок, бутлоадеров и проектов

Если используемая модель AVR, частота тактов, плата или другие установки отличаются от текущих, они должны быть изменены и проект должен после этого перекомпилироваться их исходного кода, перед как его можно будет записать в микроконтроллер AVR. Большинство опций конфигурации проекта размещено в скрипте сборки "makefile", который имеется корневой папке каждого приложения LUFA, однако некоторые опции, специфические для демо или приложения (такие как выходной формат в демо AudioOut) размещны в одном или нескольких файлах исходного кода проекта. См. индивидуальную документацию каждого проекта для специфичных значений настроек приложения.

Каждый "makefile" проекта содержит все скрипты и данные конфигурации, необходимые для компилирования каждого проекта. Можно поменять настройки конфигурации сборки открытием и редактированием makefile в любом текстовом редакторе типа Notepad или WordPad (убедитесь, что формат, в котором файл будет сохранен, является чистым текстом ASCII).

Внутри каждого makefile размещено некоторое количество переменных конфигурации в формате "<ИМЯ ПЕРЕМЕННОЙ> = <ЗНАЧЕНИЕ>". Для каждого приложения имеются следующие важные переменные, которые можно поменять:

  • MCU, целевой микроконтроллер AVR, на котором будет работать firmware
  • BOARD, целевая аппаратура макетной платы
  • F_CLOCK, сырая главная тактовая частота микроконтроллера, до любого предварительного деления
  • F_CPU, главная тактовая частота ядра микроконтроллера AVR, после предварительного деления (прескалера)
  • CDEFS, определения для препроцессора C, которые конфигурируют поведение исходного кода
  • LUFA_PATH, путь до исходного кода библиотеки LUFA
  • LUFA_OPTS, опции времени компиляции LUFA, которые конфигурируют особенности работы библиотеки

Эти значения должны быть изменены для того, чтобы сборка кода соответствовала аппаратуре.

Параметр MCU

Этот параметр показывает целевую модель AVR, для которой компилируется приложение. Должен быть установлен в соответствии с типом чипа AVR (таким как например AT90USB1287, или ATMEGA32U4), в нижнем регистре (маленькими буквами, например "at90usb1287"). Имейте в виду, что не все демки поддерживают все модели USB AVR, так как может использоваться периферия или режим, которые имеются не на всех чипах.

Для поддерживаемых моделей процессоров см. Поддержка устройств и аппаратуры.

Параметр BOARD

Этот параметр показывает для компилируемого приложения целевую аппаратуру платы, на которой установлен AVR. Некоторые драйверы библиотеки LUFA зависят от платы, как например драйвер светодиодов (LED), и библиотеке нужно знать конфигурацию целевой платы. Если Вы используете одну из моделей плат, перечисленных на главной странице библиотеки, поменяйте этот параметр на имя платы, написанное в ВЕРХНЕМ регистре.

Если Вы не используете любые зависящие от платы драйвера из библиотеки LUFA, или испльзуете свою собственную конфигурацию платы, поменяйте этот параметр на значение "USER" (без кавычек) вместо стандартного имени платы. Если выбран тип платы USER, и приложение использует один или большее количество LUFA-драйверов аппаратуры, привязанной к плате, то должны быть скопироаны подходящие драйверы-заглушки из папки /BoardStubs/ в папку /Board/ внутри корневой папки приложения, и в заглушку драйвера должен быть дописан подходящий код для управления собственной аппаратурой платы.

Для плат, имеющих встроенную в библиотеку LUFA поддержку аппаратуры, см. Поддержка устройств и аппаратуры.

Параметр F_CLOCK

Этот параметр показывает входную тактовую частоту целевого AVR's в Гц. Это реальная тактовая частота, до предделителя (обычно это тактовая частота используемого кварцевого резонатора). В архитектуре USB AVR тактовая частота перед любым предделением поступает на прямо на подсистему PLL, таким образом PLL прямо зависит от тактового входа. Далее PLL питает USB и другие секции AVR корректными умноженными частотами, требуемыми для функционирования этих секций.

Имейте в виду, что эти значения не действительно *меняют* входную тактовую частоту AVR, это просто метод для указания библиотеке тактовой частоты AVR, как это установлено фьюзами AVR. Если значение не соответствует дейсвительной рабочей частоте AVR, то один или несколько компонентов библиотеки будут работать неверно.

Параметр F_CPU

Этот параметр показывает главную тактовую частоту в Гц ядра CPU целевого AVR.

Имейте в виду, что эти значения не действительно *меняют* тактовую частоту CPU AVR, это просто метод для указания библиотеке тактовой частоты ядра AVR, как это установлено фьюзами AVR. Если значение не соответствует дейсвительной рабочей частоте AVR, то один или несколько компонентов библиотеки будут работать неверно.

Параметр CDEFS

Многие приложения имеют особенности, которыми можно управлять путем задания специально именованных токенов препроцессора в точке компиляции - например, приложение может использовать токен времени компиляции для включения или выключения опциональных или взаимоисключающих порций кода. Токены для препроцессора можно определять здесь в виде списка с перечислением каждого токена с опцией -D командной строки, и каждый токен может быть опционально задан в определенное значение. Когда определения делаются в makefile проекта, они ведут себя так же, как если были бы определены через обычный оператор препроцессора (#define) в каждом из исходных файлов проекта.

Многие приложения имеют несколько строк/определений CDEF, которые соединяются друг с другом оператором "+=". Это обеспечивает читаемость для большого количества опций путем разбиения их на группы опций в отдельных строках.

Параметр LUFA_PATH

Так как каждая программа LUFA нуждается в правильном компилировании исходного кода библиотеки LUFA, приложение должно знать, где находится библиотека LUFA. Этот параметр указывает значение пути до базового каталога библиотеки LUFA относительно пути расположения makefile проекта.

Параметр LUFA_OPTS

Этот параметр подобен параметру CDEFS, просто указанному в другом месте - реально удобное положение группирования токенов времени компиляции библиотеки в месте, отличающемся от группировки токенов времени компиляции приложения. Обычно эти опции менять не нужно, чтобы позволить приложению корректно компилироваться и запускаться на различных платах или AVR в текущей конфигурации - если опции некорректны, то демо наиболее вероятно несовместимо с выбранной моделью USB AVR и невозможно добиться его работы путем изменения каких-либо настроек makefile (или вообще ничего сделать нельзя). Здесь можно задать установки, такие как режим USB (устройство, хост или оба режима сразу - OTG), скорость интерфейса USB (Low или Full speed) и другие опции конфигурации LUFA - см. документацию Общая информация о токенах времени компиляции для подробностей по допустимым опциям времени компиляции LUFA.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines