aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2018-04-02 14:51:18 +1000
committerDean Camera <dean@fourwalledcubicle.com>2018-04-02 14:51:22 +1000
commit1e9148db894bca208d1076c291e85e134a2f3308 (patch)
tree532bab8850238b5a22e250e38673f4f6c32954bd
parent0a5848efdc7c979ee23b19df2fd399f93631fa3f (diff)
downloadlufa-1e9148db894bca208d1076c291e85e134a2f3308.tar.gz
lufa-1e9148db894bca208d1076c291e85e134a2f3308.tar.bz2
lufa-1e9148db894bca208d1076c291e85e134a2f3308.zip
Fix bootloaders incorrectly checking the BOOTRST fuse on start (thanks to Braden Kell).
-rw-r--r--Bootloaders/CDC/BootloaderCDC.c2
-rw-r--r--Bootloaders/DFU/BootloaderDFU.c2
-rw-r--r--Bootloaders/MassStorage/BootloaderMassStorage.c2
-rw-r--r--Bootloaders/Printer/BootloaderPrinter.c2
-rw-r--r--LUFA/DoxygenPages/ChangeLog.txt1
5 files changed, 5 insertions, 4 deletions
diff --git a/Bootloaders/CDC/BootloaderCDC.c b/Bootloaders/CDC/BootloaderCDC.c
index bcb5c85cf..00755a54c 100644
--- a/Bootloaders/CDC/BootloaderCDC.c
+++ b/Bootloaders/CDC/BootloaderCDC.c
@@ -97,7 +97,7 @@ void Application_Jump_Check(void)
JTAG_ENABLE();
#else
/* Check if the device's BOOTRST fuse is set */
- if (BootloaderAPI_ReadFuse(GET_HIGH_FUSE_BITS) & FUSE_BOOTRST)
+ if (!(BootloaderAPI_ReadFuse(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))
diff --git a/Bootloaders/DFU/BootloaderDFU.c b/Bootloaders/DFU/BootloaderDFU.c
index cafbd572b..3167c8972 100644
--- a/Bootloaders/DFU/BootloaderDFU.c
+++ b/Bootloaders/DFU/BootloaderDFU.c
@@ -133,7 +133,7 @@ void Application_Jump_Check(void)
JTAG_ENABLE();
#else
/* Check if the device's BOOTRST fuse is set */
- if (BootloaderAPI_ReadFuse(GET_HIGH_FUSE_BITS) & FUSE_BOOTRST)
+ if (!(BootloaderAPI_ReadFuse(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))
diff --git a/Bootloaders/MassStorage/BootloaderMassStorage.c b/Bootloaders/MassStorage/BootloaderMassStorage.c
index 81a8dc424..ca3fd2897 100644
--- a/Bootloaders/MassStorage/BootloaderMassStorage.c
+++ b/Bootloaders/MassStorage/BootloaderMassStorage.c
@@ -114,7 +114,7 @@ void Application_Jump_Check(void)
JTAG_ENABLE();
#else
/* Check if the device's BOOTRST fuse is set */
- if (BootloaderAPI_ReadFuse(GET_HIGH_FUSE_BITS) & FUSE_BOOTRST)
+ if (!(BootloaderAPI_ReadFuse(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))
diff --git a/Bootloaders/Printer/BootloaderPrinter.c b/Bootloaders/Printer/BootloaderPrinter.c
index da4162172..629cc07b4 100644
--- a/Bootloaders/Printer/BootloaderPrinter.c
+++ b/Bootloaders/Printer/BootloaderPrinter.c
@@ -146,7 +146,7 @@ void Application_Jump_Check(void)
JTAG_ENABLE();
#else
/* Check if the device's BOOTRST fuse is set */
- if (BootloaderAPI_ReadFuse(GET_HIGH_FUSE_BITS) & FUSE_BOOTRST)
+ if (!(BootloaderAPI_ReadFuse(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))
diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt
index 54744066e..719ae2209 100644
--- a/LUFA/DoxygenPages/ChangeLog.txt
+++ b/LUFA/DoxygenPages/ChangeLog.txt
@@ -21,6 +21,7 @@
* - Library Applications:
* - Fixed bootloaders not disabling global interrupts during erase and write operations (thanks to Zoltan)
* - Fixed bootloaders accepting flash writes to the bootloader region (thanks to NicoHood)
+ * - Fixed bootloaders incorrectly checking the BOOTRST fuse on start (thanks to Braden Kell)
*
* \section Sec_ChangeLog170418 Version 170418
* <b>New:</b>