From 3e05df7fd1038d1e733559a7c180ac7da20b2aa6 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Fri, 12 May 2017 15:58:19 +0300 Subject: [PATCH] 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. --- esp8266/esp8266_common.ld | 2 ++ esp8266/modesp.c | 8 +++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/esp8266/esp8266_common.ld b/esp8266/esp8266_common.ld index 1da835681a..bc983df700 100644 --- a/esp8266/esp8266_common.ld +++ b/esp8266/esp8266_common.ld @@ -19,6 +19,8 @@ EXTERN(_KernelExceptionVector) 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 432fd5ac31..5eaae27d6a 100644 --- a/esp8266/modesp.c +++ b/esp8266/modesp.c @@ -159,12 +159,10 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(esp_flash_size_obj, esp_flash_size); // 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);