@ -1,102 +1,102 @@ | |||
/* | |||
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 | |||
/* | |||
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 |
@ -1,75 +1,75 @@ | |||
# | |||
# 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 | |||
# | |||
# 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 |
@ -1,91 +1,91 @@ | |||
/* | |||
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 | |||
/* | |||
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 |
@ -1,62 +1,62 @@ | |||
# | |||
# 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 | |||
# | |||
# 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 |
@ -1,45 +1,45 @@ | |||
<!-- | |||
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> | |||
<!-- | |||
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> |
@ -1,32 +1,32 @@ | |||
<?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> | |||
<?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> |