I’m with an open-source USB library for the USB-enabled AVR microcontrollers, LUFA (2011-10-09), and I am trying to code the CDC (a bootloader) example to my AT90USB162 chip. The sample code is in folder /Bootloads/CDC and comes prepared for building a CDC for AT90USB1287. So I needed to change the makefile parameters to set the proper microchip.
In the makefile I changed the following:
- MCU = at90usb162
- F_CPU = 16000000
- FLASH_SIZE_KB = 16
- BOOT_SECTION_SIZE_KB = 4
and built the code. This occurred without errors but when I tried to burn the chip with the .hex file, it returns the message:
Address is out of range
Why could this happen?
Update
In makefile, the BOOT_START is configured as:
BOOT_START = 0x$(shell echo "obase=16; ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024" | bc)
Maybe the error would be in the BOOT_START accounting? Should I configure something more?
According to page 239 of at90usb162 datasheet, fuses BOOTSZ0 and BOOTSZ1 need to be 0 for a 4Kb boot loader. Have you checked this? You also need to check if other things are matched between at90usb1287 and at90usb162 (like BOOT_START and others).
How do you try to burn new boot loader into an AVR? Do you have a proper programmer or you are trying to do it with embedded USB boot loader?
Just complementing @avra answer from @avra comment