LUFA Boot loader for AT90USB1286

Go To Last Post
3 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I did not manage to adapt the Bootloader code appropriately to get a working HID bootloader. I tested the code on the teensy++2. As I burned the teensy bootloader during my test I have no working bootloader any more. I used the LUFA from GitHub (https://github.com/abcminiuser/lufa hash: 2cde257fe11886bebbfe4aea816268c2739d89bb).

I program the MIC via the ISP Interface.

 

This is my makefile, where I also state the my fuse bit settings:

#
#             LUFA Library
#     Copyright (C) Dean Camera, 2017.
#
#  dean [at] fourwalledcubicle [dot] com
#           www.lufa-lib.org
#
# --------------------------------------
#         LUFA Project Makefile.
# --------------------------------------

# Run "make help" for target help.

MCU          = at90usb1286
ARCH         = AVR8
BOARD        = TEENSY2
F_CPU        = 16000000
F_USB        = $(F_CPU)
OPTIMIZATION = s
TARGET       = BootloaderHID
SRC          = $(TARGET).c Descriptors.c $(LUFA_SRC_USB)
LUFA_PATH    = ../../LUFA
CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -DBOOT_START_ADDR=$(BOOT_START_OFFSET) -IConfig/
LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET)

# Flash size and bootloader section sizes of the target, in KB. These must
# match the target's total FLASH size and the bootloader size set in the
# device's fuses.
FLASH_SIZE_KB        := 128
BOOT_SECTION_SIZE_KB := 8

# Fuse Settings
# Extended:	0xF3
# High:		0xD9
# Low:		0x5F
#
# Lock Settings
# Lock Bit=	0xFF

# Bootloader address calculation formulas
# Do not modify these macros, but rather modify the dependent values above.
CALC_ADDRESS_IN_HEX   = $(shell printf "0x%X" $$(( $(1) )) )
BOOT_START_OFFSET     = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 )
BOOT_SEC_OFFSET       = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) )

# Default target
all:

# Include LUFA-specific DMBS extension modules
DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA
include $(DMBS_LUFA_PATH)/lufa-sources.mk
include $(DMBS_LUFA_PATH)/lufa-gcc.mk

# Include common DMBS build system modules
DMBS_PATH      ?= $(LUFA_PATH)/Build/DMBS/DMBS
include $(DMBS_PATH)/core.mk
include $(DMBS_PATH)/cppcheck.mk
include $(DMBS_PATH)/doxygen.mk
include $(DMBS_PATH)/dfu.mk
include $(DMBS_PATH)/gcc.mk
include $(DMBS_PATH)/hid.mk
include $(DMBS_PATH)/avrdude.mk
include $(DMBS_PATH)/atprogram.mk

Also I was not able to flash the firmware with avrdude (on my Linux workstation) do I need a special parameter to flash?

sudo avrdude -p at90usb1286 -P usb -c avrispmkII -U flash:w:BootloaderHID.hex:i

 

I was only able to program the chip with the ATMEL Studio 7.

Last Edited: Tue. May 23, 2017 - 07:47 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

OK after setting the FUSES right, I was able to flash prperly.

EFUSE=0xF3
HFUSE=0xD9
LFUSE=0x5F

sudo avrdude -B 5 -P usb -c avrispmkII -p at90usb1286 -e \
-U efuse:w:${EFUSE}:m \
-U hfuse:w:${HFUSE}:m \
-U lfuse:w:${LFUSE}:m

But unfortunately still was not able to get a working bootloader. Has nowone ever managed to get a HID Bootloader (like Teensy) working on the AT90USB1286?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have used the LUFA Teensy compatible bootloader successfully. Do note that it will not fit in the 512 words like the original Teensy bootloader.

Let me see if I can find it...

David (aka frog_jr)