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.