diff --git a/HISTORY.rst b/HISTORY.rst index ef063bad..a9873a3e 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -7,7 +7,11 @@ PlatformIO 2.0 2.5.1 (2015-12-??) ~~~~~~~~~~~~~~~~~~ -* Handle ``upload_flags`` option in `platformio.ini `_ +* Implemented Over The Air (OTA) upgrades for `Espressif `__ + development platform. + (`issue #365 `_) +* Added support for Espressif ESP8266 ESP-01-1MB board (ready for OTA) +* Handle ``upload_flags`` option in `platformio.ini `__ (`issue #368 `_) 2.5.0 (2015-12-08) diff --git a/docs/frameworks/arduino.rst b/docs/frameworks/arduino.rst index 8d2ea38e..2d7994d1 100644 --- a/docs/frameworks/arduino.rst +++ b/docs/frameworks/arduino.rst @@ -476,15 +476,22 @@ Espressif * - ``esp01`` - `Espressif ESP8266 ESP-01 board `_ - ESP8266 - - 40 MHz + - 80 MHz - 512 Kb - 32 Kb + * - ``esp01_1m`` + - `Espressif ESP8266 ESP-01-1MB board `_ + - ESP8266 + - 80 MHz + - 1024 Kb + - 32 Kb + * - ``esp12e`` - `Espressif ESP8266 ESP-12E board (NodeMCU) `_ - ESP8266 - 80 MHz - - 512 Kb + - 4096 Kb - 32 Kb LightUp diff --git a/docs/platforms/espressif.rst b/docs/platforms/espressif.rst index ee2b297d..0f1ee9af 100644 --- a/docs/platforms/espressif.rst +++ b/docs/platforms/espressif.rst @@ -88,13 +88,20 @@ Espressif * - ``esp01`` - `Espressif ESP8266 ESP-01 board `_ - ESP8266 - - 40 MHz + - 80 MHz - 512 Kb - 32 Kb + * - ``esp01_1m`` + - `Espressif ESP8266 ESP-01-1MB board `_ + - ESP8266 + - 80 MHz + - 1024 Kb + - 32 Kb + * - ``esp12e`` - `Espressif ESP8266 ESP-12E board (NodeMCU) `_ - ESP8266 - 80 MHz - - 512 Kb + - 4096 Kb - 32 Kb diff --git a/platformio/boards/espressif.json b/platformio/boards/espressif.json index f2c4e3f5..ea97a27b 100644 --- a/platformio/boards/espressif.json +++ b/platformio/boards/espressif.json @@ -21,6 +21,28 @@ "url": "https://nurdspace.nl/ESP8266", "vendor": "Espressif" }, + "esp01_1m": { + "build": { + "core": "esp8266", + "extra_flags": "-DARDUINO_ESP8266_ESP01 -DARDUINO_ARCH_ESP8266 -DESP8266", + "f_cpu": "80000000L", + "ldscript": "esp8266.flash.1m128.ld", + "mcu": "esp8266", + "variant": "generic" + }, + "frameworks": ["arduino"], + "name": "Espressif ESP8266 ESP-01-1MB board", + "platform": "espressif", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 1048576, + "protocol": "arduino", + "require_upload_port" : true, + "speed": 115200 + }, + "url": "https://nurdspace.nl/ESP8266", + "vendor": "Espressif" + }, "esp12e": { "build": { "core": "esp8266", diff --git a/platformio/builder/scripts/espressif.py b/platformio/builder/scripts/espressif.py index 49feea70..0980c605 100644 --- a/platformio/builder/scripts/espressif.py +++ b/platformio/builder/scripts/espressif.py @@ -16,6 +16,7 @@ Builder for Espressif MCUs """ +import socket from os.path import join from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, Builder, Default, @@ -98,14 +99,6 @@ env.Replace( PROGSUFFIX=".elf" ) -if "FRAMEWORK" in env: - env.Append( - LINKFLAGS=[ - "-Wl,-wrap,system_restart_local", - "-Wl,-wrap,register_chipv6_phy" - ] - ) - _board_max_rom = int( env.get("BOARD_OPTIONS", {}).get("upload", {}).get("maximum_size", 0)) env.Append( @@ -136,11 +129,32 @@ env.Append( ) ) -# -# Configure SDK -# +if "FRAMEWORK" in env: + env.Append( + LINKFLAGS=[ + "-Wl,-wrap,system_restart_local", + "-Wl,-wrap,register_chipv6_phy" + ] + ) -if "FRAMEWORK" not in env: + # Handle uploading via OTA + try: + if env.get("UPLOAD_PORT") and socket.inet_aton(env.get("UPLOAD_PORT")): + env.Replace( + UPLOADEROTA=join("$PLATFORMFW_DIR", "tools", "espota.py"), + UPLOADERFLAGS=[ + "--debug", + "--progress", + "-i", "$UPLOAD_PORT", + "-f", "$SOURCE" + ], + UPLOADCMD='$UPLOADEROTA $UPLOADERFLAGS' + ) + except socket.error: + pass + +# Configure native SDK +else: env.Append( CPPPATH=[ join("$PIOPACKAGES_DIR", "sdk-esp8266", "include"),