From 654ebcf598838e16e240f70ce34f44c5cedaad48 Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 15 May 2015 20:06:13 +0300 Subject: [PATCH] enhance board flash handling and eeprom location --- hardware/esp8266com/esp8266/boards.txt | 68 +++++++++++-------- .../esp8266/libraries/EEPROM/EEPROM.cpp | 3 +- .../tools/esp8266/sdk/ld/eagle.flash.1m128.ld | 17 +++++ .../tools/esp8266/sdk/ld/eagle.flash.1m256.ld | 17 +++++ ...eagle.flash.1m.ld => eagle.flash.1m512.ld} | 0 ...agle.flash.256k.ld => eagle.flash.1m64.ld} | 10 +-- 6 files changed, 82 insertions(+), 33 deletions(-) create mode 100644 hardware/tools/esp8266/sdk/ld/eagle.flash.1m128.ld create mode 100644 hardware/tools/esp8266/sdk/ld/eagle.flash.1m256.ld rename hardware/tools/esp8266/sdk/ld/{eagle.flash.1m.ld => eagle.flash.1m512.ld} (100%) rename hardware/tools/esp8266/sdk/ld/{eagle.flash.256k.ld => eagle.flash.1m64.ld} (72%) diff --git a/hardware/esp8266com/esp8266/boards.txt b/hardware/esp8266com/esp8266/boards.txt index 4d6c41515..77f263cc6 100644 --- a/hardware/esp8266com/esp8266/boards.txt +++ b/hardware/esp8266com/esp8266/boards.txt @@ -2,7 +2,6 @@ menu.UploadSpeed=Upload Speed menu.CpuFrequency=CPU Frequency menu.FlashSize=Flash Size menu.FlashFreq=Flash Frequency -menu.FlashMode=Flash Mode ############################################################## generic.name=Generic ESP8266 Module @@ -24,6 +23,8 @@ generic.build.flash_mode=qio generic.build.flash_size=512K generic.build.flash_freq=40 generic.build.flash_ld=eagle.flash.512k.ld +generic.build.spiffs_start=0x6B000 +generic.build.spiffs_end=0x7B000 generic.menu.CpuFrequency.80=80 MHz generic.menu.CpuFrequency.80.build.f_cpu=80000000L @@ -49,39 +50,46 @@ generic.menu.UploadSpeed.512000.upload.speed=512000 generic.menu.UploadSpeed.921600=921600 generic.menu.UploadSpeed.921600.upload.speed=921600 -generic.menu.FlashSize.512K=512K +generic.menu.FlashSize.512K=512K (64K SPIFFS) generic.menu.FlashSize.512K.build.flash_size=512K generic.menu.FlashSize.512K.build.flash_ld=eagle.flash.512k.ld -generic.menu.FlashSize.256K=256K -generic.menu.FlashSize.256K.build.flash_size=256K -generic.menu.FlashSize.256K.build.flash_ld=eagle.flash.256k.ld -generic.menu.FlashSize.1M=1M -generic.menu.FlashSize.1M.build.flash_size=1M -generic.menu.FlashSize.1M.build.flash_ld=eagle.flash.1m.ld -generic.menu.FlashSize.2M=2M +generic.menu.FlashSize.512K.build.spiffs_start=0x6B000 +generic.menu.FlashSize.512K.build.spiffs_end=0x7B000 +generic.menu.FlashSize.1M512=1M (512K SPIFFS) +generic.menu.FlashSize.1M512.build.flash_size=1M +generic.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld +generic.menu.FlashSize.1M512.build.spiffs_start=0x6B000 +generic.menu.FlashSize.1M512.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M256=1M (256K SPIFFS) +generic.menu.FlashSize.1M256.build.flash_size=1M +generic.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld +generic.menu.FlashSize.1M256.build.spiffs_start=0xAB000 +generic.menu.FlashSize.1M256.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M128=1M (128K SPIFFS) +generic.menu.FlashSize.1M128.build.flash_size=1M +generic.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld +generic.menu.FlashSize.1M128.build.spiffs_start=0xCB000 +generic.menu.FlashSize.1M128.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M64=1M (64K SPIFFS) +generic.menu.FlashSize.1M64.build.flash_size=1M +generic.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld +generic.menu.FlashSize.1M64.build.spiffs_start=0xEB000 +generic.menu.FlashSize.1M64.build.spiffs_end=0xFB000 +generic.menu.FlashSize.2M=2M (1M SPIFFS) generic.menu.FlashSize.2M.build.flash_size=2M generic.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld -generic.menu.FlashSize.4M=4M +generic.menu.FlashSize.2M.build.spiffs_start=0x100000 +generic.menu.FlashSize.2M.build.spiffs_end=0x1FB000 +generic.menu.FlashSize.4M=4M (3M SPIFFS) generic.menu.FlashSize.4M.build.flash_size=4M generic.menu.FlashSize.4M.build.flash_ld=eagle.flash.4m.ld +generic.menu.FlashSize.4M.build.spiffs_start=0x100000 +generic.menu.FlashSize.4M.build.spiffs_end=0x3FB000 -generic.menu.FlashFreq.40=40MHz -generic.menu.FlashFreq.40.build.flash_freq=40 -generic.menu.FlashFreq.20=20MHz -generic.menu.FlashFreq.20.build.flash_freq=20 -generic.menu.FlashFreq.26=26.7MHz -generic.menu.FlashFreq.26.build.flash_freq=26.7 -generic.menu.FlashFreq.80=80MHz -generic.menu.FlashFreq.80.build.flash_freq=80 - -generic.menu.FlashMode.qio=QIO -generic.menu.FlashMode.qio.build.flash_mode=qio -generic.menu.FlashMode.qout=QOUT -generic.menu.FlashMode.qout.build.flash_mode=qout -generic.menu.FlashMode.dio=DIO -generic.menu.FlashMode.dio.build.flash_mode=dio -generic.menu.FlashMode.dout=DOUT -generic.menu.FlashMode.dout.build.flash_mode=dout +# generic.menu.FlashFreq.40=40MHz +# generic.menu.FlashFreq.40.build.flash_freq=40 +# generic.menu.FlashFreq.80=80MHz +# generic.menu.FlashFreq.80.build.flash_freq=80 ############################################################## modwifi.name=Olimex MOD-WIFI-ESP8266(-DEV) @@ -104,6 +112,8 @@ modwifi.build.flash_mode=qio modwifi.build.flash_size=2M modwifi.build.flash_freq=40 modwifi.build.flash_ld=eagle.flash.2m.ld +modwifi.build.spiffs_start=0x100000 +modwifi.build.spiffs_end=0x1FB000 modwifi.menu.CpuFrequency.80=80 MHz modwifi.menu.CpuFrequency.80.build.f_cpu=80000000L @@ -150,6 +160,8 @@ nodemcu.build.flash_mode=qio nodemcu.build.flash_size=4M nodemcu.build.flash_freq=40 nodemcu.build.flash_ld=eagle.flash.4m.ld +nodemcu.build.spiffs_start=0x100000 +nodemcu.build.spiffs_end=0x3FB000 nodemcu.menu.CpuFrequency.80=80 MHz nodemcu.menu.CpuFrequency.80.build.f_cpu=80000000L @@ -197,6 +209,8 @@ nodemcu.menu.FlashSize.4M.build.flash_size=4M # wifio.build.flash_size=512K # wifio.build.flash_freq=40 # wifio.build.flash_ld=eagle.flash.512k.ld +# wifio.build.spiffs_start=0x6B000 +# wifio.build.spiffs_end=0x7B000 # # wifio.menu.CpuFrequency.80=80MHz # wifio.menu.CpuFrequency.80.build.f_cpu=80000000L diff --git a/hardware/esp8266com/esp8266/libraries/EEPROM/EEPROM.cpp b/hardware/esp8266com/esp8266/libraries/EEPROM/EEPROM.cpp index 74e7f3b0f..14c6201f5 100644 --- a/hardware/esp8266com/esp8266/libraries/EEPROM/EEPROM.cpp +++ b/hardware/esp8266com/esp8266/libraries/EEPROM/EEPROM.cpp @@ -28,9 +28,10 @@ #include "os_type.h" #include "osapi.h" #include "spi_flash.h" +extern uint32_t _SPIFFS_end; } -#define CONFIG_START_SECTOR 0x7b +#define CONFIG_START_SECTOR (((uint32_t)_SPIFFS_end - 0x40200000) / 4096) #define CONFIG_SECTOR (CONFIG_START_SECTOR + 0) #define CONFIG_ADDR (SPI_FLASH_SEC_SIZE * CONFIG_SECTOR) diff --git a/hardware/tools/esp8266/sdk/ld/eagle.flash.1m128.ld b/hardware/tools/esp8266/sdk/ld/eagle.flash.1m128.ld new file mode 100644 index 000000000..7505b26a2 --- /dev/null +++ b/hardware/tools/esp8266/sdk/ld/eagle.flash.1m128.ld @@ -0,0 +1,17 @@ +/* Flash Split for 1M chips */ +/* irom0 812KB */ +/* spiffs 128KB */ +/* eeprom 20KB */ + +MEMORY +{ + dport0_0_seg : org = 0x3FF00000, len = 0x10 + dram0_0_seg : org = 0x3FFE8000, len = 0x14000 + iram1_0_seg : org = 0x40100000, len = 0x8000 + irom0_0_seg : org = 0x40210000, len = 0xCB000 +} + +PROVIDE ( _SPIFFS_start = 0x402CB000 ); +PROVIDE ( _SPIFFS_end = 0x402FB000 ); + +INCLUDE "../ld/eagle.app.v6.common.ld" diff --git a/hardware/tools/esp8266/sdk/ld/eagle.flash.1m256.ld b/hardware/tools/esp8266/sdk/ld/eagle.flash.1m256.ld new file mode 100644 index 000000000..dc646d3f6 --- /dev/null +++ b/hardware/tools/esp8266/sdk/ld/eagle.flash.1m256.ld @@ -0,0 +1,17 @@ +/* Flash Split for 1M chips */ +/* irom0 684KB */ +/* spiffs 256KB */ +/* eeprom 20KB */ + +MEMORY +{ + dport0_0_seg : org = 0x3FF00000, len = 0x10 + dram0_0_seg : org = 0x3FFE8000, len = 0x14000 + iram1_0_seg : org = 0x40100000, len = 0x8000 + irom0_0_seg : org = 0x40210000, len = 0xAB000 +} + +PROVIDE ( _SPIFFS_start = 0x402AB000 ); +PROVIDE ( _SPIFFS_end = 0x402FB000 ); + +INCLUDE "../ld/eagle.app.v6.common.ld" diff --git a/hardware/tools/esp8266/sdk/ld/eagle.flash.1m.ld b/hardware/tools/esp8266/sdk/ld/eagle.flash.1m512.ld similarity index 100% rename from hardware/tools/esp8266/sdk/ld/eagle.flash.1m.ld rename to hardware/tools/esp8266/sdk/ld/eagle.flash.1m512.ld diff --git a/hardware/tools/esp8266/sdk/ld/eagle.flash.256k.ld b/hardware/tools/esp8266/sdk/ld/eagle.flash.1m64.ld similarity index 72% rename from hardware/tools/esp8266/sdk/ld/eagle.flash.256k.ld rename to hardware/tools/esp8266/sdk/ld/eagle.flash.1m64.ld index 8ecddb8b6..d98bed64d 100644 --- a/hardware/tools/esp8266/sdk/ld/eagle.flash.256k.ld +++ b/hardware/tools/esp8266/sdk/ld/eagle.flash.1m64.ld @@ -1,5 +1,5 @@ -/* Flash Split for 256K chips */ -/* irom0 108KB */ +/* Flash Split for 1M chips */ +/* irom0 876KB */ /* spiffs 64KB */ /* eeprom 20KB */ @@ -8,10 +8,10 @@ MEMORY dport0_0_seg : org = 0x3FF00000, len = 0x10 dram0_0_seg : org = 0x3FFE8000, len = 0x14000 iram1_0_seg : org = 0x40100000, len = 0x8000 - irom0_0_seg : org = 0x40210000, len = 0x1B000 + irom0_0_seg : org = 0x40210000, len = 0xEB000 } -PROVIDE ( _SPIFFS_start = 0x4022B000 ); -PROVIDE ( _SPIFFS_end = 0x4023B000 ); +PROVIDE ( _SPIFFS_start = 0x402EB000 ); +PROVIDE ( _SPIFFS_end = 0x402FB000 ); INCLUDE "../ld/eagle.app.v6.common.ld"