diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 552f04937..9c44f1e37 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -401,7 +401,7 @@ void UpdateQuickPowerCycle(bool update) if (update && ((pc_register & 0xFFFFFFF0) == 0xFFA55AB0)) { uint32_t counter = ((pc_register & 0xF) << 1) & 0xF; if (0 == counter) { // 4 power cycles in a row - SettingsErase(2); // Quickly reset all settings including QuickPowerCycle flag + SettingsErase(3); // Quickly reset all settings including QuickPowerCycle flag EspRestart(); // And restart } else { pc_register = 0xFFA55AB0 | counter; @@ -571,29 +571,30 @@ void SettingsErase(uint8_t type) 0 = Erase from program end until end of flash as seen by SDK 1 = Erase 16k SDK parameter area near end of flash as seen by SDK (0x0xFCxxx - 0x0xFFFFF) solving possible wifi errors - 2 = Erase Tasmota settings (0x0xF3xxx - 0x0xFBFFF) + 2 = Erase Tasmota parameter area (0x0xF3xxx - 0x0xFBFFF) + 3 = Erase Tasmota and SDK parameter area (0x0F3xxx - 0x0FFFFF) */ #ifndef FIRMWARE_MINIMAL -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SDK: Flash size 0x%08X"), flashchip->chip_size); - uint32_t _sectorStart = (ESP.getSketchSize() / SPI_FLASH_SEC_SIZE) + 1; - uint32_t _sectorEnd = ESP.getFlashChipRealSize() / SPI_FLASH_SEC_SIZE; -// uint32_t _sectorEnd = ESP.getFlashChipSize() / SPI_FLASH_SEC_SIZE; + uint32_t _sectorEnd = ESP.getFlashChipRealSize() / SPI_FLASH_SEC_SIZE; // Flash size as reported by hardware if (1 == type) { // source Esp.cpp and core_esp8266_phy.cpp - _sectorStart = (ESP.getFlashChipSize() / SPI_FLASH_SEC_SIZE) - 4; + _sectorStart = (ESP.getFlashChipSize() / SPI_FLASH_SEC_SIZE) - 4; // SDK parameter area } else if (2 == type) { - _sectorStart = SETTINGS_LOCATION - CFG_ROTATES; // Tasmota parameter area (0x0F3xxx - 0x0FBFFF) + _sectorStart = SETTINGS_LOCATION - CFG_ROTATES; // Tasmota parameter area (0x0F3xxx - 0x0FBFFF) _sectorEnd = SETTINGS_LOCATION +1; } + else if (3 == type) { + _sectorStart = SETTINGS_LOCATION - CFG_ROTATES; // Tasmota and SDK parameter area (0x0F3xxx - 0x0FFFFF) + _sectorEnd = ESP.getFlashChipSize() / SPI_FLASH_SEC_SIZE; // Flash size as seen by SDK + } AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " %d " D_UNIT_SECTORS), _sectorEnd - _sectorStart); -// EspErase(_sectorStart, _sectorEnd); // Arduino core and SDK - erases flash as seen by SDK - EsptoolErase(_sectorStart, _sectorEnd); // Esptool - erases flash completely - +// EspErase(_sectorStart, _sectorEnd); // Arduino core and SDK - erases flash as seen by SDK + EsptoolErase(_sectorStart, _sectorEnd); // Esptool - erases flash completely #endif // FIRMWARE_MINIMAL }