--- /dev/null
- /*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2017.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.lufa-lib.org\r
- */\r
- \r
- /*\r
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
- \r
- Permission to use, copy, modify, distribute, and sell this\r
- software and its documentation for any purpose is hereby granted\r
- without fee, provided that the above copyright notice appear in\r
- all copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
- \r
- The author disclaims all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
- */\r
- \r
- #if AUX_BOOT_SECTION_SIZE > 0\r
- #warning Using a AUX bootloader section in addition to the defined bootloader space (see documentation).\r
- \r
- ; Trampoline to jump over the AUX bootloader section to the start of the bootloader,\r
- ; on devices where an AUX bootloader section is used.\r
- .section .boot_aux_trampoline, "ax"\r
- .global Boot_AUX_Trampoline\r
- Boot_AUX_Trampoline:\r
- jmp BOOT_START_ADDR\r
- #endif\r
- \r
- ; Trampolines to actual API implementations if the target address is outside the\r
- ; range of a rjmp instruction (can happen with large bootloader sections)\r
- .section .apitable_trampolines, "ax"\r
- .global BootloaderAPI_Trampolines\r
- BootloaderAPI_Trampolines:\r
- \r
- BootloaderAPI_ErasePage_Trampoline:\r
- jmp BootloaderAPI_ErasePage\r
- BootloaderAPI_WritePage_Trampoline:\r
- jmp BootloaderAPI_WritePage\r
- BootloaderAPI_FillWord_Trampoline:\r
- jmp BootloaderAPI_FillWord\r
- BootloaderAPI_ReadSignature_Trampoline:\r
- jmp BootloaderAPI_ReadSignature\r
- BootloaderAPI_ReadFuse_Trampoline:\r
- jmp BootloaderAPI_ReadFuse\r
- BootloaderAPI_ReadLock_Trampoline:\r
- jmp BootloaderAPI_ReadLock\r
- BootloaderAPI_WriteLock_Trampoline:\r
- jmp BootloaderAPI_WriteLock\r
- BootloaderAPI_UNUSED1:\r
- ret\r
- BootloaderAPI_UNUSED2:\r
- ret\r
- BootloaderAPI_UNUSED3:\r
- ret\r
- BootloaderAPI_UNUSED4:\r
- ret\r
- BootloaderAPI_UNUSED5:\r
- ret\r
- \r
- \r
- \r
- ; API function jump table\r
- .section .apitable_jumptable, "ax"\r
- .global BootloaderAPI_JumpTable\r
- BootloaderAPI_JumpTable:\r
- \r
- rjmp BootloaderAPI_ErasePage_Trampoline\r
- rjmp BootloaderAPI_WritePage_Trampoline\r
- rjmp BootloaderAPI_FillWord_Trampoline\r
- rjmp BootloaderAPI_ReadSignature_Trampoline\r
- rjmp BootloaderAPI_ReadFuse_Trampoline\r
- rjmp BootloaderAPI_ReadLock_Trampoline\r
- rjmp BootloaderAPI_WriteLock_Trampoline\r
- rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1\r
- rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2\r
- rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3\r
- rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4\r
- rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5\r
- \r
- \r
- \r
- ; Bootloader table signatures and information\r
- .section .apitable_signatures, "ax"\r
- .global BootloaderAPI_Signatures\r
- BootloaderAPI_Signatures:\r
- \r
- .long BOOT_START_ADDR ; Start address of the bootloader\r
- .word 0xDF30 ; Signature for the MS class bootloader, V1\r
- .word 0xDCFB ; Signature for a LUFA class bootloader\r
++/*
++ LUFA Library
++ Copyright (C) Dean Camera, 2017.
++
++ dean [at] fourwalledcubicle [dot] com
++ www.lufa-lib.org
++*/
++
++/*
++ Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
++
++ Permission to use, copy, modify, distribute, and sell this
++ software and its documentation for any purpose is hereby granted
++ without fee, provided that the above copyright notice appear in
++ all copies and that both that the copyright notice and this
++ permission notice and warranty disclaimer appear in supporting
++ documentation, and that the name of the author not be used in
++ advertising or publicity pertaining to distribution of the
++ software without specific, written prior permission.
++
++ The author disclaims all warranties with regard to this
++ software, including all implied warranties of merchantability
++ and fitness. In no event shall the author be liable for any
++ special, indirect or consequential damages or any damages
++ whatsoever resulting from loss of use, data or profits, whether
++ in an action of contract, negligence or other tortious action,
++ arising out of or in connection with the use or performance of
++ this software.
++*/
++
++#if AUX_BOOT_SECTION_SIZE > 0
++#warning Using a AUX bootloader section in addition to the defined bootloader space (see documentation).
++
++; Trampoline to jump over the AUX bootloader section to the start of the bootloader,
++; on devices where an AUX bootloader section is used.
++.section .boot_aux_trampoline, "ax"
++.global Boot_AUX_Trampoline
++Boot_AUX_Trampoline:
++ jmp BOOT_START_ADDR
++#endif
++
++; Trampolines to actual API implementations if the target address is outside the
++; range of a rjmp instruction (can happen with large bootloader sections)
++.section .apitable_trampolines, "ax"
++.global BootloaderAPI_Trampolines
++BootloaderAPI_Trampolines:
++
++ BootloaderAPI_ErasePage_Trampoline:
++ jmp BootloaderAPI_ErasePage
++ BootloaderAPI_WritePage_Trampoline:
++ jmp BootloaderAPI_WritePage
++ BootloaderAPI_FillWord_Trampoline:
++ jmp BootloaderAPI_FillWord
++ BootloaderAPI_ReadSignature_Trampoline:
++ jmp BootloaderAPI_ReadSignature
++ BootloaderAPI_ReadFuse_Trampoline:
++ jmp BootloaderAPI_ReadFuse
++ BootloaderAPI_ReadLock_Trampoline:
++ jmp BootloaderAPI_ReadLock
++ BootloaderAPI_WriteLock_Trampoline:
++ jmp BootloaderAPI_WriteLock
++ BootloaderAPI_UNUSED1:
++ ret
++ BootloaderAPI_UNUSED2:
++ ret
++ BootloaderAPI_UNUSED3:
++ ret
++ BootloaderAPI_UNUSED4:
++ ret
++ BootloaderAPI_UNUSED5:
++ ret
++
++
++
++; API function jump table
++.section .apitable_jumptable, "ax"
++.global BootloaderAPI_JumpTable
++BootloaderAPI_JumpTable:
++
++ rjmp BootloaderAPI_ErasePage_Trampoline
++ rjmp BootloaderAPI_WritePage_Trampoline
++ rjmp BootloaderAPI_FillWord_Trampoline
++ rjmp BootloaderAPI_ReadSignature_Trampoline
++ rjmp BootloaderAPI_ReadFuse_Trampoline
++ rjmp BootloaderAPI_ReadLock_Trampoline
++ rjmp BootloaderAPI_WriteLock_Trampoline
++ rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1
++ rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2
++ rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3
++ rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4
++ rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5
++
++
++
++; Bootloader table signatures and information
++.section .apitable_signatures, "ax"
++.global BootloaderAPI_Signatures
++BootloaderAPI_Signatures:
++
++ .long BOOT_START_ADDR ; Start address of the bootloader
++ .word 0xDF30 ; Signature for the MS class bootloader, V1
++ .word 0xDCFB ; Signature for a LUFA class bootloader
--- /dev/null
- #\r
- # LUFA Library\r
- # Copyright (C) Dean Camera, 2017.\r
- #\r
- # dean [at] fourwalledcubicle [dot] com\r
- # www.lufa-lib.org\r
- #\r
- # --------------------------------------\r
- # LUFA Project Makefile.\r
- # --------------------------------------\r
- \r
- # Run "make help" for target help.\r
- \r
- MCU = at90usb1287\r
- ARCH = AVR8\r
- BOARD = USBKEY\r
- F_CPU = 8000000\r
- F_USB = $(F_CPU)\r
- OPTIMIZATION = s\r
- TARGET = BootloaderMassStorage\r
- SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S Lib/SCSI.c Lib/VirtualFAT.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)\r
- LUFA_PATH = ../../LUFA\r
- CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)\r
- LD_FLAGS = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)\r
- \r
- # Flash size and bootloader section sizes of the target, in KB. These must\r
- # match the target's total FLASH size and the bootloader size set in the\r
- # device's fuses.\r
- FLASH_SIZE_KB = 128\r
- BOOT_SECTION_SIZE_KB = 8\r
- \r
- # Bootloader address calculation formulas\r
- # Do not modify these macros, but rather modify the dependent values above.\r
- CALC_ADDRESS_IN_HEX = $(shell printf "0x%X" $$(( $(1) )) )\r
- BOOT_START_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 )\r
- BOOT_SEC_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) )\r
- \r
- # Bootloader linker section flags for relocating the API table sections to\r
- # known FLASH addresses - these should not normally be user-edited.\r
- BOOT_SECTION_LD_FLAG = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))\r
- BOOT_API_LD_FLAGS = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)\r
- BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable, BootloaderAPI_JumpTable, 32)\r
- BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8)\r
- \r
- # Check if the bootloader needs an AUX section, located before the real bootloader section to store some of the\r
- # bootloader code. This is required for 32KB and smaller devices, where the actual bootloader is 6KB but the maximum\r
- # bootloader section size is 4KB. The actual usable application space will be reduced by 6KB for these devices.\r
- ifeq ($(BOOT_SECTION_SIZE_KB),8)\r
- CC_FLAGS += -DAUX_BOOT_SECTION_SIZE=0\r
- else\r
- AUX_BOOT_SECTION_SIZE_KB = (6 - $(BOOT_SECTION_SIZE_KB))\r
- \r
- CC_FLAGS += -DAUX_BOOT_SECTION_SIZE='($(AUX_BOOT_SECTION_SIZE_KB) * 1024)'\r
- LD_FLAGS += -Wl,--section-start=.boot_aux=$(call BOOT_SEC_OFFSET, (($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024 - 16))\r
- LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .boot_aux_trampoline, Boot_AUX_Trampoline, ($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024)\r
- endif\r
- \r
- # Default target\r
- all:\r
- \r
- # Include LUFA-specific DMBS extension modules\r
- DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA\r
- include $(DMBS_LUFA_PATH)/lufa-sources.mk\r
- include $(DMBS_LUFA_PATH)/lufa-gcc.mk\r
- \r
- # Include common DMBS build system modules\r
- DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS\r
- include $(DMBS_PATH)/core.mk\r
- include $(DMBS_PATH)/cppcheck.mk\r
- include $(DMBS_PATH)/doxygen.mk\r
- include $(DMBS_PATH)/dfu.mk\r
- include $(DMBS_PATH)/gcc.mk\r
- include $(DMBS_PATH)/hid.mk\r
- include $(DMBS_PATH)/avrdude.mk\r
- include $(DMBS_PATH)/atprogram.mk\r
++#
++# 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 = at90usb1287
++ARCH = AVR8
++BOARD = USBKEY
++F_CPU = 8000000
++F_USB = $(F_CPU)
++OPTIMIZATION = s
++TARGET = BootloaderMassStorage
++SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S Lib/SCSI.c Lib/VirtualFAT.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
++LUFA_PATH = ../../LUFA
++CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)
++LD_FLAGS = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)
++
++# 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
++
++# 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))) )
++
++# Bootloader linker section flags for relocating the API table sections to
++# known FLASH addresses - these should not normally be user-edited.
++BOOT_SECTION_LD_FLAG = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))
++BOOT_API_LD_FLAGS = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)
++BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable, BootloaderAPI_JumpTable, 32)
++BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8)
++
++# Check if the bootloader needs an AUX section, located before the real bootloader section to store some of the
++# bootloader code. This is required for 32KB and smaller devices, where the actual bootloader is 6KB but the maximum
++# bootloader section size is 4KB. The actual usable application space will be reduced by 6KB for these devices.
++ifeq ($(BOOT_SECTION_SIZE_KB),8)
++ CC_FLAGS += -DAUX_BOOT_SECTION_SIZE=0
++else
++ AUX_BOOT_SECTION_SIZE_KB = (6 - $(BOOT_SECTION_SIZE_KB))
++
++ CC_FLAGS += -DAUX_BOOT_SECTION_SIZE='($(AUX_BOOT_SECTION_SIZE_KB) * 1024)'
++ LD_FLAGS += -Wl,--section-start=.boot_aux=$(call BOOT_SEC_OFFSET, (($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024 - 16))
++ LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .boot_aux_trampoline, Boot_AUX_Trampoline, ($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024)
++endif
++
++# 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
--- /dev/null
- /*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2017.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.lufa-lib.org\r
- */\r
- \r
- /*\r
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
- \r
- Permission to use, copy, modify, distribute, and sell this\r
- software and its documentation for any purpose is hereby granted\r
- without fee, provided that the above copyright notice appear in\r
- all copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
- \r
- The author disclaims all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
- */\r
- \r
- ; Trampolines to actual API implementations if the target address is outside the\r
- ; range of a rjmp instruction (can happen with large bootloader sections)\r
- .section .apitable_trampolines, "ax"\r
- .global BootloaderAPI_Trampolines\r
- BootloaderAPI_Trampolines:\r
- \r
- BootloaderAPI_ErasePage_Trampoline:\r
- jmp BootloaderAPI_ErasePage\r
- BootloaderAPI_WritePage_Trampoline:\r
- jmp BootloaderAPI_WritePage\r
- BootloaderAPI_FillWord_Trampoline:\r
- jmp BootloaderAPI_FillWord\r
- BootloaderAPI_ReadSignature_Trampoline:\r
- jmp BootloaderAPI_ReadSignature\r
- BootloaderAPI_ReadFuse_Trampoline:\r
- jmp BootloaderAPI_ReadFuse\r
- BootloaderAPI_ReadLock_Trampoline:\r
- jmp BootloaderAPI_ReadLock\r
- BootloaderAPI_WriteLock_Trampoline:\r
- jmp BootloaderAPI_WriteLock\r
- BootloaderAPI_UNUSED1:\r
- ret\r
- BootloaderAPI_UNUSED2:\r
- ret\r
- BootloaderAPI_UNUSED3:\r
- ret\r
- BootloaderAPI_UNUSED4:\r
- ret\r
- BootloaderAPI_UNUSED5:\r
- ret\r
- \r
- \r
- \r
- ; API function jump table\r
- .section .apitable_jumptable, "ax"\r
- .global BootloaderAPI_JumpTable\r
- BootloaderAPI_JumpTable:\r
- \r
- rjmp BootloaderAPI_ErasePage_Trampoline\r
- rjmp BootloaderAPI_WritePage_Trampoline\r
- rjmp BootloaderAPI_FillWord_Trampoline\r
- rjmp BootloaderAPI_ReadSignature_Trampoline\r
- rjmp BootloaderAPI_ReadFuse_Trampoline\r
- rjmp BootloaderAPI_ReadLock_Trampoline\r
- rjmp BootloaderAPI_WriteLock_Trampoline\r
- rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1\r
- rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2\r
- rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3\r
- rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4\r
- rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5\r
- \r
- \r
- \r
- ; Bootloader table signatures and information\r
- .section .apitable_signatures, "ax"\r
- .global BootloaderAPI_Signatures\r
- BootloaderAPI_Signatures:\r
- \r
- .long BOOT_START_ADDR ; Start address of the bootloader\r
- .word 0xDF20 ; Signature for the Printer class bootloader\r
- .word 0xDCFB ; Signature for a LUFA class bootloader\r
++/*
++ LUFA Library
++ Copyright (C) Dean Camera, 2017.
++
++ dean [at] fourwalledcubicle [dot] com
++ www.lufa-lib.org
++*/
++
++/*
++ Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
++
++ Permission to use, copy, modify, distribute, and sell this
++ software and its documentation for any purpose is hereby granted
++ without fee, provided that the above copyright notice appear in
++ all copies and that both that the copyright notice and this
++ permission notice and warranty disclaimer appear in supporting
++ documentation, and that the name of the author not be used in
++ advertising or publicity pertaining to distribution of the
++ software without specific, written prior permission.
++
++ The author disclaims all warranties with regard to this
++ software, including all implied warranties of merchantability
++ and fitness. In no event shall the author be liable for any
++ special, indirect or consequential damages or any damages
++ whatsoever resulting from loss of use, data or profits, whether
++ in an action of contract, negligence or other tortious action,
++ arising out of or in connection with the use or performance of
++ this software.
++*/
++
++; Trampolines to actual API implementations if the target address is outside the
++; range of a rjmp instruction (can happen with large bootloader sections)
++.section .apitable_trampolines, "ax"
++.global BootloaderAPI_Trampolines
++BootloaderAPI_Trampolines:
++
++ BootloaderAPI_ErasePage_Trampoline:
++ jmp BootloaderAPI_ErasePage
++ BootloaderAPI_WritePage_Trampoline:
++ jmp BootloaderAPI_WritePage
++ BootloaderAPI_FillWord_Trampoline:
++ jmp BootloaderAPI_FillWord
++ BootloaderAPI_ReadSignature_Trampoline:
++ jmp BootloaderAPI_ReadSignature
++ BootloaderAPI_ReadFuse_Trampoline:
++ jmp BootloaderAPI_ReadFuse
++ BootloaderAPI_ReadLock_Trampoline:
++ jmp BootloaderAPI_ReadLock
++ BootloaderAPI_WriteLock_Trampoline:
++ jmp BootloaderAPI_WriteLock
++ BootloaderAPI_UNUSED1:
++ ret
++ BootloaderAPI_UNUSED2:
++ ret
++ BootloaderAPI_UNUSED3:
++ ret
++ BootloaderAPI_UNUSED4:
++ ret
++ BootloaderAPI_UNUSED5:
++ ret
++
++
++
++; API function jump table
++.section .apitable_jumptable, "ax"
++.global BootloaderAPI_JumpTable
++BootloaderAPI_JumpTable:
++
++ rjmp BootloaderAPI_ErasePage_Trampoline
++ rjmp BootloaderAPI_WritePage_Trampoline
++ rjmp BootloaderAPI_FillWord_Trampoline
++ rjmp BootloaderAPI_ReadSignature_Trampoline
++ rjmp BootloaderAPI_ReadFuse_Trampoline
++ rjmp BootloaderAPI_ReadLock_Trampoline
++ rjmp BootloaderAPI_WriteLock_Trampoline
++ rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1
++ rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2
++ rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3
++ rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4
++ rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5
++
++
++
++; Bootloader table signatures and information
++.section .apitable_signatures, "ax"
++.global BootloaderAPI_Signatures
++BootloaderAPI_Signatures:
++
++ .long BOOT_START_ADDR ; Start address of the bootloader
++ .word 0xDF20 ; Signature for the Printer class bootloader
++ .word 0xDCFB ; Signature for a LUFA class bootloader
--- /dev/null
- #\r
- # LUFA Library\r
- # Copyright (C) Dean Camera, 2017.\r
- #\r
- # dean [at] fourwalledcubicle [dot] com\r
- # www.lufa-lib.org\r
- #\r
- # --------------------------------------\r
- # LUFA Project Makefile.\r
- # --------------------------------------\r
- \r
- # Run "make help" for target help.\r
- \r
- MCU = at90usb1287\r
- ARCH = AVR8\r
- BOARD = USBKEY\r
- F_CPU = 8000000\r
- F_USB = $(F_CPU)\r
- OPTIMIZATION = s\r
- TARGET = BootloaderPrinter\r
- SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)\r
- LUFA_PATH = ../../LUFA\r
- CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)\r
- LD_FLAGS = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)\r
- \r
- # Flash size and bootloader section sizes of the target, in KB. These must\r
- # match the target's total FLASH size and the bootloader size set in the\r
- # device's fuses.\r
- FLASH_SIZE_KB = 128\r
- BOOT_SECTION_SIZE_KB = 8\r
- \r
- # Bootloader address calculation formulas\r
- # Do not modify these macros, but rather modify the dependent values above.\r
- CALC_ADDRESS_IN_HEX = $(shell printf "0x%X" $$(( $(1) )) )\r
- BOOT_START_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 )\r
- BOOT_SEC_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) )\r
- \r
- # Bootloader linker section flags for relocating the API table sections to\r
- # known FLASH addresses - these should not normally be user-edited.\r
- BOOT_SECTION_LD_FLAG = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))\r
- BOOT_API_LD_FLAGS = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)\r
- BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable, BootloaderAPI_JumpTable, 32)\r
- BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8)\r
- \r
- # Default target\r
- all:\r
- \r
- # Include LUFA-specific DMBS extension modules\r
- DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA\r
- include $(DMBS_LUFA_PATH)/lufa-sources.mk\r
- include $(DMBS_LUFA_PATH)/lufa-gcc.mk\r
- \r
- # Include common DMBS build system modules\r
- DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS\r
- include $(DMBS_PATH)/core.mk\r
- include $(DMBS_PATH)/cppcheck.mk\r
- include $(DMBS_PATH)/doxygen.mk\r
- include $(DMBS_PATH)/dfu.mk\r
- include $(DMBS_PATH)/gcc.mk\r
- include $(DMBS_PATH)/hid.mk\r
- include $(DMBS_PATH)/avrdude.mk\r
- include $(DMBS_PATH)/atprogram.mk\r
++#
++# 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 = at90usb1287
++ARCH = AVR8
++BOARD = USBKEY
++F_CPU = 8000000
++F_USB = $(F_CPU)
++OPTIMIZATION = s
++TARGET = BootloaderPrinter
++SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
++LUFA_PATH = ../../LUFA
++CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)
++LD_FLAGS = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)
++
++# 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
++
++# 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))) )
++
++# Bootloader linker section flags for relocating the API table sections to
++# known FLASH addresses - these should not normally be user-edited.
++BOOT_SECTION_LD_FLAG = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))
++BOOT_API_LD_FLAGS = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)
++BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable, BootloaderAPI_JumpTable, 32)
++BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8)
++
++# 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
--- /dev/null
- <!--\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2017.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.lufa-lib.org\r
- -->\r
- \r
- <!-- Docbook XML to Microsoft Help Viewer 1.0 transform file -->\r
- \r
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">\r
- \r
- <xsl:import href="../Docbook/mshelp/docbook.xsl"/>\r
- \r
- <xsl:output method="xml" indent="no"/>\r
- \r
- <xsl:template match="emphasis[@role = 'keyword' or @role = 'keywordtype' or @role = 'keywordflow']">\r
- <span class="hl-keyword" style="color: #0079C1">\r
- <xsl:apply-templates/>\r
- </span>\r
- </xsl:template>\r
- \r
- <xsl:template match="emphasis[@role = 'stringliteral' or @role = 'charliteral']">\r
- <span class="hl-string" style="color: #800000">\r
- <xsl:apply-templates/>\r
- </span>\r
- </xsl:template>\r
- \r
- <xsl:template match="emphasis[@role = 'comment']">\r
- <em class="hl-comment" style="color: #008000">\r
- <xsl:apply-templates/>\r
- </em>\r
- </xsl:template>\r
- \r
- <xsl:template match="emphasis[@role = 'preprocessor']">\r
- <span class="hl-preprocessor" style="color: #A000A0">\r
- <xsl:apply-templates/>\r
- </span>\r
- </xsl:template>\r
- \r
- <xsl:template match="emphasis[@role = 'normal' and ancestor::programlisting]">\r
- <xsl:apply-templates />\r
- </xsl:template>\r
- \r
- </xsl:stylesheet>\r
++<!--
++ LUFA Library
++ Copyright (C) Dean Camera, 2017.
++
++ dean [at] fourwalledcubicle [dot] com
++ www.lufa-lib.org
++-->
++
++<!-- Docbook XML to Microsoft Help Viewer 1.0 transform file -->
++
++<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
++
++ <xsl:import href="../Docbook/mshelp/docbook.xsl"/>
++
++ <xsl:output method="xml" indent="no"/>
++
++ <xsl:template match="emphasis[@role = 'keyword' or @role = 'keywordtype' or @role = 'keywordflow']">
++ <span class="hl-keyword" style="color: #0079C1">
++ <xsl:apply-templates/>
++ </span>
++ </xsl:template>
++
++ <xsl:template match="emphasis[@role = 'stringliteral' or @role = 'charliteral']">
++ <span class="hl-string" style="color: #800000">
++ <xsl:apply-templates/>
++ </span>
++ </xsl:template>
++
++ <xsl:template match="emphasis[@role = 'comment']">
++ <em class="hl-comment" style="color: #008000">
++ <xsl:apply-templates/>
++ </em>
++ </xsl:template>
++
++ <xsl:template match="emphasis[@role = 'preprocessor']">
++ <span class="hl-preprocessor" style="color: #A000A0">
++ <xsl:apply-templates/>
++ </span>
++ </xsl:template>
++
++ <xsl:template match="emphasis[@role = 'normal' and ancestor::programlisting]">
++ <xsl:apply-templates />
++ </xsl:template>
++
++</xsl:stylesheet>
--- /dev/null
- <?xml version="1.0" encoding="utf-8"?>\r
- \r
- <Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">\r
- <Identifier Id="FourWalledCubicle.LUFA.0e160d5c-e331-48d9-850b-e0387912171b">\r
- <Name>LUFA Library</Name>\r
- <Author>Dean Camera</Author>\r
- <Version>0</Version>\r
- <MoreInfoUrl>http://www.lufa-lib.org</MoreInfoUrl>\r
- <Description xml:space="preserve">LUFA, the Lightweight USB Framework for AVRs.</Description>\r
- \r
- <License>License.txt</License>\r
- <Icon>LUFA_thumb.png</Icon>\r
- <PreviewImage>LUFA.png</PreviewImage>\r
- \r
- <SupportedProducts>\r
- <IsolatedShell Version="7.0">AtmelStudio</IsolatedShell>\r
- </SupportedProducts>\r
- \r
- <SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/>\r
- <Locale>1033</Locale>\r
- \r
- <AllUsers>false</AllUsers>\r
- </Identifier>\r
- \r
- <References/>\r
- \r
- <Content>\r
- <VsPackage>LUFA.pkgdef</VsPackage>\r
- <CustomExtension Type="MSHelp">helpcontentsetup.msha</CustomExtension>\r
- <CustomExtension Type="asf-manifest">asf-manifest.xml</CustomExtension>\r
- </Content>\r
- </Vsix>\r
++<?xml version="1.0" encoding="utf-8"?>
++
++<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
++ <Identifier Id="FourWalledCubicle.LUFA.0e160d5c-e331-48d9-850b-e0387912171b">
++ <Name>LUFA Library</Name>
++ <Author>Dean Camera</Author>
++ <Version>0</Version>
++ <MoreInfoUrl>http://www.lufa-lib.org</MoreInfoUrl>
++ <Description xml:space="preserve">LUFA, the Lightweight USB Framework for AVRs.</Description>
++
++ <License>License.txt</License>
++ <Icon>LUFA_thumb.png</Icon>
++ <PreviewImage>LUFA.png</PreviewImage>
++
++ <SupportedProducts>
++ <IsolatedShell Version="7.0">AtmelStudio</IsolatedShell>
++ </SupportedProducts>
++
++ <SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/>
++ <Locale>1033</Locale>
++
++ <AllUsers>false</AllUsers>
++ </Identifier>
++
++ <References/>
++
++ <Content>
++ <VsPackage>LUFA.pkgdef</VsPackage>
++ <CustomExtension Type="MSHelp">helpcontentsetup.msha</CustomExtension>
++ <CustomExtension Type="asf-manifest">asf-manifest.xml</CustomExtension>
++ </Content>
++</Vsix>