1
0
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:
Earle F. Philhower, III 2019-09-20 08:24:10 -07:00 committed by GitHub
parent 3733ece7e8
commit 69f3e81fb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 34 additions and 3 deletions

View File

@ -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)

View File

@ -359,4 +359,4 @@
]
}
]
}
}

View File

@ -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"')

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"