Merge tag 'LUFA-170418' into ProMicro
authorPeter Henn <Peter.Henn@web.de>
Wed, 29 Dec 2021 12:10:53 +0000 (12:10 +0000)
committerPeter Henn <Peter.Henn@web.de>
Wed, 29 Dec 2021 13:42:06 +0000 (13:42 +0000)
- use merge strategy "theirs", means in principle rebase ProMicro branch
  to LUFA-170418
- remove the wrong FUSE_BOOTRST check in Application_Jump_Check
  which was added in the meantime

Bootloaders/DFU/BootloaderDFU.c
Bootloaders/DFU/BootloaderDFU.h
Bootloaders/DFU/makefile
LUFA/StudioIntegration/generate_caches.py [new file with mode: 0644]
LUFA/StudioIntegration/lufa_toolchain.xml
LUFA/StudioIntegration/makefile

index 8da725d..8a3538e 100644 (file)
@@ -132,17 +132,6 @@ void Application_Jump_Check(void)
                /* Re-enable JTAG debugging */
                JTAG_ENABLE();
        #else
-               /* Check if the device's BOOTRST fuse is set */
-               if (boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS) & FUSE_BOOTRST)
-               {
-                       /* If the reset source was not an external reset or the key is correct, clear it and jump to the application */
-                       if (!(MCUSR & (1 << EXTRF)) || (MagicBootKey == MAGIC_BOOT_KEY))
-                         JumpToApplication = true;
-
-                       /* Clear reset source */
-                       MCUSR &= ~(1 << EXTRF);
-               }
-               else
                {
                        /* If the reset source was the bootloader and the key is correct, clear it and jump to the application;
                         * this can happen in the HWBE fuse is set, and the HBE pin is low during the watchdog reset */
@@ -172,6 +161,9 @@ void Application_Jump_Check(void)
        }
 }
 
+
+static volatile bool stayinbootloader;
+
 /** Main program entry point. This routine configures the hardware required by the bootloader, then continuously
  *  runs the bootloader processing routine until instructed to soft-exit, or hard-reset via the watchdog to start
  *  the loaded application code.
@@ -182,14 +174,42 @@ int main(void)
        SetupHardware();
 
        /* Turn on first LED on the board to indicate that the bootloader has started */
-       LEDs_SetAllLEDs(LEDS_LED1);
+       //LEDs_SetAllLEDs(LEDS_LED1);
 
        /* Enable global interrupts so that the USB stack can function */
        GlobalInterruptEnable();
 
        /* Run the USB management task while the bootloader is supposed to be running */
+       /*if bit_is_clear(PINB,PB5)     // PB5 is Digital 9 on Arduino Pro Micro
+       {
+               loop_until_bit_is_set(PINB,PB5);
+
+               while ((RunBootloader || WaitForExit) && bit_is_set(PINB,PB5))
+                       USB_USBTask();
+
+               loop_until_bit_is_clear(PINB,PB5);
+       }*/
+
+       stayinbootloader = false;
+
+       uint16_t i = 0;
        while (RunBootloader || WaitForExit)
-         USB_USBTask();
+       {
+               USB_USBTask();
+
+               if (!stayinbootloader)
+               {
+                       _delay_ms(1);
+                       if (i++ > 5000)
+                       {
+                               break;
+                       }
+               }
+               else
+               {
+                       i = 0;
+               }
+       }
 
        /* Reset configured hardware back to their original states for the user application */
        ResetHardware();
@@ -214,7 +234,11 @@ static void SetupHardware(void)
 
        /* Initialize the USB and other board hardware drivers */
        USB_Init();
-       LEDs_Init();
+       //LEDs_Init();
+       DDRB = 1;
+       PORTB = _BV(PB5);
+       DDRD = 0b00100000;
+       PORTD = 0;
 
        /* Bootloader active LED toggle timer initialization */
        TIMSK1 = (1 << TOIE1);
@@ -226,7 +250,11 @@ static void ResetHardware(void)
 {
        /* Shut down the USB and other board hardware drivers */
        USB_Disable();
-       LEDs_Disable();
+       //LEDs_Disable();
+       DDRB = 0;
+       PORTB = 0;
+       DDRD = 0;
+       PORTD = 0;
 
        /* Disable Bootloader active LED toggle timer */
        TIMSK1 = 0;
@@ -240,7 +268,10 @@ static void ResetHardware(void)
 /** ISR to periodically toggle the LEDs on the board to indicate that the bootloader is active. */
 ISR(TIMER1_OVF_vect, ISR_BLOCK)
 {
-       LEDs_ToggleLEDs(LEDS_LED1 | LEDS_LED2);
+       //LEDs_ToggleLEDs(LEDS_LED1 | LEDS_LED2);
+       PORTB &= ~_BV(PB0);
+       _delay_ms(5);
+       PORTB |= _BV(PB0);
 }
 
 /** Event handler for the USB_ControlRequest event. This is used to catch and process control requests sent to
@@ -256,8 +287,13 @@ void EVENT_USB_Device_ControlRequest(void)
                return;
        }
 
+stayinbootloader = true;
+
        /* Activity - toggle indicator LEDs */
-       LEDs_ToggleLEDs(LEDS_LED1 | LEDS_LED2);
+       //LEDs_ToggleLEDs(LEDS_LED1 | LEDS_LED2);
+       PORTB &= ~_BV(PB0);
+       _delay_ms(5);
+       PORTB |= _BV(PB0);
 
        /* Get the size of the command and data from the wLength value */
        SentCommand.DataSize = USB_ControlRequest.wLength;
index a97ba6c..ae45475 100644 (file)
@@ -52,7 +52,7 @@
                #include "Config/AppConfig.h"
 
                #include <LUFA/Drivers/USB/USB.h>
-               #include <LUFA/Drivers/Board/LEDs.h>
+               //#include <LUFA/Drivers/Board/LEDs.h>
                #include <LUFA/Platform/Platform.h>
 
        /* Preprocessor Checks: */
index 6e15ced..e4ff7a6 100644 (file)
@@ -11,9 +11,9 @@
 
 # Run "make help" for target help.
 
-MCU          = at90usb1287
+MCU          = atmega32u4
 ARCH         = AVR8
-BOARD        = USBKEY
+BOARD        = USER
 F_CPU        = 8000000
 F_USB        = $(F_CPU)
 OPTIMIZATION = s
@@ -26,8 +26,8 @@ LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAG
 # 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
+FLASH_SIZE_KB         = 32
+BOOT_SECTION_SIZE_KB  = 4
 
 # Bootloader address calculation formulas
 # Do not modify these macros, but rather modify the dependent values above.
diff --git a/LUFA/StudioIntegration/generate_caches.py b/LUFA/StudioIntegration/generate_caches.py
new file mode 100644 (file)
index 0000000..f5b6692
--- /dev/null
@@ -0,0 +1,38 @@
+"""\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2013.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+"""\r
+\r
+import sys\r
+sys.path.append("ProjectGenerator")\r
+\r
+\r
+def show_message(message):\r
+       print "[Project Generator] %s" % message\r
+       sys.stdout.flush()\r
+\r
+\r
+def main(lufa_root_path):\r
+       try:\r
+               from asf_avrstudio5_interface import PythonFacade\r
+       except ImportError:\r
+               print "Fatal Error: The ASF project generator is missing."\r
+               return 1\r
+\r
+       p = PythonFacade(lufa_root_path)\r
+\r
+       show_message("Checking database sanity...")\r
+       p.check_extension_database_sanity(lufa_root_path)\r
+\r
+       show_message("Building cache files...")\r
+       p.generate_extension_cache_files(lufa_root_path)\r
+\r
+       show_message("Cache files created.")\r
+       return 0\r
+\r
+\r
+if __name__ == "__main__":\r
+    sys.exit(main(sys.argv[1]))\r
index 66b416e..dac65df 100644 (file)
@@ -23,7 +23,6 @@
                                <toolchain-config name="avrgcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -fno-jump-tables" toolchain="avrgcc"/>\r
                                <toolchain-config name="avrgcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avrgcc"/>\r
                                <toolchain-config name="avrgcc.linker.optimization.RelaxBranches" value="True" toolchain="avrgcc"/>\r
-                               <toolchain-config name="avrgcc.linker.miscellaneous.LinkerFlags" value="-Wl,--relax" toolchain="avrgcc"/>\r
                        </module>\r
                </select-by-device>\r
 \r
index 53fb470..7fa1125 100644 (file)
@@ -135,6 +135,7 @@ check_filenames: $(MODULE_OUTPUT_XML)
                        fi; \
                done || exit 1; \
        done;
+       @echo Verified referenced filenames of ASF.xml modules.
 
 check_database:
        python ProjectGenerator/project_generator.py -b $(LUFA_ROOT)/../ --main-ext-uuid=0e160d5c-e331-48d9-850b-e0387912171b CHECK