mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
Diff: drivers/FlashIAP.h
- Revision:
- 189:f392fc9709a3
- Parent:
- 188:bcfe06ba3d64
--- a/drivers/FlashIAP.h Thu Nov 08 11:46:34 2018 +0000 +++ b/drivers/FlashIAP.h Wed Feb 20 22:31:08 2019 +0000 @@ -22,7 +22,7 @@ #ifndef MBED_FLASHIAP_H #define MBED_FLASHIAP_H -#if defined (DEVICE_FLASH) || defined(DOXYGEN_ONLY) +#if DEVICE_FLASH || defined(DOXYGEN_ONLY) #include "flash_api.h" #include "platform/SingletonPtr.h" @@ -33,14 +33,18 @@ // Export ROM end address #if defined(TOOLCHAIN_GCC_ARM) extern uint32_t __etext; -#define FLASHIAP_ROM_END ((uint32_t) &__etext) +extern uint32_t __data_start__; +extern uint32_t __data_end__; +#define FLASHIAP_APP_ROM_END_ADDR (((uint32_t) &__etext) + ((uint32_t) &__data_end__) - ((uint32_t) &__data_start__)) #elif defined(TOOLCHAIN_ARM) extern uint32_t Load$$LR$$LR_IROM1$$Limit[]; -#define FLASHIAP_ROM_END ((uint32_t)Load$$LR$$LR_IROM1$$Limit) +#define FLASHIAP_APP_ROM_END_ADDR ((uint32_t)Load$$LR$$LR_IROM1$$Limit) #elif defined(TOOLCHAIN_IAR) #pragma section=".rodata" #pragma section=".text" -#define FLASHIAP_ROM_END (std::max((uint32_t) __section_end(".rodata"), (uint32_t) __section_end(".text"))) +#pragma section=".init_array" +#define FLASHIAP_APP_ROM_END_ADDR std::max(std::max((uint32_t) __section_end(".rodata"), (uint32_t) __section_end(".text")), \ + (uint32_t) __section_end(".init_array")) #endif namespace mbed { @@ -131,6 +135,14 @@ */ uint32_t get_page_size() const; + /** Get the flash erase value + * + * Get the value we read after erase operation + * @return flash erase value + */ + uint8_t get_erase_value() const; + +#if !defined(DOXYGEN_ONLY) private: /* Check if address and size are aligned to a sector @@ -144,6 +156,7 @@ flash_t _flash; uint8_t *_page_buf; static SingletonPtr<PlatformMutex> _mutex; +#endif }; } /* namespace mbed */