diff --git a/HISTORY.rst b/HISTORY.rst index d01b2067..5fe31b04 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -7,6 +7,7 @@ PlatformIO 2.0 2.6.3 (2015-12-??) ~~~~~~~~~~~~~~~~~~ +* Restored support for Espressif ESP8266 ESP-01 1MB board (ready for OTA) * Fixed invalid ROM size for ESP8266-based boards (`issue #396 `_) diff --git a/docs/frameworks/arduino.rst b/docs/frameworks/arduino.rst index 7bfac12f..07395193 100644 --- a/docs/frameworks/arduino.rst +++ b/docs/frameworks/arduino.rst @@ -81,7 +81,7 @@ Adafruit - `Adafruit HUZZAH ESP8266 `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb * - ``protrinket3`` @@ -461,7 +461,7 @@ ESPino - `ESPino `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb Engduino @@ -512,19 +512,26 @@ Espressif - RAM * - ``esp01`` - - `Espressif Generic ESP8266 ESP-01 `_ + - `Espressif Generic ESP8266 ESP-01 512k `_ - ESP8266 - 80 MHz - 512 Kb - 80 Kb - * - ``esp12e`` - - `Espressif ESP8266 ESP-12E `_ + * - ``esp01_1m`` + - `Espressif Generic ESP8266 ESP-01 1M `_ - ESP8266 - 80 MHz - 1024 Kb - 80 Kb + * - ``esp12e`` + - `Espressif ESP8266 ESP-12E `_ + - ESP8266 + - 80 MHz + - 4096 Kb + - 80 Kb + LightUp ~~~~~~~ @@ -665,7 +672,7 @@ NodeMCU - `NodeMCU 0.9 & 1.0 `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb Olimex @@ -685,7 +692,7 @@ Olimex - `Olimex MOD-WIFI-ESP8266(-DEV) `_ - ESP8266 - 80 MHz - - 1024 Kb + - 2048 Kb - 80 Kb PanStamp @@ -984,7 +991,7 @@ SweetPea - `SweetPea ESP-210 `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb Teensy @@ -1079,14 +1086,14 @@ WeMos - `WeMos D1 `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb * - ``d1_mini`` - `WeMos D1 mini `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb Wicked Device diff --git a/docs/platforms/espressif.rst b/docs/platforms/espressif.rst index deaa30c6..c745b855 100644 --- a/docs/platforms/espressif.rst +++ b/docs/platforms/espressif.rst @@ -89,7 +89,7 @@ Adafruit - `Adafruit HUZZAH ESP8266 `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb ESPino @@ -109,7 +109,7 @@ ESPino - `ESPino `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb Espressif @@ -126,19 +126,26 @@ Espressif - RAM * - ``esp01`` - - `Espressif Generic ESP8266 ESP-01 `_ + - `Espressif Generic ESP8266 ESP-01 512k `_ - ESP8266 - 80 MHz - 512 Kb - 80 Kb - * - ``esp12e`` - - `Espressif ESP8266 ESP-12E `_ + * - ``esp01_1m`` + - `Espressif Generic ESP8266 ESP-01 1M `_ - ESP8266 - 80 MHz - 1024 Kb - 80 Kb + * - ``esp12e`` + - `Espressif ESP8266 ESP-12E `_ + - ESP8266 + - 80 MHz + - 4096 Kb + - 80 Kb + NodeMCU ~~~~~~~ @@ -156,7 +163,7 @@ NodeMCU - `NodeMCU 0.9 & 1.0 `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb Olimex @@ -176,7 +183,7 @@ Olimex - `Olimex MOD-WIFI-ESP8266(-DEV) `_ - ESP8266 - 80 MHz - - 1024 Kb + - 2048 Kb - 80 Kb SparkFun @@ -216,7 +223,7 @@ SweetPea - `SweetPea ESP-210 `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb WeMos @@ -236,14 +243,14 @@ WeMos - `WeMos D1 `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb * - ``d1_mini`` - `WeMos D1 mini `_ - ESP8266 - 80 MHz - - 1024 Kb + - 4096 Kb - 80 Kb .. include:: espressif_extra.rst diff --git a/docs/platforms/espressif_extra.rst b/docs/platforms/espressif_extra.rst index d089886f..3747f654 100644 --- a/docs/platforms/espressif_extra.rst +++ b/docs/platforms/espressif_extra.rst @@ -12,6 +12,8 @@ OTA update ---------- +Firstly, please read `What is OTA? How to use it? `_ + There are 2 options: * Directly specify :option:`platformio run --upload-port` in command line diff --git a/examples/espressif/esp8266-webserver/platformio.ini b/examples/espressif/esp8266-webserver/platformio.ini index e25bd946..539a6770 100644 --- a/examples/espressif/esp8266-webserver/platformio.ini +++ b/examples/espressif/esp8266-webserver/platformio.ini @@ -21,6 +21,12 @@ platform = espressif framework = arduino board = esp01 +build_flags = -Wl,-Tesp8266.flash.4m.ld + +[env:esp01_1m] +platform = espressif +framework = arduino +board = esp01_1m [env:nodemcu] platform = espressif diff --git a/platformio/boards/espressif.json b/platformio/boards/espressif.json index 51614a80..80825526 100644 --- a/platformio/boards/espressif.json +++ b/platformio/boards/espressif.json @@ -9,7 +9,7 @@ "variant": "generic" }, "frameworks": ["arduino"], - "name": "Espressif Generic ESP8266 ESP-01", + "name": "Espressif Generic ESP8266 ESP-01 512k", "platform": "espressif", "upload": { "maximum_ram_size": 81920, @@ -18,7 +18,30 @@ "require_upload_port" : true, "speed": 115200 }, - "url": "https://nurdspace.nl/ESP8266", + "url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family", + "vendor": "Espressif" + }, + + "esp01_1m": { + "build": { + "core": "esp8266", + "extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01", + "f_cpu": "80000000L", + "ldscript": "esp8266.flash.1m256.ld", + "mcu": "esp8266", + "variant": "generic" + }, + "frameworks": ["arduino"], + "name": "Espressif Generic ESP8266 ESP-01 1M", + "platform": "espressif", + "upload": { + "maximum_ram_size": 81920, + "maximum_size": 1048576, + "resetmethod": "ck", + "require_upload_port" : true, + "speed": 115200 + }, + "url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family", "vendor": "Espressif" }, @@ -41,7 +64,7 @@ "require_upload_port" : true, "speed": 115200 }, - "url": "https://nurdspace.nl/ESP8266", + "url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family", "vendor": "Espressif" }, diff --git a/platformio/builder/scripts/espressif.py b/platformio/builder/scripts/espressif.py index 6ffa0fb0..8a7097d9 100644 --- a/platformio/builder/scripts/espressif.py +++ b/platformio/builder/scripts/espressif.py @@ -16,6 +16,7 @@ Builder for Espressif MCUs """ +import re import socket from os.path import join @@ -27,9 +28,32 @@ def BeforeUpload(target, source, env): # pylint: disable=W0613,W0621 env.AutodetectUploadPort() +def _get_flash_size(env): + # use board's flash size by default + board_max_size = int( + env.get("BOARD_OPTIONS", {}).get("upload", {}).get("maximum_size", 0)) + + # check if user overrides + for f in env.get("LINKFLAGS", []): + if "-Wl,-T" not in f: + continue + match = re.search(r"-Wl,-T.*\.flash\.(\d+)(m|k).*\.ld", env.subst(f)) + if not match: + continue + if match.group(2) == "k": + board_max_size = int(match.group(1)) * 1024 + elif match.group(2) == "m": + board_max_size = int(match.group(1)) * 1024 * 1024 + + return ("%dK" % (board_max_size / 1024) if board_max_size < 1048576 + else "%dM" % (board_max_size / 1048576)) + + env = DefaultEnvironment() env.Replace( + __get_flash_size=_get_flash_size, + AR="xtensa-lx106-elf-ar", AS="xtensa-lx106-elf-as", CC="xtensa-lx106-elf-gcc", @@ -98,8 +122,6 @@ env.Replace( PROGSUFFIX=".elf" ) -_board_max_rom = int( - env.get("BOARD_OPTIONS", {}).get("upload", {}).get("maximum_size", 0)) env.Append( BUILDERS=dict( ElfToBin=Builder( @@ -111,9 +133,7 @@ env.Append( "-bo", "$TARGET", "-bm", "dio", "-bf", "${BOARD_OPTIONS['build']['f_cpu'][:2]}", - "-bz", - "%dK" % (_board_max_rom / 1024) if _board_max_rom < 1048576 - else "%dM" % (_board_max_rom / 1048576), + "-bz", "${__get_flash_size(__env__)}", "-bs", ".text", "-bp", "4096", "-ec",