]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
merge
authorThat-Canadian <poole.chris.11@gmail.com>
Mon, 10 Jul 2017 04:21:38 +0000 (00:21 -0400)
committerThat-Canadian <poole.chris.11@gmail.com>
Mon, 10 Jul 2017 04:21:38 +0000 (00:21 -0400)
lib/lufa/Bootloaders/MassStorage/BootloaderAPITable.S
lib/lufa/Bootloaders/MassStorage/makefile
lib/lufa/Bootloaders/Printer/BootloaderAPITable.S
lib/lufa/Bootloaders/Printer/makefile

index 30165700d71888130346a83c39621ee4c7e73de2..44eb15ea9d6190dbd7708d7f858c3434435fcae3 100644 (file)
-/*\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
index 7f0ec82a7f4aa84de16bedbf82161feeba06a006..f3948e754f5060e72f7e9fc210da472be5860552 100644 (file)
@@ -1,75 +1,75 @@
-#\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
index 76f37bf499c5d37af2180503777b121f28740394..d8358c31ce5c44e24a1ea05fd7386cd0c75dd909 100644 (file)
@@ -1,91 +1,91 @@
-/*\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
index 2c8582ca22ab2c846b7cb5ea04b39ef7713ba3f6..1de35bba02ebc461298755cd91d08a239d4eddc0 100644 (file)
@@ -1,62 +1,62 @@
-#\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