diff --git a/README.md b/README.md index fefc736ed9..1254540e56 100644 --- a/README.md +++ b/README.md @@ -69,8 +69,7 @@ core_274_sdk3 | Arduino Core 2.7.4 SDK v.3 release | _[hardware-type]_ cn be any of: Hardware type | Description | -----------------|---------------------------------------------| -ESP8266 | Espressif ESP8266 generic boards | -ESP8285 | Espressif ESP8285 generic boards 1MB Flash | +ESP8266 | Espressif ESP8266/ESP8285 generic boards | WROOM02 | Espressif ESP8266 WRoom02 boards | ESP32 | Espressif ESP32 generic boards | ESP32-wrover-kit | Espressif ESP32 wrover-kit boards | @@ -81,6 +80,8 @@ Shelly_PLUG_S | Shelly plug S switch with power measurement | Ventus | Ventus W266 weather station | LCtech | LC-tech serial switch | +N.B. Starting 2022/07/23, 1M ESP8266 builds can also be used on ESP8285 units and thus there is no longer a specific ESP8285 build anymore. + _[flash-size]_ can be any of: Flash size | Description | @@ -112,7 +113,6 @@ Some example firmware names: Firmware name | Hardware | Included plugins | ---------------------------------------------------|-------------------------|-------------------------------| ESPEasy_mega-20210501_normal_ESP8266_1M.bin | ESP8266 with 1MB flash | Stable | -ESPEasy_mega-20210501_normal_ESP8285_1M.bin | ESP8285 with 1MB flash | Stable | ESPEasy_mega-20210501_normal_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable | ESPEasy_mega-20210501_test_A_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable + Testing base + set A | ESPEasy_mega-20210501_normal_ESP32_4M316k.bin | ESP32 with 4MB flash | Stable | diff --git a/dist/README.txt b/dist/README.txt index 5b6622405d..bbef6dbcdb 100644 --- a/dist/README.txt +++ b/dist/README.txt @@ -27,9 +27,11 @@ There is also a number of special builds: - normal_beta => "Normal" using the staged (beta) branch of the esp8266/Arduino repository. Chip can be: -- ESP8266 => Most likely option -- ESP8285 => Used in some Sonoff modules +- ESP8266 => Most likely option (use also for ESP8285 chips) - ESP32 => Showing up in commercial products, but mainly seen on NodeMCU like boards. +- ESP32-S2 => Newer version of ESP32, with more GPIO pins, but lacking some features of ESP32. +- ESP32-S3 => Not yet supported in ESPEasy. (hardly available to buy) +- ESP32-C3 => Support in ESPEasy will be added soon. MemorySize can be: - 1M => 1 MB flash modules (e.g. almost all Sonoff modules) diff --git a/docs/source/Participate/PlatformIO.rst b/docs/source/Participate/PlatformIO.rst index 0c1b73a05a..4a0d6c3e19 100644 --- a/docs/source/Participate/PlatformIO.rst +++ b/docs/source/Participate/PlatformIO.rst @@ -132,7 +132,7 @@ The environment definitions all have at least the used micro controller in the n For example: * ..._ESP8266_4Mnn -> ESP8266 has external flash, which can vary in size from 512 kB to 16 MB, with nn configured as filesystem. -* ..._ESP8285_1M -> ESP8285 has the flash internal, it is always 1 MB. +* ..._ESP8266_1M -> ESP8285 has the flash internal, which is almost always 1 MB. ESP8266 does have an external flash chip, which allows for exchanging it for a larger flash chip (recommended). * ..._ESP32_4M316k -> ESP32 with 4 MB flash and a 1.8 MB partition for the sketch. (316k SPIFFS) * ..._ESP32s2_4M316k -> ESP32s2 with 4 MB flash and a 1.8 MB partition for the sketch. (316k SPIFFS) * ..._ESP32_16M2M_LittleFS -> ESP32 with 16 MB flash and a 4 MB partition for the sketch. (2MB LittleFS) diff --git a/docs/source/Participate/ProjectStructure.rst b/docs/source/Participate/ProjectStructure.rst index db4fcd4465..b25676a9cb 100644 --- a/docs/source/Participate/ProjectStructure.rst +++ b/docs/source/Participate/ProjectStructure.rst @@ -108,8 +108,11 @@ ESP Chip Type ------------- * ``ESP8266`` Most likely option. -* ``ESP8285`` Used in some Sonoff modules. This chip has embedded flash, so no extra flash chip. -* ``ESP32`` Experimental support at this moment. +* ``ESP8285`` Supported in ``ESP8266`` builds. Used in some Sonoff modules. This chip has embedded flash, so no extra flash chip. +* ``ESP32`` Allows for more memory and more GPIO pins. +* ``ESP32-S2`` Newer version of ESP32. Has even more GPIO pins, but some specific features of ESP32 were removed. +* ``ESP32-S3`` Not yet available. +* ``ESP32-C3`` Support will be added soon. Memory Size and Partitioning ---------------------------- diff --git a/platformio_esp82xx_base.ini b/platformio_esp82xx_base.ini index 8b46768753..cc42648dd9 100644 --- a/platformio_esp82xx_base.ini +++ b/platformio_esp82xx_base.ini @@ -242,12 +242,6 @@ extends = esp82xx_1M board = esp8266_1M128k build_flags = ${esp82xx_1M.build_flags} -[esp8285_1M] -extends = esp82xx_1M -board = esp8285_1M128k -build_flags = ${esp82xx_1M.build_flags} - -DESP8285 - ;;; Minimal *********************************************************** ; Minimal build size for OTA ; @@ -264,12 +258,6 @@ extends = esp82xx_1M_OTA board = esp8266_1M128k_OTA build_flags = ${esp82xx_1M_OTA.build_flags} -[esp8285_1M_OTA] -extends = esp82xx_1M_OTA -board = esp8285_1M128k_OTA -build_flags = ${esp82xx_1M_OTA.build_flags} - -DESP8285 - ;;; 2MB flash nodes ************************************************** ; Layout for 2M flash nodes ; diff --git a/platformio_esp82xx_envs.ini b/platformio_esp82xx_envs.ini index b179403046..8d348af649 100644 --- a/platformio_esp82xx_envs.ini +++ b/platformio_esp82xx_envs.ini @@ -274,19 +274,13 @@ lib_ignore = ${regular_platform_alt_wifi.lib_ignore} -; NORMAL: 1024k for esp8285 ---------------------- -[env:normal_ESP8285_1M] -extends = esp8285_1M -platform = ${regular_platform.platform} -platform_packages = ${regular_platform.platform_packages} -build_flags = ${regular_platform.build_flags} - ${esp8285_1M.build_flags} -lib_ignore = ${regular_platform.lib_ignore} - SD(esp8266) - SD - SDFS - LittleFS(esp8266) - +; NORMAL: 2048k WROOM02 version -------------------------- +;[env:normal_WROOM02_2M] +;extends = espWroom2M +;platform = ${regular_platform.platform} +;platform_packages = ${regular_platform.platform_packages} +;build_flags = ${regular_platform.build_flags} +; ${espWroom2M.build_flags} ; NORMAL: 2048k WROOM02 version 256k SPIFFS -------------------------- @@ -391,13 +385,6 @@ build_flags = ${regular_platform.build_flags} ${esp8266_1M_OTA.build_flags} ${minimal_OTA_domoticz.build_flags} -[env:minimal_core_274_ESP8285_1M_OTA_Domoticz] -extends = esp8285_1M_OTA -platform = ${regular_platform.platform} -platform_packages = ${regular_platform.platform_packages} -build_flags = ${regular_platform.build_flags} - ${esp8285_1M_OTA.build_flags} - ${minimal_OTA_domoticz.build_flags} [env:minimal_core_302_ESP8266_1M_OTA_Domoticz] extends = esp8266_1M_OTA @@ -407,14 +394,6 @@ build_flags = ${core302_platform.build_flags} ${esp8266_1M_OTA.build_flags} ${minimal_OTA_domoticz.build_flags} -[env:minimal_core_302_ESP8285_1M_OTA_Domoticz] -extends = esp8285_1M_OTA -platform = ${core302_platform.platform} -platform_packages = ${core302_platform.platform_packages} -build_flags = ${core302_platform.build_flags} - ${esp8285_1M_OTA.build_flags} - ${minimal_OTA_domoticz.build_flags} - [env:minimal_core_274_ESP8266_1M_OTA_FHEM_HA] extends = esp8266_1M_OTA @@ -424,13 +403,6 @@ build_flags = ${regular_platform.build_flags} ${esp8266_1M_OTA.build_flags} ${minimal_OTA_FHEM_HA.build_flags} -[env:minimal_core_274_ESP8285_1M_OTA_FHEM_HA] -extends = esp8285_1M_OTA -platform = ${regular_platform.platform} -platform_packages = ${regular_platform.platform_packages} -build_flags = ${regular_platform.build_flags} - ${esp8285_1M_OTA.build_flags} - ${minimal_OTA_FHEM_HA.build_flags} [env:minimal_core_302_ESP8266_1M_OTA_FHEM_HA] extends = esp8266_1M_OTA @@ -440,14 +412,6 @@ build_flags = ${core302_platform.build_flags} ${esp8266_1M_OTA.build_flags} ${minimal_OTA_FHEM_HA.build_flags} -[env:minimal_core_302_ESP8285_1M_OTA_FHEM_HA] -extends = esp8285_1M_OTA -platform = ${core302_platform.platform} -platform_packages = ${core302_platform.platform_packages} -build_flags = ${core302_platform.build_flags} - ${esp8285_1M_OTA.build_flags} - ${minimal_OTA_FHEM_HA.build_flags} - ;;; IR *********************************************************** @@ -833,31 +797,6 @@ build_flags = ${hard_esp82xx.build_flags} -D PLUGIN_SET_SONOFF_POW -; ITEAD / SONOFF S20 version -------------------- -;[env:hard_SONOFF_S20_1M] -;extends = esp8266_1M_OTA -;platform = ${hard_esp82xx.platform} -;platform_packages = ${hard_esp82xx.platform_packages} -;build_flags = ${hard_esp82xx.build_flags} ${esp8266_1M_OTA.build_flags} -D PLUGIN_SET_SONOFF_S2x - - -; ITEAD / SONOFF 4CH version -------------------- -;[env:hard_SONOFF_4CH_1M] -;extends = esp8285_1M_OTA -;platform = ${hard_esp82xx.platform} -;platform_packages = ${hard_esp82xx.platform_packages} -;build_flags = ${hard_esp82xx.build_flags} ${esp8285_1M_OTA.build_flags} -D PLUGIN_SET_SONOFF_4CH - - - -; ITEAD / SONOFF TOUCH version ------------------ -;[env:hard_SONOFF_TOUCH_1M] -;extends = esp8285_1M_OTA -;platform = ${hard_esp82xx.platform} -;platform_packages = ${hard_esp82xx.platform_packages} -;build_flags = ${hard_esp82xx.build_flags} ${esp8285_1M_OTA.build_flags} -D PLUGIN_SET_SONOFF_TOUCH - - ; Shelly1 Open Source (ESP8266-2MB) ; https://shelly.cloud/shelly1-open-source/ ; GPIO04 Relay (non inverted) diff --git a/src/src/Helpers/Hardware.cpp b/src/src/Helpers/Hardware.cpp index 6e92b6023f..5a6367080a 100644 --- a/src/src/Helpers/Hardware.cpp +++ b/src/src/Helpers/Hardware.cpp @@ -874,15 +874,30 @@ const __FlashStringHelper* getChipModel() { return F("ESP32-H2"); } return F("ESP32"); - -#elif defined(ESP8285) - return F("ESP8285"); #elif defined(ESP8266) - return F("ESP8266"); -#endif // ifdef ESP32 + return isESP8285() ? F("ESP8285") : F("ESP8266"); +#endif return F("Unknown"); } +bool isESP8285() { + #ifdef ESP8266 + const uint32_t efuse_blocks[4] { + READ_PERI_REG(0x3ff00050), + READ_PERI_REG(0x3ff00054), + READ_PERI_REG(0x3ff00058), + READ_PERI_REG(0x3ff0005c) + }; + + return ( + (efuse_blocks[0] & (1 << 4)) + || (efuse_blocks[2] & (1 << 16)) + ); + #else + return false; + #endif +} + uint8_t getChipRevision() { uint8_t rev = 0; @@ -1543,29 +1558,24 @@ bool getGpioInfo(int gpio, int& pinnr, bool& input, bool& output, bool& warning) } if (isFlashInterfacePin(gpio)) { - # ifdef ESP8285 - - if ((gpio == 9) || (gpio == 10)) { - // Usable on ESP8285 + if (isESP8285()) { + if ((gpio == 9) || (gpio == 10)) { + // Usable on ESP8285 + } else { + warning = true; + } } else { warning = true; + // On ESP8266 GPIO 9 & 10 are only usable if not connected to flash + if (gpio == 9) { + // GPIO9 is internally used to control the flash memory. + input = false; + output = false; + } else if (gpio == 10) { + // GPIO10 can be used as input only. + output = false; + } } - - # else // ifdef ESP8285 - - warning = true; - - // On ESP8266 GPIO 9 & 10 are only usable if not connected to flash - if (gpio == 9) { - // GPIO9 is internally used to control the flash memory. - input = false; - output = false; - } else if (gpio == 10) { - // GPIO10 can be used as input only. - output = false; - } - - # endif // ifdef ESP8285 } if ((pinnr < 0) || (pinnr > 16)) { diff --git a/src/src/Helpers/Hardware.h b/src/src/Helpers/Hardware.h index 4d2aea814d..190c7a3ede 100644 --- a/src/src/Helpers/Hardware.h +++ b/src/src/Helpers/Hardware.h @@ -112,6 +112,8 @@ uint8_t getChipCores(); const __FlashStringHelper* getChipModel(); +bool isESP8285(); + uint8_t getChipRevision(); uint32_t getSketchSize();