From 5ba628d10b54d58d445896290ba9799bd76a73b3 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Wed, 27 Mar 2019 22:01:30 +1100 Subject: MassStorageBootloader: Move more code into AUX_BOOT_SECTION to save space in small flash devices. --- Bootloaders/MassStorage/BootloaderAPI.c | 9 +++++++-- Bootloaders/MassStorage/BootloaderAPI.h | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Bootloaders/MassStorage/BootloaderAPI.c b/Bootloaders/MassStorage/BootloaderAPI.c index 21d13bbe3..8fbe44f01 100644 --- a/Bootloaders/MassStorage/BootloaderAPI.c +++ b/Bootloaders/MassStorage/BootloaderAPI.c @@ -35,10 +35,15 @@ #include "BootloaderAPI.h" -static bool IsPageAddressValid(const uint32_t Address) +bool IsPageAddressValid(const uint32_t Address) { /* Determine if the given page address is correctly aligned to the - start of a flash page. */ + start of a flash page. + + Note that this is not static, as we need to force it into the + AUX_BOOT_SECTION on small flash devices to save space. + */ + bool PageAddressIsAligned = !(Address & (SPM_PAGESIZE - 1)); return (Address < BOOT_START_ADDR) && PageAddressIsAligned; diff --git a/Bootloaders/MassStorage/BootloaderAPI.h b/Bootloaders/MassStorage/BootloaderAPI.h index 13d8a8ff4..87e16ffd7 100644 --- a/Bootloaders/MassStorage/BootloaderAPI.h +++ b/Bootloaders/MassStorage/BootloaderAPI.h @@ -52,6 +52,8 @@ #endif /* Function Prototypes: */ + bool IsPageAddressValid(const uint32_t Address) AUX_BOOT_SECTION ATTR_NO_INLINE; + void BootloaderAPI_ErasePage(const uint32_t Address); void BootloaderAPI_WritePage(const uint32_t Address); void BootloaderAPI_FillWord(const uint32_t Address, const uint16_t Word); -- cgit v1.2.3