From 06f53eed83b4ad639698aeb9bcc1a3702e2ac7c4 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 1 Oct 2017 16:25:36 +1100 Subject: Fixed bootloaders not disabling global interrupts during erase and write operations (thanks to Zoltan). --- Bootloaders/DFU/BootloaderAPI.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'Bootloaders/DFU/BootloaderAPI.c') diff --git a/Bootloaders/DFU/BootloaderAPI.c b/Bootloaders/DFU/BootloaderAPI.c index 491c506d0..5198ea7f0 100644 --- a/Bootloaders/DFU/BootloaderAPI.c +++ b/Bootloaders/DFU/BootloaderAPI.c @@ -37,16 +37,22 @@ void BootloaderAPI_ErasePage(const uint32_t Address) { - boot_page_erase_safe(Address); - boot_spm_busy_wait(); - boot_rww_enable(); + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + boot_page_erase_safe(Address); + boot_spm_busy_wait(); + boot_rww_enable(); + } } void BootloaderAPI_WritePage(const uint32_t Address) { - boot_page_write_safe(Address); - boot_spm_busy_wait(); - boot_rww_enable(); + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + boot_page_write_safe(Address); + boot_spm_busy_wait(); + boot_rww_enable(); + } } void BootloaderAPI_FillWord(const uint32_t Address, const uint16_t Word) @@ -71,6 +77,8 @@ uint8_t BootloaderAPI_ReadLock(void) void BootloaderAPI_WriteLock(const uint8_t LockBits) { - boot_lock_bits_set_safe(LockBits); + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + boot_lock_bits_set_safe(LockBits); + } } - -- cgit v1.2.3 From ad9225bdd34230e13333be5d4c29e4f96abc9b2b Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Thu, 4 Jan 2018 20:12:48 +1100 Subject: Update copyrights for 2018. --- Bootloaders/DFU/BootloaderAPI.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Bootloaders/DFU/BootloaderAPI.c') diff --git a/Bootloaders/DFU/BootloaderAPI.c b/Bootloaders/DFU/BootloaderAPI.c index 5198ea7f0..5e8083ed3 100644 --- a/Bootloaders/DFU/BootloaderAPI.c +++ b/Bootloaders/DFU/BootloaderAPI.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2017. + Copyright (C) Dean Camera, 2018. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2018 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 -- cgit v1.2.3 From ba6d9c1a971db3c42bf0b054ebb64f72b3e3ddba Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 22 Jan 2018 16:14:44 +1100 Subject: Fixed bootloaders accepting flash writes to the bootloader region (thanks to NicoHood). --- Bootloaders/DFU/BootloaderAPI.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Bootloaders/DFU/BootloaderAPI.c') diff --git a/Bootloaders/DFU/BootloaderAPI.c b/Bootloaders/DFU/BootloaderAPI.c index 5e8083ed3..c1e76d3bd 100644 --- a/Bootloaders/DFU/BootloaderAPI.c +++ b/Bootloaders/DFU/BootloaderAPI.c @@ -35,8 +35,20 @@ #include "BootloaderAPI.h" +static bool IsPageAddressValid(const uint32_t Address) +{ + /* Determine if the given page address is correctly aligned to the + start of a flash page. */ + bool PageAddressIsAligned = !(Address & (SPM_PAGESIZE - 1)); + + return (Address < BOOT_START_ADDR) && PageAddressIsAligned; +} + void BootloaderAPI_ErasePage(const uint32_t Address) { + if (! IsPageAddressValid(Address)) + return; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { boot_page_erase_safe(Address); @@ -47,6 +59,9 @@ void BootloaderAPI_ErasePage(const uint32_t Address) void BootloaderAPI_WritePage(const uint32_t Address) { + if (! IsPageAddressValid(Address)) + return; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { boot_page_write_safe(Address); -- cgit v1.2.3 From 101ed6b74e0d6549e53a7c8216147af37ffc70df Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 8 Jan 2019 19:59:41 +1100 Subject: Documentation: Update copyrights to 2019. --- Bootloaders/DFU/BootloaderAPI.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Bootloaders/DFU/BootloaderAPI.c') diff --git a/Bootloaders/DFU/BootloaderAPI.c b/Bootloaders/DFU/BootloaderAPI.c index c1e76d3bd..21d13bbe3 100644 --- a/Bootloaders/DFU/BootloaderAPI.c +++ b/Bootloaders/DFU/BootloaderAPI.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2018. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2018 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 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 -- cgit v1.2.3