diff --git a/boards/esp-wrover-kit.json b/boards/esp-wrover-kit.json index 107cf9b..e05ea81 100644 --- a/boards/esp-wrover-kit.json +++ b/boards/esp-wrover-kit.json @@ -33,7 +33,7 @@ "name": "Espressif ESP-WROVER-KIT", "upload": { "flash_size": "4MB", - "maximum_ram_size": 294912, + "maximum_ram_size": 4194304, "maximum_size": 1310720, "require_upload_port": true, "speed": 115200, diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index b5b6a21..937eb7e 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -22,7 +22,7 @@ https://github.com/espressif/esp-idf from glob import glob from os import listdir, walk -from os.path import basename, isdir, isfile, join +from os.path import abspath, basename, isdir, isfile, join from shutil import copy import sys @@ -322,13 +322,13 @@ if "PIO_FRAMEWORK_ESP_IDF_ENABLE_EXCEPTIONS" in env.Flatten( ("CONFIG_CXX_EXCEPTIONS", 1), ("CONFIG_CXX_EXCEPTIONS_EMG_POOL_SIZE", 0) ], - + CXXFLAGS=["-fexceptions"] ) else: env.Append(LINKFLAGS=["-u", "__cxx_fatal_exception"]) - + # # Handle missing sdkconfig.h # @@ -365,8 +365,9 @@ fwpartitions_dir = join(FRAMEWORK_DIR, "components", "partition_table") partitions_csv = env.BoardConfig().get("build.partitions", "partitions_singleapp.csv") env.Replace( - PARTITIONS_TABLE_CSV=join(fwpartitions_dir, partitions_csv) if isfile( - join(fwpartitions_dir, partitions_csv)) else partitions_csv) + PARTITIONS_TABLE_CSV=abspath( + join(fwpartitions_dir, partitions_csv) if isfile( + join(fwpartitions_dir, partitions_csv)) else partitions_csv)) partition_table = env.Command( join("$BUILD_DIR", "partitions.bin"), diff --git a/builder/main.py b/builder/main.py index f4b3793..e11e958 100644 --- a/builder/main.py +++ b/builder/main.py @@ -19,11 +19,11 @@ from os.path import isfile, join from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, Builder, Default, DefaultEnvironment) - # # Helpers # + def _get_board_f_flash(env): frequency = env.subst("$BOARD_F_FLASH") frequency = str(frequency).replace("L", "") @@ -40,7 +40,9 @@ def _get_board_flash_mode(env): def _parse_size(value): - if value.isdigit(): + if isinstance(value, int): + return value + elif value.isdigit(): return int(value) elif value.startswith("0x"): return int(value, 16) @@ -59,22 +61,26 @@ def _parse_partitions(env): return result = [] + next_offset = 0 with open(partitions_csv) as fp: for line in fp.readlines(): line = line.strip() if not line or line.startswith("#"): continue - tokens = [t.strip() for t in line.split(",") if t.strip()] + tokens = [t.strip() for t in line.split(",")] if len(tokens) < 5: continue - result.append({ + partition = { "name": tokens[0], "type": tokens[1], "subtype": tokens[2], - "offset": tokens[3], + "offset": tokens[3] or next_offset, "size": tokens[4], "flags": tokens[5] if len(tokens) > 5 else None - }) + } + result.append(partition) + next_offset = (_parse_size(partition['offset']) + + _parse_size(partition['size'])) return result @@ -93,6 +99,7 @@ def _update_max_upload_size(env): # SPIFFS helpers # + def fetch_spiffs_size(env): spiffs = None for p in _parse_partitions(env): @@ -121,7 +128,6 @@ platform = env.PioPlatform() env.Replace( __get_board_f_flash=_get_board_f_flash, __get_board_flash_mode=_get_board_flash_mode, - AR="xtensa-esp32-elf-ar", AS="xtensa-esp32-elf-as", CC="xtensa-esp32-elf-gcc", @@ -131,54 +137,27 @@ env.Replace( platform.get_package_dir("tool-esptoolpy") or "", "esptool.py"), RANLIB="xtensa-esp32-elf-ranlib", SIZETOOL="xtensa-esp32-elf-size", - ARFLAGS=["rc"], - ASFLAGS=["-x", "assembler-with-cpp"], - CFLAGS=["-std=gnu99"], - CCFLAGS=[ - "-Os", - "-Wall", - "-nostdlib", - "-Wpointer-arith", - "-Wno-error=unused-but-set-variable", - "-Wno-error=unused-variable", - "-mlongcalls", - "-ffunction-sections", - "-fdata-sections", + "-Os", "-Wall", "-nostdlib", "-Wpointer-arith", + "-Wno-error=unused-but-set-variable", "-Wno-error=unused-variable", + "-mlongcalls", "-ffunction-sections", "-fdata-sections", "-fstrict-volatile-bitfields" ], - - CXXFLAGS=[ - "-fno-rtti", - "-fno-exceptions", - "-std=gnu++11" - ], - + CXXFLAGS=["-fno-rtti", "-fno-exceptions", "-std=gnu++11"], CPPDEFINES=[ - "ESP32", - "ESP_PLATFORM", - ("F_CPU", "$BOARD_F_CPU"), - "HAVE_CONFIG_H", + "ESP32", "ESP_PLATFORM", ("F_CPU", "$BOARD_F_CPU"), "HAVE_CONFIG_H", ("MBEDTLS_CONFIG_FILE", '\\"mbedtls/esp_config.h\\"') ], - LINKFLAGS=[ - "-nostdlib", - "-Wl,-static", - "-u", "call_user_start_cpu0", - "-Wl,--undefined=uxTopUsedPriority", - "-Wl,--gc-sections" + "-nostdlib", "-Wl,-static", "-u", "call_user_start_cpu0", + "-Wl,--undefined=uxTopUsedPriority", "-Wl,--gc-sections" ], - - MKSPIFFSTOOL="mkspiffs_${PIOPLATFORM}_${PIOFRAMEWORK}", SIZEPRINTCMD='$SIZETOOL -B -d $SOURCES', - - PROGSUFFIX=".elf" -) + PROGSUFFIX=".elf") # Allow user to override via pre:script if env.get("PROGNAME", "program") == "program": @@ -187,38 +166,24 @@ if env.get("PROGNAME", "program") == "program": env.Append( # Clone actual CCFLAGS to ASFLAGS ASFLAGS=env.get("CCFLAGS", [])[:], - BUILDERS=dict( ElfToBin=Builder( action=env.VerboseAction(" ".join([ - '"$PYTHONEXE" "$OBJCOPY"', - "--chip", "esp32", - "elf2image", - "--flash_mode", "$BOARD_FLASH_MODE", - "--flash_freq", "${__get_board_f_flash(__env__)}", - "--flash_size", - env.BoardConfig().get("upload.flash_size", "detect"), - "-o", "$TARGET", "$SOURCES" + '"$PYTHONEXE" "$OBJCOPY"', "--chip", "esp32", "elf2image", + "--flash_mode", "$BOARD_FLASH_MODE", "--flash_freq", + "${__get_board_f_flash(__env__)}", "--flash_size", + env.BoardConfig().get("upload.flash_size", + "detect"), "-o", "$TARGET", "$SOURCES" ]), "Building $TARGET"), - suffix=".bin" - ), - + suffix=".bin"), DataToBin=Builder( action=env.VerboseAction(" ".join([ - '"$MKSPIFFSTOOL"', - "-c", "$SOURCES", - "-p", "$SPIFFS_PAGE", - "-b", "$SPIFFS_BLOCK", - "-s", "$SPIFFS_SIZE", - "$TARGET" + '"$MKSPIFFSTOOL"', "-c", "$SOURCES", "-p", "$SPIFFS_PAGE", + "-b", "$SPIFFS_BLOCK", "-s", "$SPIFFS_SIZE", "$TARGET" ]), "Building SPIFFS image from '$SOURCES' directory to $TARGET"), emitter=__fetch_spiffs_size, source_factory=env.Dir, - suffix=".bin" - ) - ) -) - + suffix=".bin"))) # # Target: Build executable and linkable firmware or SPIFFS image @@ -252,9 +217,9 @@ if "upload" in COMMAND_LINE_TARGETS: # Target: Print binary size # -target_size = env.Alias( - "size", target_elf, - env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE")) +target_size = env.Alias("size", target_elf, + env.VerboseAction("$SIZEPRINTCMD", + "Calculating size $SOURCE")) AlwaysBuild(target_size) # @@ -269,27 +234,19 @@ if upload_protocol == "esptool": env.Replace( UPLOADER=join( platform.get_package_dir("tool-esptoolpy") or "", "esptool.py"), - UPLOADEROTA=join(platform.get_package_dir("tool-espotapy") or "", - "espota.py"), + UPLOADEROTA=join( + platform.get_package_dir("tool-espotapy") or "", "espota.py"), UPLOADERFLAGS=[ - "--chip", "esp32", - "--port", '"$UPLOAD_PORT"', - "--baud", "$UPLOAD_SPEED", - "--before", "default_reset", - "--after", "hard_reset", - "write_flash", "-z", - "--flash_mode", "${__get_board_flash_mode(__env__)}", - "--flash_freq", "${__get_board_f_flash(__env__)}", - "--flash_size", "detect" + "--chip", "esp32", "--port", '"$UPLOAD_PORT"', "--baud", + "$UPLOAD_SPEED", "--before", "default_reset", "--after", + "hard_reset", "write_flash", "-z", "--flash_mode", + "${__get_board_flash_mode(__env__)}", "--flash_freq", + "${__get_board_f_flash(__env__)}", "--flash_size", "detect" ], UPLOADEROTAFLAGS=[ - "--debug", - "--progress", - "-i", "$UPLOAD_PORT", - "-p", "3232", + "--debug", "--progress", "-i", "$UPLOAD_PORT", "-p", "3232", "$UPLOAD_FLAGS" ], - UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS 0x10000 $SOURCE', UPLOADOTACMD='"$PYTHONEXE" "$UPLOADEROTA" $UPLOADEROTAFLAGS -f $SOURCE', ) @@ -309,38 +266,30 @@ if upload_protocol == "esptool": if "uploadfs" in COMMAND_LINE_TARGETS: env.Replace( UPLOADERFLAGS=[ - "--chip", "esp32", - "--port", '"$UPLOAD_PORT"', - "--baud", "$UPLOAD_SPEED", - "--before", "default_reset", - "--after", "hard_reset", - "write_flash", "-z", - "--flash_mode", "$BOARD_FLASH_MODE", - "--flash_size", "detect", - "$SPIFFS_START" + "--chip", "esp32", "--port", '"$UPLOAD_PORT"', "--baud", + "$UPLOAD_SPEED", "--before", "default_reset", "--after", + "hard_reset", "write_flash", "-z", "--flash_mode", + "$BOARD_FLASH_MODE", "--flash_size", "detect", "$SPIFFS_START" ], UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS $SOURCE', ) env.Append(UPLOADEROTAFLAGS=["-s"]) upload_actions = [ - env.VerboseAction( - env.AutodetectUploadPort, "Looking for upload port..."), + env.VerboseAction(env.AutodetectUploadPort, + "Looking for upload port..."), env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE") ] elif upload_protocol in debug_tools: openocd_dir = platform.get_package_dir("tool-openocd-esp32") or "" uploader_flags = ["-s", openocd_dir] - uploader_flags.extend(debug_tools.get(upload_protocol).get( - "server").get("arguments", [])) - uploader_flags.extend([ - "-c", 'program_esp32 "{{$SOURCE}}" 0x10000 verify' - ]) + uploader_flags.extend( + debug_tools.get(upload_protocol).get("server").get("arguments", [])) + uploader_flags.extend(["-c", 'program_esp32 "{{$SOURCE}}" 0x10000 verify']) for image in env.get("FLASH_EXTRA_IMAGES", []): - uploader_flags.extend([ - "-c", 'program_esp32 "%s" %s verify' % (image[1], image[0]) - ]) + uploader_flags.extend( + ["-c", 'program_esp32 "%s" %s verify' % (image[1], image[0])]) uploader_flags.extend(["-c", "reset run; shutdown"]) for i, item in enumerate(uploader_flags): if "$PACKAGE_DIR" in item: diff --git a/examples/espidf-ble-adv/platformio.ini b/examples/espidf-ble-adv/platformio.ini index 2461183..f569580 100644 --- a/examples/espidf-ble-adv/platformio.ini +++ b/examples/espidf-ble-adv/platformio.ini @@ -12,15 +12,18 @@ platform = espressif32 framework = espidf board = nano32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:espea32] platform = espressif32 framework = espidf board = espea32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:esp32dev] platform = espressif32 framework = espidf board = esp32dev build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 diff --git a/examples/espidf-coap-server/platformio.ini b/examples/espidf-coap-server/platformio.ini index 2461183..f569580 100644 --- a/examples/espidf-coap-server/platformio.ini +++ b/examples/espidf-coap-server/platformio.ini @@ -12,15 +12,18 @@ platform = espressif32 framework = espidf board = nano32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:espea32] platform = espressif32 framework = espidf board = espea32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:esp32dev] platform = espressif32 framework = espidf board = esp32dev build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 diff --git a/examples/espidf-exceptions/platformio.ini b/examples/espidf-exceptions/platformio.ini index 6ace92b..151a124 100644 --- a/examples/espidf-exceptions/platformio.ini +++ b/examples/espidf-exceptions/platformio.ini @@ -12,15 +12,18 @@ platform = espressif32 framework = espidf board = esp32dev build_flags = -DPIO_FRAMEWORK_ESP_IDF_ENABLE_EXCEPTIONS +monitor_speed = 115200 [env:quantum] platform = espressif32 framework = espidf board = quantum build_flags = -DPIO_FRAMEWORK_ESP_IDF_ENABLE_EXCEPTIONS +monitor_speed = 115200 [env:lolin32] platform = espressif32 framework = espidf board = lolin32 build_flags = -DPIO_FRAMEWORK_ESP_IDF_ENABLE_EXCEPTIONS +monitor_speed = 115200 diff --git a/examples/espidf-hello-world/platformio.ini b/examples/espidf-hello-world/platformio.ini index 535432e..8b15518 100644 --- a/examples/espidf-hello-world/platformio.ini +++ b/examples/espidf-hello-world/platformio.ini @@ -11,13 +11,16 @@ platform = espressif32 framework = espidf board = esp32dev +monitor_speed = 115200 [env:quantum] platform = espressif32 framework = espidf board = quantum +monitor_speed = 115200 [env:lolin32] platform = espressif32 framework = espidf board = lolin32 +monitor_speed = 115200 diff --git a/examples/espidf-http-request/platformio.ini b/examples/espidf-http-request/platformio.ini index e8818f5..920a3dd 100644 --- a/examples/espidf-http-request/platformio.ini +++ b/examples/espidf-http-request/platformio.ini @@ -12,15 +12,18 @@ platform = espressif32 framework = espidf board = nano32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:espea32] platform = espressif32 framework = espidf board = espea32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:esp320] platform = espressif32 framework = espidf board = esp320 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 diff --git a/examples/espidf-peripherals-uart/platformio.ini b/examples/espidf-peripherals-uart/platformio.ini index 2461183..f569580 100644 --- a/examples/espidf-peripherals-uart/platformio.ini +++ b/examples/espidf-peripherals-uart/platformio.ini @@ -12,15 +12,18 @@ platform = espressif32 framework = espidf board = nano32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:espea32] platform = espressif32 framework = espidf board = espea32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:esp32dev] platform = espressif32 framework = espidf board = esp32dev build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 diff --git a/examples/espidf-storage-sdcard/platformio.ini b/examples/espidf-storage-sdcard/platformio.ini index 2461183..f569580 100644 --- a/examples/espidf-storage-sdcard/platformio.ini +++ b/examples/espidf-storage-sdcard/platformio.ini @@ -12,15 +12,18 @@ platform = espressif32 framework = espidf board = nano32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:espea32] platform = espressif32 framework = espidf board = espea32 build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 [env:esp32dev] platform = espressif32 framework = espidf board = esp32dev build_flags = -DCONFIG_WIFI_SSID=\"ESP_AP\" -DCONFIG_WIFI_PASSWORD=\"MYPASS\" +monitor_speed = 115200 diff --git a/platform.json b/platform.json index fff8d46..b109632 100644 --- a/platform.json +++ b/platform.json @@ -12,7 +12,7 @@ "type": "git", "url": "https://github.com/platformio/platform-espressif32.git" }, - "version": "1.0.0", + "version": "1.0.1", "packageRepositories": [ "https://dl.bintray.com/platformio/dl-packages/manifest.json", "http://dl.platformio.org/packages/manifest.json", @@ -45,7 +45,7 @@ "framework-arduinoespressif32": { "type": "framework", "optional": true, - "version": "~1.5.0" + "version": "~1.5.3" }, "framework-espidf": { "type": "framework",