Skip to content

Commit 654a9d5

Browse files
authored
Arduino 2.0.2 / IDF 4.4
1 parent 495c689 commit 654a9d5

File tree

16 files changed

+263
-257
lines changed

16 files changed

+263
-257
lines changed

README.md

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Espressif 32: development platform for [PlatformIO](http://platformio.org)
1+
# Tasmota Espressif 32: development platform for [PlatformIO](http://platformio.org)
22

3-
[![Build Status](https://github.com/platformio/platform-espressif32/workflows/Examples/badge.svg)](https://github.com/platformio/platform-espressif32/actions)
3+
[![Examples](https://github.com/Jason2866/platform-espressif32/actions/workflows/examples.yml/badge.svg?branch=idf_v4.4%2Farduino_v2.0.2)](https://github.com/Jason2866/platform-espressif32/actions/workflows/examples.yml)
44

55
Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.
66

@@ -16,16 +16,7 @@ Espressif Systems is a privately held fabless semiconductor company. They provid
1616

1717
```ini
1818
[env:stable]
19-
platform = espressif32
20-
board = ...
21-
...
22-
```
23-
24-
## Development version
25-
26-
```ini
27-
[env:development]
28-
platform = https://github.com/platformio/platform-espressif32.git
19+
platform = todo
2920
board = ...
3021
...
3122
```

boards/esp32-c3-devkitm-1.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"openocd_target": "esp32c3.cfg"
1818
},
1919
"frameworks": [
20+
"arduino",
2021
"espidf"
2122
],
2223
"name": "Espressif ESP32-C3-DevKitM-1",

boards/esp32-s2-kaluga-1.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"openocd_target": "esp32s2.cfg"
2222
},
2323
"frameworks": [
24+
"arduino",
2425
"espidf"
2526
],
2627
"name": "Espressif ESP32-S2-Kaluga-1 Kit",

boards/esp32-s2-saola-1.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"openocd_target": "esp32s2.cfg"
1818
},
1919
"frameworks": [
20+
"arduino",
2021
"espidf"
2122
],
2223
"name": "Espressif ESP32-S2-Saola-1",

builder/frameworks/espidf.py

Lines changed: 93 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,9 @@
5959
)
6060
)
6161

62-
# Legacy toolchains for mixed IDF/Arduino projects
63-
if "arduino" in env.subst("$PIOFRAMEWORK"):
64-
TOOLCHAIN_DIR = platform.get_package_dir("toolchain-xtensa32")
65-
6662
assert os.path.isdir(FRAMEWORK_DIR)
6763
assert os.path.isdir(TOOLCHAIN_DIR)
6864

69-
# Arduino framework as a component is not compatible with ESP-IDF >=4.1
7065
if "arduino" in env.subst("$PIOFRAMEWORK"):
7166
ARDUINO_FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoespressif32")
7267
# Possible package names in 'package@version' format is not compatible with CMake
@@ -341,7 +336,7 @@ def _add_archive(archive_path, link_args):
341336
if fragment.startswith("-l"):
342337
link_args["LIBS"].extend(args)
343338
elif fragment.startswith("-L"):
344-
lib_path = fragment.replace("-L", "").strip()
339+
lib_path = fragment.replace("-L", "").strip().strip('"')
345340
_add_to_libpath(lib_path, link_args)
346341
elif fragment.startswith("-") and not fragment.startswith("-l"):
347342
# CMake mistakenly marks LINKFLAGS as libraries
@@ -455,17 +450,23 @@ def find_framework_service_files(search_path, sdk_config):
455450
os.path.join(
456451
FRAMEWORK_DIR,
457452
"components",
458-
idf_variant,
459-
"ld",
460-
"%s_fragments.lf" % idf_variant,
461-
),
453+
"esp_common",
454+
"common.lf"),
455+
462456
os.path.join(
463457
FRAMEWORK_DIR,
464458
"components",
465-
idf_variant,
466-
"linker.lf",
467-
),
459+
"esp_common",
460+
"soc.lf"),
461+
462+
os.path.join(
463+
FRAMEWORK_DIR,
464+
"components",
465+
"esp_system",
466+
"app.lf"),
467+
468468
os.path.join(FRAMEWORK_DIR, "components", "newlib", "newlib.lf"),
469+
os.path.join(FRAMEWORK_DIR, "components", "newlib", "system_libs.lf"),
469470
]
470471
)
471472

@@ -515,14 +516,63 @@ def generate_project_ld_script(sdk_config, ignore_targets=None):
515516
libraries_list = create_custom_libraries_list(
516517
os.path.join(BUILD_DIR, "ldgen_libraries"), ignore_targets
517518
)
519+
# Rework the memory template linker script, following components/esp_system/ld.cmake
520+
args = {
521+
"preprocess" : os.path.join(
522+
TOOLCHAIN_DIR,
523+
"bin",
524+
env.subst("$CC")),
525+
"ld_output": os.path.join("$BUILD_DIR", "memory.ld"),
526+
"ld_dir": os.path.join(FRAMEWORK_DIR,
527+
"components",
528+
"esp_system",
529+
"ld"),
530+
"ld_input": os.path.join(
531+
FRAMEWORK_DIR,
532+
"components",
533+
"esp_system",
534+
"ld",
535+
idf_variant,
536+
"memory.ld.in",
537+
),
538+
"project_output": os.path.join("$BUILD_DIR", "%s.project.ld" % idf_variant),
539+
"config": os.path.join("$BUILD_DIR", "config"),
540+
"flags" : '-C -P -x c -E -o '
541+
}
542+
543+
cmd = (
544+
'"{preprocess}" {flags} "{ld_output}" -I "{config}" -I "{ld_dir}" "{ld_input}"'
545+
).format(**args)
546+
547+
env.Command(
548+
os.path.join("$BUILD_DIR", "memory.ld"),
549+
os.path.join(
550+
FRAMEWORK_DIR,
551+
"components",
552+
"esp_system",
553+
"ld",
554+
idf_variant,
555+
"memory.ld.in",
556+
),
557+
env.VerboseAction(cmd, "Generating memory linker script $TARGET"),
558+
)
518559

519560
args = {
520561
"script": os.path.join(FRAMEWORK_DIR, "tools", "ldgen", "ldgen.py"),
521562
"config": SDKCONFIG_PATH,
522-
"fragments": " ".join(['"%s"' % f for f in project_files.get("lf_files")]),
563+
"fragments": " ".join(['"%s"' % f for f in project_files.get("lf_files")]),
564+
# "fragments": "".join(['%s;' % f for f in project_files.get("lf_files")]).strip(';'),
523565
"kconfig": os.path.join(FRAMEWORK_DIR, "Kconfig"),
524566
"env_file": os.path.join("$BUILD_DIR", "config.env"),
525567
"libraries_list": libraries_list,
568+
"section_input": os.path.join(
569+
FRAMEWORK_DIR,
570+
"components",
571+
"esp_system",
572+
"ld",
573+
idf_variant,
574+
"sections.ld.in",
575+
),
526576
"objdump": os.path.join(
527577
TOOLCHAIN_DIR,
528578
"bin",
@@ -539,13 +589,14 @@ def generate_project_ld_script(sdk_config, ignore_targets=None):
539589
).format(**args)
540590

541591
return env.Command(
542-
os.path.join("$BUILD_DIR", "%s.project.ld" % idf_variant),
592+
os.path.join("$BUILD_DIR", "sections.ld"),
543593
os.path.join(
544594
FRAMEWORK_DIR,
545595
"components",
546-
idf_variant,
596+
"esp_system",
547597
"ld",
548-
"%s.project.ld.in" % idf_variant,
598+
idf_variant,
599+
"sections.ld.in",
549600
),
550601
env.VerboseAction(cmd, "Generating project linker script $TARGET"),
551602
)
@@ -703,6 +754,20 @@ def find_lib_deps(components_map, elf_config, link_args, ignore_components=None)
703754

704755
return result
705756

757+
def fix_ld_paths(extra_flags):
758+
peripheral_framework_path = os.path.join(FRAMEWORK_DIR, "components", "soc", idf_variant, "ld")
759+
rom_framework_path = os.path.join(FRAMEWORK_DIR, "components", "esp_rom", idf_variant, "ld")
760+
bl_framework_path = os.path.join(FRAMEWORK_DIR, "components", "bootloader", "subproject", "main", "ld", idf_variant)
761+
762+
# ESP linker scripts changed path in ESP-IDF 4.4+, so add missing paths to linker's search path
763+
try:
764+
ld_index = extra_flags.index("%s.peripherals.ld" % idf_variant)
765+
extra_flags[ld_index-1:ld_index-1] = [ "-L", peripheral_framework_path, "-L", rom_framework_path, "-L", bl_framework_path]
766+
except:
767+
print("Error while parsing the flags")
768+
769+
return extra_flags
770+
706771

707772
def build_bootloader():
708773
bootloader_src_dir = os.path.join(
@@ -747,6 +812,7 @@ def build_bootloader():
747812
build_components(bootloader_env, components_map, bootloader_src_dir, "bootloader")
748813
link_args = extract_link_args(elf_config)
749814
extra_flags = filter_args(link_args["LINKFLAGS"], ["-T", "-u"])
815+
extra_flags = fix_ld_paths(extra_flags)
750816
link_args["LINKFLAGS"] = sorted(
751817
list(set(link_args["LINKFLAGS"]) - set(extra_flags))
752818
)
@@ -1061,21 +1127,23 @@ def _get_installed_pip_packages():
10611127

10621128
if not board.get("build.ldscript", ""):
10631129
linker_script = env.Command(
1064-
os.path.join("$BUILD_DIR", "%s_out.ld" % idf_variant),
1130+
os.path.join("$BUILD_DIR", "memory.ld"),
10651131
board.get(
10661132
"build.esp-idf.ldscript",
10671133
os.path.join(
1068-
FRAMEWORK_DIR, "components", idf_variant, "ld", "%s.ld" % idf_variant
1134+
FRAMEWORK_DIR, "components", "esp_system", "ld", idf_variant, "memory.ld.in"
10691135
),
10701136
),
10711137
env.VerboseAction(
1072-
'$CC -I"$BUILD_DIR/config" -C -P -x c -E $SOURCE -o $TARGET',
1138+
'$CC -I"$BUILD_DIR/config" -I"' +
1139+
os.path.join(FRAMEWORK_DIR, "components", "esp_system", "ld") +
1140+
'" -C -P -x c -E $SOURCE -o $TARGET',
10731141
"Generating LD script $TARGET",
10741142
),
10751143
)
10761144

10771145
env.Depends("$BUILD_DIR/$PROGNAME$PROGSUFFIX", linker_script)
1078-
env.Replace(LDSCRIPT_PATH="%s_out.ld" % idf_variant)
1146+
env.Replace(LDSCRIPT_PATH="memory.ld")
10791147

10801148
#
10811149
# Generate partition table
@@ -1257,13 +1325,15 @@ def _get_installed_pip_packages():
12571325
# Extra flags which need to be explicitly specified in LINKFLAGS section because SCons
12581326
# cannot merge them correctly
12591327
extra_flags = filter_args(link_args["LINKFLAGS"], ["-T", "-u"])
1328+
extra_flags = fix_ld_paths(extra_flags)
12601329
link_args["LINKFLAGS"] = sorted(list(set(link_args["LINKFLAGS"]) - set(extra_flags)))
12611330

1262-
# remove the main linker script flags '-T esp32_out.ld'
1331+
# remove the main linker script flags '-T memory.ld' since it already appears later on
12631332
try:
1264-
ld_index = extra_flags.index("%s_out.ld" % idf_variant)
1333+
ld_index = extra_flags.index("memory.ld")
12651334
extra_flags.pop(ld_index)
12661335
extra_flags.pop(ld_index - 1)
1336+
pass
12671337
except:
12681338
print("Warning! Couldn't find the main linker script in the CMake code model.")
12691339

examples/espidf-arduino-blink/platformio.ini

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ framework = arduino, espidf
1313
build_flags =
1414
-D CONFIG_BLINK_GPIO=2
1515
monitor_speed = 115200
16-
platform_packages =
17-
; use a special branch
18-
framework-arduinoespressif32 @ https://github.com/marcovannoord/arduino-esp32.git#idf-release/v4.0
1916

2017
[env:esp32dev]
2118
board = esp32dev

examples/espidf-arduino-blink/sdkconfig.defaults

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@ CONFIG_ARDUINO_EVENT_RUN_CORE1=y
77
CONFIG_ARDUINO_EVENT_RUNNING_CORE=1
88
CONFIG_ARDUINO_UDP_RUN_CORE1=y
99
CONFIG_ARDUINO_UDP_RUNNING_CORE=1
10-
CONFIG_DISABLE_HAL_LOCKS=y
1110
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_ERROR=y
1211
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=1
1312
CONFIG_ARDUHAL_PARTITION_SCHEME_DEFAULT=y
1413
CONFIG_ARDUHAL_PARTITION_SCHEME="default"
1514
CONFIG_AUTOCONNECT_WIFI=y
1615
CONFIG_ARDUINO_SELECTIVE_WiFi=y
1716
CONFIG_MBEDTLS_PSK_MODES=y
18-
CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y
17+
CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y

examples/espidf-arduino-wifiscan/platformio.ini

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111
platform = espressif32
1212
framework = arduino, espidf
1313
monitor_speed = 115200
14-
platform_packages =
15-
; use a special branch
16-
framework-arduinoespressif32 @ https://github.com/marcovannoord/arduino-esp32.git#idf-release/v4.0
1714

1815
[env:esp32dev]
1916
board = esp32dev

examples/espidf-arduino-wifiscan/sdkconfig.defaults

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ CONFIG_ARDUINO_EVENT_RUN_CORE1=y
77
CONFIG_ARDUINO_EVENT_RUNNING_CORE=1
88
CONFIG_ARDUINO_UDP_RUN_CORE1=y
99
CONFIG_ARDUINO_UDP_RUNNING_CORE=1
10-
CONFIG_DISABLE_HAL_LOCKS=y
1110
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_ERROR=y
1211
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=1
1312
CONFIG_ARDUHAL_PARTITION_SCHEME_DEFAULT=y
Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
-----BEGIN CERTIFICATE-----
2-
MIID3DCCA0WgAwIBAgIJAMnlgL1czsmjMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD
3-
VQQGEwJGUjEPMA0GA1UECAwGUmFkaXVzMRIwEAYDVQQHDAlTb21ld2hlcmUxFTAT
4-
BgNVBAoMDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBs
5-
ZS5jb20xJjAkBgNVBAMMHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4X
6-
DTE3MDYwNzA4MDY0OVoXDTI3MDYwNTA4MDY0OVowgZMxCzAJBgNVBAYTAkZSMQ8w
7-
DQYDVQQIDAZSYWRpdXMxEjAQBgNVBAcMCVNvbWV3aGVyZTEVMBMGA1UECgwMRXhh
8-
bXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxlLmNvbTEmMCQG
9-
A1UEAwwdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwgZ8wDQYJKoZIhvcN
10-
AQEBBQADgY0AMIGJAoGBALpWR23fn/TmHxsXsHdrydzPSd17fZkc71WsaicgQR66
11-
1tIVYb22UWGfj9KPM8THMsV74ew4ZkaQ39qvU0iuQIRrKARFHFok+vbaecgWMeWe
12-
vGIqdnmyB9gJYaFOKgtSkfXsu2ddsqdvLYwcDbczrq8X9yEXpN6mnxXeCcPG4F0p
13-
AgMBAAGjggE0MIIBMDAdBgNVHQ4EFgQUgigpdAUpONoDq0pQ3yfxrslCSpcwgcgG
14-
A1UdIwSBwDCBvYAUgigpdAUpONoDq0pQ3yfxrslCSpehgZmkgZYwgZMxCzAJBgNV
15-
BAYTAkZSMQ8wDQYDVQQIDAZSYWRpdXMxEjAQBgNVBAcMCVNvbWV3aGVyZTEVMBMG
16-
A1UECgwMRXhhbXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxl
17-
LmNvbTEmMCQGA1UEAwwdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCCQDJ
18-
5YC9XM7JozAMBgNVHRMEBTADAQH/MDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly93
19-
d3cuZXhhbXBsZS5jb20vZXhhbXBsZV9jYS5jcmwwDQYJKoZIhvcNAQELBQADgYEA
20-
euxOBPInSJRKAIseMxPmAabtAqKNslZSmpG4He3lkKt+HM3jfznUt3psmD7j1hFW
21-
S4l7KXzzajvaGYybDq5N9MqrDjhGn3VXZqOLMUNDL7OQq96TzgqsTBT1dmVSbNlt
22-
PQgiAeKAk3tmH4lRRi9MTBSyJ6I92JYcS5H6Bs4ZwCc=
2+
MIICDzCCAbSgAwIBAgIIAbOUoVFDz/QwDAYIKoZIzj0EAwIFADBcMRAwDgYDVQQD
3+
EwdjZi1yb290MRQwEgYDVQQLEwtDYWxpZm9ybml1bTEUMBIGA1UEChMLRWNsaXBz
4+
ZSBJb1QxDzANBgNVBAcTBk90dGF3YTELMAkGA1UEBhMCQ0EwHhcNMjAxMTExMTAz
5+
MDMzWhcNMjExMTExMTAzMDMzWjBaMQ4wDAYDVQQDEwVjZi1jYTEUMBIGA1UECxML
6+
Q2FsaWZvcm5pdW0xFDASBgNVBAoTC0VjbGlwc2UgSW9UMQ8wDQYDVQQHEwZPdHRh
7+
d2ExCzAJBgNVBAYTAkNBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7/3EXOZn
8+
GZXNEIj7LuQAMZ8lfRYSCnpME1TBjKjZPtVeztLtGWgkkLvIX11pAJcBh51cpi7Z
9+
fQtGpVE9CLOh6aNgMF4wHQYDVR0OBBYEFEvf57UcJhYYkx14twkeitd691fVMAsG
10+
A1UdDwQEAwIBBjAPBgNVHRMECDAGAQH/AgEBMB8GA1UdIwQYMBaAFAsi3KbVERiK
11+
JzFCfC/GVrYksGzEMAwGCCqGSM49BAMCBQADRwAwRAIgc5nVF/5Pip0XB17IZXqi
12+
V84FXanWdn9Z0SiPdpOgvZMCIH13vL9tkCCjPN3tg3TYRY/bzyGohFGBcTrrEtUr
13+
rVIm
14+
-----END CERTIFICATE-----
15+
-----BEGIN CERTIFICATE-----
16+
MIIB4DCCAYWgAwIBAgIIQR8ro8AQ02AwDAYIKoZIzj0EAwIFADBcMRAwDgYDVQQD
17+
EwdjZi1yb290MRQwEgYDVQQLEwtDYWxpZm9ybml1bTEUMBIGA1UEChMLRWNsaXBz
18+
ZSBJb1QxDzANBgNVBAcTBk90dGF3YTELMAkGA1UEBhMCQ0EwHhcNMjAxMTExMTAz
19+
MDMyWhcNMjExMTExMTAzMDMyWjBcMRAwDgYDVQQDEwdjZi1yb290MRQwEgYDVQQL
20+
EwtDYWxpZm9ybml1bTEUMBIGA1UEChMLRWNsaXBzZSBJb1QxDzANBgNVBAcTBk90
21+
dGF3YTELMAkGA1UEBhMCQ0EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATZ1BRM
22+
T1//Fzh9sneRZNwS4kgCxN1PvgwT271qCpYqyxnjLEa38AP1IAanhpiD/OkVc0Zd
23+
7NgDPCw7n94EULMyoy8wLTAdBgNVHQ4EFgQUCyLcptURGIonMUJ8L8ZWtiSwbMQw
24+
DAYDVR0TBAUwAwEB/zAMBggqhkjOPQQDAgUAA0cAMEQCIAdLEgcUWdpAl9jwdJiz
25+
/cHW7/CBIWEvqiQfzE+XLyLOAiAvuxSdOtSDjh2aC5qEjUCH8CSKCxWB74j23tmp
26+
aqPH4A==
2327
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)