LUFA, кодирующий пример для AT90USB162 - PullRequest
4 голосов
/ 02 ноября 2011

У меня есть USB-библиотека с открытым исходным кодом для микроконтроллеров AVR с поддержкой USB , LUFA (2011-10-09), и я пытаюсь кодировать * Пример 1005 * CDC (загрузчик) для моего AT90USB162 чипа. Пример кода находится в папке /Bootloads/CDC и поставляется подготовленным для сборки CDC для AT90USB1287 . Поэтому мне нужно было изменить параметры make-файла, чтобы установить правильный микрочип.

В make-файле я изменил следующее:

  • MCU = at90usb162
  • F_CPU = 16000000
  • FLASH_SIZE_KB = 16
  • BOOT_SECTION_SIZE_KB = 4

и встроенный код. Это произошло без ошибок, но когда я попытался записать чип с файлом .hex, он возвращает сообщение:

Адрес вне диапазона

Почему это могло произойти?

Обновление

В makefile BOOT_START настроен как:

BOOT_START = 0x$(shell echo "obase=16; ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024" | bc)

Может быть, ошибка будет в учете BOOT_START? Должен ли я настроить что-то еще?

1 Ответ

4 голосов
/ 03 ноября 2011

Согласно стр. 239 таблицы данных at90usb162, предохранители BOOTSZ0 и BOOTSZ1 должны иметь значение 0 для загрузчика 4 КБ.Вы проверяли это?Вам также необходимо проверить, совпадают ли другие вещи между at90usb1287 и at90usb162 (например, BOOT_START и другие).Как вы пытаетесь записать новый загрузчик в AVR?У вас есть подходящий программист или вы пытаетесь сделать это с помощью встроенного загрузчика USB?

Просто дополняете ответ @avra из комментария @avra

Хранение другого загрузчика поверх существующего загрузчика невозможно с загрузчиком.Получи это сейчас?;-) Это ограниченная область для загрузчика, и поэтому она не работает для вас.Загрузчик не способен перезаписать его самостоятельно.Вам нужен другой тип программиста, который не идет с этим ограничением.Все AVR с загрузчиками должны иметь начальное программирование с помощью этого специального типа программатора (JTAG / ISP / SPI / PDI программатор).

...