From b5f2a4e576a677252eb5741fdbdeb641089d9bb0 Mon Sep 17 00:00:00 2001 From: Dean Date: Sun, 5 Feb 2012 16:00:48 +0000 Subject: Add new tag for the LUFA-120219-BETA release. git-svn-id: http://lufa-lib.googlecode.com/svn/tags/LUFA-120219-BETA@2033 d5102386-fcda-11dd-9fdb-3debd5008f28 --- Bootloaders/DFU/BootloaderAPI.c | 4 ++-- Bootloaders/DFU/BootloaderAPI.h | 4 ++-- Bootloaders/DFU/BootloaderAPITable.S | 19 ++++++++++++------- Bootloaders/DFU/BootloaderDFU.aps | 2 +- Bootloaders/DFU/BootloaderDFU.c | 13 +++++++------ Bootloaders/DFU/BootloaderDFU.h | 10 +++++----- Bootloaders/DFU/BootloaderDFU.txt | 6 ++++++ Bootloaders/DFU/Descriptors.c | 6 +++--- Bootloaders/DFU/Descriptors.h | 4 ++-- Bootloaders/DFU/makefile | 5 +++++ 10 files changed, 45 insertions(+), 28 deletions(-) (limited to 'Bootloaders/DFU') diff --git a/Bootloaders/DFU/BootloaderAPI.c b/Bootloaders/DFU/BootloaderAPI.c index 326adb4d..f161bad9 100644 --- a/Bootloaders/DFU/BootloaderAPI.c +++ b/Bootloaders/DFU/BootloaderAPI.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 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 diff --git a/Bootloaders/DFU/BootloaderAPI.h b/Bootloaders/DFU/BootloaderAPI.h index 9d652c84..bd721842 100644 --- a/Bootloaders/DFU/BootloaderAPI.h +++ b/Bootloaders/DFU/BootloaderAPI.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 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 diff --git a/Bootloaders/DFU/BootloaderAPITable.S b/Bootloaders/DFU/BootloaderAPITable.S index 7f015f20..b1d1b057 100644 --- a/Bootloaders/DFU/BootloaderAPITable.S +++ b/Bootloaders/DFU/BootloaderAPITable.S @@ -32,12 +32,17 @@ .section .apitable, "ax" .org 0 +; API function jump table .global BootloaderAPI_JumpTable BootloaderAPI_JumpTable: - jmp BootloaderAPI_ErasePage - jmp BootloaderAPI_WritePage - jmp BootloaderAPI_FillWord - jmp BootloaderAPI_ReadSignature - jmp BootloaderAPI_ReadFuse - jmp BootloaderAPI_ReadLock - jmp BootloaderAPI_WriteLock + rjmp BootloaderAPI_ErasePage + rjmp BootloaderAPI_WritePage + rjmp BootloaderAPI_FillWord + rjmp BootloaderAPI_ReadSignature + rjmp BootloaderAPI_ReadFuse + rjmp BootloaderAPI_ReadLock + rjmp BootloaderAPI_WriteLock + +; Bootloader table signature +.org 30 + .word 0xDCFB diff --git a/Bootloaders/DFU/BootloaderDFU.aps b/Bootloaders/DFU/BootloaderDFU.aps index 3e8bdd7c..b5842905 100644 --- a/Bootloaders/DFU/BootloaderDFU.aps +++ b/Bootloaders/DFU/BootloaderDFU.aps @@ -1 +1 @@ -BootloaderDFU13-Jul-2010 14:42:2813-Jul-2010 14:46:54241013-Jul-2010 14:42:2844, 18, 0, 685AVR GCCBootloaderDFU.elfC:\Users\Dean\Documents\Electronics\Projects\WORK\LUFAWORK\Bootloaders\DFU\falseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31000BootloaderDFU.cDescriptors.cBootloaderDFU.hDescriptors.hmakefiledefaultYESmakefileatmega128111BootloaderDFU.elfdefault\1-Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefault1C:\WinAVR-20100110\bin\avr-gcc.exeC:\WinAVR-20100110\utils\bin\make.exe +BootloaderDFU13-Jul-2010 14:42:2813-Jul-2010 14:46:54241013-Jul-2010 14:42:2844, 18, 0, 685AVR GCCBootloaderDFU.elfC:\Users\Dean\Documents\Electronics\Projects\WORK\LUFAWORK\Bootloaders\DFU\falseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31000BootloaderAPITable.SBootloaderDFU.cDescriptors.cBootloaderDFU.hDescriptors.hmakefiledefaultYESmakefileatmega128111BootloaderDFU.elfdefault\1-Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefault1C:\WinAVR-20100110\bin\avr-gcc.exeC:\WinAVR-20100110\utils\bin\make.exe diff --git a/Bootloaders/DFU/BootloaderDFU.c b/Bootloaders/DFU/BootloaderDFU.c index 09480192..3ce2a628 100644 --- a/Bootloaders/DFU/BootloaderDFU.c +++ b/Bootloaders/DFU/BootloaderDFU.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 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 @@ -137,7 +137,7 @@ int main(void) } /** Configures all hardware required for the bootloader. */ -void SetupHardware(void) +static void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ MCUSR &= ~(1 << WDRF); @@ -150,7 +150,7 @@ void SetupHardware(void) MCUCR = (1 << IVCE); MCUCR = (1 << IVSEL); - /* Initialize the USB subsystem */ + /* Initialize the USB and other board hardware drivers */ USB_Init(); LEDs_Init(); @@ -160,10 +160,11 @@ void SetupHardware(void) } /** Resets all configured hardware required for the bootloader back to their original states. */ -void ResetHardware(void) +static void ResetHardware(void) { - /* Shut down the USB subsystem */ + /* Shut down the USB and other board hardware drivers */ USB_Disable(); + LEDs_Disable(); /* Relocate the interrupt vector table back to the application section */ MCUCR = (1 << IVCE); diff --git a/Bootloaders/DFU/BootloaderDFU.h b/Bootloaders/DFU/BootloaderDFU.h index 0c34c2c8..a8077534 100644 --- a/Bootloaders/DFU/BootloaderDFU.h +++ b/Bootloaders/DFU/BootloaderDFU.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 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 @@ -148,7 +148,7 @@ /** Type define for a structure containing a complete DFU command issued by the host. */ typedef struct { - uint8_t Command; /**< Single byte command to perform, one of the COMMAND_* macro values */ + uint8_t Command; /**< Single byte command to perform, one of the \c COMMAND_* macro values */ uint8_t Data[5]; /**< Command parameters */ uint16_t DataSize; /**< Size of the command parameters */ } DFU_Command_t; @@ -192,8 +192,8 @@ }; /* Function Prototypes: */ - void SetupHardware(void); - void ResetHardware(void); + static void SetupHardware(void); + static void ResetHardware(void); void EVENT_USB_Device_ControlRequest(void); diff --git a/Bootloaders/DFU/BootloaderDFU.txt b/Bootloaders/DFU/BootloaderDFU.txt index 94657f35..f7f5ee9a 100644 --- a/Bootloaders/DFU/BootloaderDFU.txt +++ b/Bootloaders/DFU/BootloaderDFU.txt @@ -108,8 +108,14 @@ * uint8_t (*BootloaderAPI_ReadFuse)(uint16_t Address) = BOOTLOADER_API_START(4); * uint8_t (*BootloaderAPI_ReadLock)(void) = BOOTLOADER_API_START(5); * void (*BootloaderAPI_WriteLock)(uint8_t LockBits) = BOOTLOADER_API_START(6); + * + * #define BOOTLOADER_SIG_START (FLASHEND - 32) + * #define BOOTLOADER_SIGNATURE 0xDCFB * \endcode * + * From the application the API support of the bootloader can be detected by reading the FLASH memory bytes located at address + * \c BOOTLOADER_SIG_START and comparing them to the value \c BOOTLOADER_SIGNATURE. + * * \section Sec_Options Project Options * * The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value. diff --git a/Bootloaders/DFU/Descriptors.c b/Bootloaders/DFU/Descriptors.c index 44170e6c..d5515906 100644 --- a/Bootloaders/DFU/Descriptors.c +++ b/Bootloaders/DFU/Descriptors.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 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 @@ -81,7 +81,7 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor = .ConfigurationNumber = 1, .ConfigurationStrIndex = NO_DESCRIPTOR, - .ConfigAttributes = USB_CONFIG_ATTR_BUSPOWERED, + .ConfigAttributes = USB_CONFIG_ATTR_RESERVED, .MaxPowerConsumption = USB_CONFIG_POWER_MA(100) }, diff --git a/Bootloaders/DFU/Descriptors.h b/Bootloaders/DFU/Descriptors.h index 42b4bb63..ce9cc937 100644 --- a/Bootloaders/DFU/Descriptors.h +++ b/Bootloaders/DFU/Descriptors.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 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 diff --git a/Bootloaders/DFU/makefile b/Bootloaders/DFU/makefile index 87cfd072..14cf3a46 100644 --- a/Bootloaders/DFU/makefile +++ b/Bootloaders/DFU/makefile @@ -96,6 +96,11 @@ F_USB = $(F_CPU) # bytes, and so will need to be doubled to obtain the byte address needed by AVR-GCC. FLASH_SIZE_KB = 128 BOOT_SECTION_SIZE_KB = 4 + + +# Formulas used to calculate the starting address of the Bootloader section, and the User Application +# API jump table (for more information on the latter, see the bootloader documentation). These formulas +# should not need to be altered - modify the FLASH_SIZE_KB and BOOT_SECTION_KB values above instead. BOOT_START = 0x$(shell echo "obase=16; ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024" | bc) BOOT_API_TABLESTART = 0x$(shell echo "obase=16; (($(FLASH_SIZE_KB) * 1024) - 32)" | bc) -- cgit v1.2.3