diff --git a/boards/esp320.json b/boards/esp320.json index 86fc80fb3..979f464a4 100644 --- a/boards/esp320.json +++ b/boards/esp320.json @@ -15,6 +15,7 @@ ], "name": "Electronic SweetPeas ESP320", "upload": { + "flash_size": "4MB", "maximum_ram_size": 294912, "maximum_size": 1044464, "require_upload_port": true, diff --git a/boards/esp32dev.json b/boards/esp32dev.json index 1722b7458..a33c37cd0 100644 --- a/boards/esp32dev.json +++ b/boards/esp32dev.json @@ -15,7 +15,8 @@ ], "name": "Espressif ESP32 Dev Module", "upload": { - "maximum_ram_size": 114688, + "flash_size": "4MB", + "maximum_ram_size": 294912, "maximum_size": 1044464, "require_upload_port": true, "resetmethod": "nodemcu", diff --git a/boards/espea32.json b/boards/espea32.json index 95ef36873..bf1421980 100644 --- a/boards/espea32.json +++ b/boards/espea32.json @@ -15,6 +15,7 @@ ], "name": "April Brother ESPea32", "upload": { + "flash_size": "4MB", "maximum_ram_size": 294912, "maximum_size": 1044464, "require_upload_port": true, diff --git a/boards/hornbill32dev.json b/boards/hornbill32dev.json new file mode 100644 index 000000000..f8890c79a --- /dev/null +++ b/boards/hornbill32dev.json @@ -0,0 +1,28 @@ +{ + "build": { + "core": "esp32", + "extra_flags": "-DESP32_DEV -DHORNBILL_ESP32_DEV", + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "dio", + "ldscript": "esp32_out.ld", + "mcu": "esp32", + "variant": "hornbill32dev" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Hornbill ESP32 Dev", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 294912, + "maximum_size": 1044464, + "require_upload_port": true, + "resetmethod": "nodemcu", + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "https://hackaday.io/project/18997-hornbill", + "vendor": "Hornbill" +} diff --git a/boards/hornbill32minima.json b/boards/hornbill32minima.json new file mode 100644 index 000000000..0eed707c8 --- /dev/null +++ b/boards/hornbill32minima.json @@ -0,0 +1,28 @@ +{ + "build": { + "core": "esp32", + "extra_flags": "-DESP32_DEV -DHORNBILL_ESP32_MINIMA", + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "dio", + "ldscript": "esp32_out.ld", + "mcu": "esp32", + "variant": "hornbill32minima" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Hornbill ESP32 Minima", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 294912, + "maximum_size": 1044464, + "require_upload_port": true, + "resetmethod": "nodemcu", + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "https://hackaday.io/project/18997-hornbill", + "vendor": "Hornbill" +} diff --git a/boards/lolin32.json b/boards/lolin32.json index 13af5d2f2..a0c25f5d9 100644 --- a/boards/lolin32.json +++ b/boards/lolin32.json @@ -15,6 +15,7 @@ ], "name": "WEMOS LoLin32", "upload": { + "flash_size": "4MB", "maximum_ram_size": 294912, "maximum_size": 1044464, "require_upload_port": true, diff --git a/boards/nano32.json b/boards/nano32.json index dffa41cd4..547bfd02c 100644 --- a/boards/nano32.json +++ b/boards/nano32.json @@ -17,6 +17,7 @@ ], "name": "MakerAsia Nano32", "upload": { + "flash_size": "4MB", "maximum_ram_size": 294912, "maximum_size": 1044464, "require_upload_port": true, diff --git a/boards/node32s.json b/boards/node32s.json index 35d8ae4b9..c7731e41d 100644 --- a/boards/node32s.json +++ b/boards/node32s.json @@ -15,6 +15,7 @@ ], "name": "Node32s", "upload": { + "flash_size": "4MB", "maximum_ram_size": 114688, "maximum_size": 1044464, "require_upload_port": true, diff --git a/boards/quantum.json b/boards/quantum.json index 5da5cd503..1edb1c343 100644 --- a/boards/quantum.json +++ b/boards/quantum.json @@ -15,6 +15,7 @@ ], "name": "Noduino Quantum", "upload": { + "flash_size": "16MB", "maximum_ram_size": 294912, "maximum_size": 1044464, "require_upload_port": true, diff --git a/builder/frameworks/arduino.py b/builder/frameworks/arduino.py index 44f1f1eab..713bc8a4d 100644 --- a/builder/frameworks/arduino.py +++ b/builder/frameworks/arduino.py @@ -11,7 +11,6 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - """ Arduino @@ -22,91 +21,10 @@ http://arduino.cc/en/Reference/HomePage """ -from os.path import isdir, join - -from SCons.Script import DefaultEnvironment - -env = DefaultEnvironment() -platform = env.PioPlatform() - -FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoespressif32") -assert isdir(FRAMEWORK_DIR) - -env.Prepend( - CPPDEFINES=[ - ("ARDUINO", 10610), - "ARDUINO_ARCH_ESP32" - ], - - CPPPATH=[ - join(FRAMEWORK_DIR, "tools", "sdk", "include", "config"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "bt"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "driver"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp32"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "ethernet"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "freertos"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "log"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "lwip"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "newlib"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "nvs_flash"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "spi_flash"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "tcpip_adapter"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "vfs"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "expat"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "json"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "mbedtls"), - join(FRAMEWORK_DIR, "tools", "sdk", "include", "nghttp"), - join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core")) - ], - LIBPATH=[ - join(FRAMEWORK_DIR, "tools", "sdk", "lib"), - join(FRAMEWORK_DIR, "tools", "sdk", "ld"), - ], - LIBS=[ - "app_update", "bt", "btdm_app", "c", "coexist", "core", "driver", - "esp32", "ethernet", "expat", "freertos", "g", "hal", "json", "log", - "lwip", "m", "mbedtls", "net80211", "newlib", "nghttp", "nvs_flash", - "openssl", "phy", "pp", "rtc", "smartconfig", "spi_flash", - "tcpip_adapter", "ulp", "vfs", "wpa", "wpa2", "wpa_supplicant", "wps", - "xtensa-debug-module" - ] -) - -env.Append( - LIBSOURCE_DIRS=[ - join(FRAMEWORK_DIR, "libraries") - ], - - LINKFLAGS=[ - "-T", "esp32.common.ld", - "-T", "esp32.rom.ld", - "-T", "esp32.peripherals.ld" - ] -) - -# -# Target: Build Core Library -# - -libs = [] - -if "build.variant" in env.BoardConfig(): - env.Append( - CPPPATH=[ - join(FRAMEWORK_DIR, "variants", - env.BoardConfig().get("build.variant")) - ] - ) - libs.append(env.BuildLibrary( - join("$BUILD_DIR", "FrameworkArduinoVariant"), - join(FRAMEWORK_DIR, "variants", env.BoardConfig().get("build.variant")) - )) - -envsafe = env.Clone() +from os.path import join -libs.append(envsafe.BuildLibrary( - join("$BUILD_DIR", "FrameworkArduino"), - join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core")) -)) +from SCons.Script import DefaultEnvironment, SConscript -env.Prepend(LIBS=libs) +SConscript( + join(DefaultEnvironment().PioPlatform().get_package_dir( + "framework-arduinoespressif32"), "tools", "platformio-build.py")) diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index 44ab9141c..26d0ad45f 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -30,20 +30,19 @@ platform = env.PioPlatform() FRAMEWORK_DIR = platform.get_package_dir("framework-espidf") +assert FRAMEWORK_DIR and isdir(FRAMEWORK_DIR) FRAMEWORK_VERSION = platform.get_package_version( "framework-espidf") -assert isdir(FRAMEWORK_DIR) def build_espidf_bootloader(): envsafe = env.Clone() - framework_dir = env.subst("$ESPIDF_DIR") envsafe.Replace( CPPDEFINES=["ESP_PLATFORM", ("BOOTLOADER_BUILD", 1)], LIBPATH=[ - join(framework_dir, "components", "esp32", "ld"), - join(framework_dir, "components", "bootloader", "src", "main") + join(FRAMEWORK_DIR, "components", "esp32", "ld"), + join(FRAMEWORK_DIR, "components", "bootloader", "src", "main") ], LINKFLAGS=[ @@ -64,7 +63,7 @@ def build_espidf_bootloader(): LIBS=[ envsafe.BuildLibrary( join("$BUILD_DIR", "bootloaderLog"), - join(framework_dir, "components", "log") + join(FRAMEWORK_DIR, "components", "log") ), "gcc" ] ) @@ -73,10 +72,11 @@ def build_espidf_bootloader(): join("$BUILD_DIR", "bootloader.elf"), envsafe.CollectBuildFiles( join("$BUILD_DIR", "bootloader"), - join(framework_dir, "components", "bootloader", "src", "main") + join(FRAMEWORK_DIR, "components", "bootloader", "src", "main") ) ) + env.Prepend( CPPPATH=[ join("$PROJECTSRC_DIR"), @@ -128,6 +128,12 @@ def build_espidf_bootloader(): "-T", "esp32.rom.ld", "-T", "esp32.peripherals.ld" ], + + UPLOADERFLAGS=[ + "0x1000", join("$BUILD_DIR", "bootloader.bin"), + "0x4000", join("$BUILD_DIR", "partitions_table.bin"), + "0x10000" + ] ) # @@ -135,11 +141,11 @@ def build_espidf_bootloader(): # partition_table = env.Command( - join(env.subst("$BUILD_DIR"), "partitions_table.bin"), - join("$ESPIDF_DIR", "components", + join("$BUILD_DIR", "partitions_table.bin"), + join(FRAMEWORK_DIR, "components", "partition_table", "partitions_singleapp.csv"), '"$PYTHONEXE" "%s" -q $SOURCE $TARGET' % join( - "$ESPIDF_DIR", "components", "partition_table", "gen_esp32part.py") + FRAMEWORK_DIR, "components", "partition_table", "gen_esp32part.py") ) env.Depends("$BUILD_DIR/$PROGNAME$PROGSUFFIX", partition_table) @@ -151,7 +157,7 @@ def build_espidf_bootloader(): linker_script = env.Command( join("$BUILD_DIR", "esp32_out.ld"), - join("$ESPIDF_DIR", "components", "esp32", "ld", "esp32.ld"), + join(FRAMEWORK_DIR, "components", "esp32", "ld", "esp32.ld"), "$CC -I$PROJECTSRC_DIR -C -P -x c -E $SOURCE -o $TARGET" ) diff --git a/builder/frameworks/simba.py b/builder/frameworks/simba.py index 2478bd2db..c854e3805 100644 --- a/builder/frameworks/simba.py +++ b/builder/frameworks/simba.py @@ -54,5 +54,15 @@ def VariantDirWrap(env, variant_dir, src_dir, duplicate=False): PLATFORMFW_DIR=env.PioPlatform().get_package_dir("framework-simba") ) +env.Append( + UPLOADERFLAGS=[ + "0x1000", join("$PLATFORMFW_DIR", "3pp", "esp32", + "bin", "bootloader.bin"), + "0x4000", join("$PLATFORMFW_DIR", "3pp", "esp32", + "bin", "partitions_singleapp.bin"), + "0x10000" + ] +) + SConscript( [env.subst(join("$PLATFORMFW_DIR", "make", "platformio.sconscript"))]) diff --git a/builder/main.py b/builder/main.py index b07d790fa..68c1c85bb 100644 --- a/builder/main.py +++ b/builder/main.py @@ -45,7 +45,7 @@ def _get_board_f_flash(env): CFLAGS=["-std=gnu99"], CCFLAGS=[ - "-Og", + "%s" % "-Os" if env.subst("$PIOFRAMEWORK") == "arduino" else "-Og", "-g3", "-nostdlib", "-Wpointer-arith", @@ -54,14 +54,14 @@ def _get_board_f_flash(env): "-Wno-error=unused-variable", "-mlongcalls", "-ffunction-sections", - "-fdata-sections" + "-fdata-sections", + "-fstrict-volatile-bitfields" ], CXXFLAGS=[ "-fno-rtti", "-fno-exceptions", - "-std=gnu++11", - "-fstrict-volatile-bitfields" + "-std=gnu++11" ], CPPDEFINES=[ @@ -80,15 +80,6 @@ def _get_board_f_flash(env): "-Wl,--gc-sections" ], - # - # Packages - # - - FRAMEWORK_ARDUINOESP32_DIR=platform.get_package_dir( - "framework-arduinoespressif32"), - ESPIDF_DIR=platform.get_package_dir("framework-espidf"), - FRAMEWORK_SIMBA_DIR=platform.get_package_dir("framework-simba"), - # # Upload # @@ -102,7 +93,8 @@ def _get_board_f_flash(env): "--baud", "$UPLOAD_SPEED", "write_flash", "-z", "--flash_mode", "$BOARD_FLASH_MODE", - "--flash_freq", "${__get_board_f_flash(__env__)}" + "--flash_freq", "${__get_board_f_flash(__env__)}", + "--flash_size", env.BoardConfig().get("upload.flash_size", "4MB") ], UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS $SOURCE', @@ -111,36 +103,8 @@ def _get_board_f_flash(env): PROGSUFFIX=".elf" ) -if env.subst("$PIOFRAMEWORK") == "arduino": - env.Append( - UPLOADERFLAGS=[ - "0x1000", '"%s"' % join("$FRAMEWORK_ARDUINOESP32_DIR", "tools", - "sdk", "bin", "bootloader.bin"), - "0x4000", '"%s"' % join("$FRAMEWORK_ARDUINOESP32_DIR", "tools", - "sdk", "bin", "partitions_singleapp.bin"), - "0x10000" - ] - ) -if env.subst("$PIOFRAMEWORK") == "espidf": - env.Append( - UPLOADERFLAGS=[ - "0x1000", join("$BUILD_DIR", "bootloader.bin"), - "0x4000", join("$BUILD_DIR", "partitions_table.bin"), - "0x10000" - ] - ) -if env.subst("$PIOFRAMEWORK") == "simba": - env.Append( - UPLOADERFLAGS=[ - "0x1000", join("$FRAMEWORK_SIMBA_DIR", "3pp", "esp32", - "bin", "bootloader.bin"), - "0x4000", join("$FRAMEWORK_SIMBA_DIR", "3pp", "esp32", - "bin", "partitions_singleapp.bin"), - "0x10000" - ] - ) - +# Clone actual CCFLAGS to ASFLAGS env.Append( ASFLAGS=env.get("CCFLAGS", [])[:] ) @@ -158,6 +122,8 @@ def _get_board_f_flash(env): "elf2image", "--flash_mode", "$BOARD_FLASH_MODE", "--flash_freq", "${__get_board_f_flash(__env__)}", + "--flash_size", + env.BoardConfig().get("upload.flash_size", "4MB"), "-o", "$TARGET", "$SOURCES" ]), "Building $TARGET"), suffix=".bin" diff --git a/platform.json b/platform.json index 4de4919df..60c110163 100644 --- a/platform.json +++ b/platform.json @@ -12,7 +12,7 @@ "type": "git", "url": "https://github.com/platformio/platform-espressif32.git" }, - "version": "0.4.0", + "version": "0.5.0", "packageRepositories": [ "https://dl.bintray.com/platformio/dl-packages/manifest.json", "https://sourceforge.net/projects/platformio-storage/files/packages/manifest.json/download", @@ -41,12 +41,12 @@ "packages": { "toolchain-xtensa32": { "type": "toolchain", - "version": "~1.40805.0" + "version": "~1.50200.0" }, "framework-arduinoespressif32": { "type": "framework", "optional": true, - "version": "~1.0.2" + "version": "~1.1.1" }, "framework-espidf": { "type": "framework", @@ -65,7 +65,7 @@ }, "tool-esptoolpy": { "type": "uploader", - "version": "~1.0.0" + "version": "~1.20000.0" } } }