mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-04 18:03:20 +03:00
Restore EEPROM address to prior released location (#6537)
When the FS_END was adjusted to end on a full block (i.e. rounded down) to avoid filesystem issues, but _FS_end was changed. The EEPROM library used _FS_end to implicitly calculate the start of the EEPROM data, so this means after the _FS_end fix, EEPROM data written with prior releases would "disappear." Avoid the issue by explicitly calculating the EEPROM start location in the linker, using the same formula as prior release. Fixes #6531
This commit is contained in:
parent
3733ece7e8
commit
69f3e81fb9
@ -30,7 +30,7 @@ extern "C" {
|
||||
#include "spi_flash.h"
|
||||
}
|
||||
|
||||
extern "C" uint32_t _FS_end;
|
||||
extern "C" uint32_t _EEPROM_start;
|
||||
|
||||
EEPROMClass::EEPROMClass(uint32_t sector)
|
||||
: _sector(sector)
|
||||
@ -41,7 +41,7 @@ EEPROMClass::EEPROMClass(uint32_t sector)
|
||||
}
|
||||
|
||||
EEPROMClass::EEPROMClass(void)
|
||||
: _sector((((uint32_t)&_FS_end - 0x40200000) / SPI_FLASH_SEC_SIZE))
|
||||
: _sector((((uint32_t)&_EEPROM_start - 0x40200000) / SPI_FLASH_SEC_SIZE))
|
||||
, _data(0)
|
||||
, _size(0)
|
||||
, _dirty(false)
|
||||
|
@ -359,4 +359,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -1181,6 +1181,11 @@ def flash_map (flashsize_kb, fs_kb = 0):
|
||||
rfcal_size_kb = 4
|
||||
sdkwifi_size_kb = 12
|
||||
fs_end = (flashsize_kb - sdkwifi_size_kb - rfcal_size_kb - eeprom_size_kb) * 1024
|
||||
|
||||
# For legacy reasons (#6531), the EEPROM sector needs to be at the old
|
||||
# FS_end calculated without regards to block size
|
||||
eeprom_start = fs_end
|
||||
|
||||
rfcal_addr = (flashsize_kb - sdkwifi_size_kb - rfcal_size_kb) * 1024
|
||||
if flashsize_kb <= 1024:
|
||||
max_upload_size = (flashsize_kb - (fs_kb + eeprom_size_kb + rfcal_size_kb + sdkwifi_size_kb)) * 1024 - reserved
|
||||
@ -1264,6 +1269,7 @@ def flash_map (flashsize_kb, fs_kb = 0):
|
||||
print("PROVIDE ( _FS_end = 0x%08X );" % (0x40200000 + fs_end))
|
||||
print("PROVIDE ( _FS_page = 0x%X );" % page)
|
||||
print("PROVIDE ( _FS_block = 0x%X );" % fs_blocksize)
|
||||
print("PROVIDE ( _EEPROM_start = 0x%08x );" % (0x40200000 + eeprom_start))
|
||||
print("")
|
||||
print('INCLUDE "local.eagle.app.v6.common.ld"')
|
||||
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40400000 );
|
||||
PROVIDE ( _FS_end = 0x411FA000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x411fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40300000 );
|
||||
PROVIDE ( _FS_end = 0x411FA000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x411fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x402FB000 );
|
||||
PROVIDE ( _FS_end = 0x402FB000 );
|
||||
PROVIDE ( _FS_page = 0x0 );
|
||||
PROVIDE ( _FS_block = 0x0 );
|
||||
PROVIDE ( _EEPROM_start = 0x402fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x402DB000 );
|
||||
PROVIDE ( _FS_end = 0x402FB000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x402fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x402D7000 );
|
||||
PROVIDE ( _FS_end = 0x402FB000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x402fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x402D3000 );
|
||||
PROVIDE ( _FS_end = 0x402FB000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x402fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x402CB000 );
|
||||
PROVIDE ( _FS_end = 0x402FB000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x402fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x402BB000 );
|
||||
PROVIDE ( _FS_end = 0x402FB000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x402fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x4027B000 );
|
||||
PROVIDE ( _FS_end = 0x402FB000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x402fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x402EB000 );
|
||||
PROVIDE ( _FS_end = 0x402FB000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x402fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x403FB000 );
|
||||
PROVIDE ( _FS_end = 0x403FB000 );
|
||||
PROVIDE ( _FS_page = 0x0 );
|
||||
PROVIDE ( _FS_block = 0x0 );
|
||||
PROVIDE ( _EEPROM_start = 0x403fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x403E0000 );
|
||||
PROVIDE ( _FS_end = 0x403FB000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x403fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40300000 );
|
||||
PROVIDE ( _FS_end = 0x403FA000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x403fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x403C0000 );
|
||||
PROVIDE ( _FS_end = 0x403FB000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x403fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40380000 );
|
||||
PROVIDE ( _FS_end = 0x403FA000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x403fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x405FB000 );
|
||||
PROVIDE ( _FS_end = 0x405FB000 );
|
||||
PROVIDE ( _FS_page = 0x0 );
|
||||
PROVIDE ( _FS_block = 0x0 );
|
||||
PROVIDE ( _EEPROM_start = 0x405fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40500000 );
|
||||
PROVIDE ( _FS_end = 0x405FA000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x405fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40400000 );
|
||||
PROVIDE ( _FS_end = 0x405FA000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x405fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40300000 );
|
||||
PROVIDE ( _FS_end = 0x405FA000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x405fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x4027B000 );
|
||||
PROVIDE ( _FS_end = 0x4027B000 );
|
||||
PROVIDE ( _FS_page = 0x0 );
|
||||
PROVIDE ( _FS_block = 0x0 );
|
||||
PROVIDE ( _EEPROM_start = 0x4027b000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x4025B000 );
|
||||
PROVIDE ( _FS_end = 0x4027B000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x4027b000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40273000 );
|
||||
PROVIDE ( _FS_end = 0x4027B000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x4027b000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x4026B000 );
|
||||
PROVIDE ( _FS_end = 0x4027B000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x1000 );
|
||||
PROVIDE ( _EEPROM_start = 0x4027b000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40400000 );
|
||||
PROVIDE ( _FS_end = 0x409FA000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x409fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
@ -18,5 +18,6 @@ PROVIDE ( _FS_start = 0x40300000 );
|
||||
PROVIDE ( _FS_end = 0x409FA000 );
|
||||
PROVIDE ( _FS_page = 0x100 );
|
||||
PROVIDE ( _FS_block = 0x2000 );
|
||||
PROVIDE ( _EEPROM_start = 0x409fb000 );
|
||||
|
||||
INCLUDE "local.eagle.app.v6.common.ld"
|
||||
|
Loading…
x
Reference in New Issue
Block a user