esp8266/modesp: flash_user_start: Use value from linker script.
Make esp8266_common.ld export size reserved to all code segments, and use
that in esp.flash_user_start() implementation.
diff --git a/esp8266/esp8266_common.ld b/esp8266/esp8266_common.ld
index 1da8356..bc983df 100644
--- a/esp8266/esp8266_common.ld
+++ b/esp8266/esp8266_common.ld
@@ -19,6 +19,8 @@
EXTERN(_NMIExceptionVector)
EXTERN(_UserExceptionVector)
+_firmware_size = ORIGIN(irom0_0_seg) + LENGTH(irom0_0_seg) - 0x40200000;
+
PROVIDE(_memmap_vecbase_reset = 0x40000000);
/* Various memory-map dependent cache attribute settings: */
diff --git a/esp8266/modesp.c b/esp8266/modesp.c
index 432fd5a..5eaae27 100644
--- a/esp8266/modesp.c
+++ b/esp8266/modesp.c
@@ -159,12 +159,10 @@
// we assume there's a yaota8266 bootloader.
#define IS_OTA_FIRMWARE() ((*(uint32_t*)0x40200000 & 0xff00) == 0x100)
+extern byte _firmware_size[];
+
STATIC mp_obj_t esp_flash_user_start(void) {
- if (IS_OTA_FIRMWARE()) {
- return MP_OBJ_NEW_SMALL_INT(0x3c000 + 0x90000);
- } else {
- return MP_OBJ_NEW_SMALL_INT(0x90000);
- }
+ return MP_OBJ_NEW_SMALL_INT((uint32_t)_firmware_size);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(esp_flash_user_start_obj, esp_flash_user_start);