diff options
-rw-r--r-- | Bootloaders/MassStorage/BootloaderAPI.c | 9 | ||||
-rw-r--r-- | 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); |