18
18
import json
19
19
import re
20
20
import requests
21
+ from os .path import isfile , isdir , join
21
22
22
23
from platformio .public import PlatformBase , to_unix_path
23
24
24
25
25
26
IS_WINDOWS = sys .platform .startswith ("win" )
27
+ IDF_TOOLS_PATH_DEFAULT = os .path .join (os .path .expanduser ("~" ), ".espressif" )
26
28
27
29
28
30
class Espressif32Platform (PlatformBase ):
@@ -34,7 +36,6 @@ def configure_default_packages(self, variables, targets):
34
36
mcu = variables .get ("board_build.mcu" , board_config .get ("build.mcu" , "esp32" ))
35
37
frameworks = variables .get ("pioframework" , [])
36
38
37
- self .packages ["tool-scons" ]["optional" ] = False
38
39
39
40
if "arduino" in frameworks :
40
41
self .packages ["framework-arduinoespressif32" ]["optional" ] = False
@@ -44,25 +45,39 @@ def configure_default_packages(self, variables, targets):
44
45
filesystem = variables .get ("board_build.filesystem" , "littlefs" )
45
46
if filesystem == "littlefs" :
46
47
self .packages ["tl-littlefs320" ]["optional" ] = False
48
+ tl_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tl-littlefs320" )
49
+ self .packages ["tl-littlefs320" ]["version" ] = tl_path
47
50
elif filesystem == "fatfs" :
48
51
self .packages ["tl-fatfs" ]["optional" ] = False
52
+ tl_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tl-fatfs" )
53
+ self .packages ["tl-fatfs" ]["version" ] = tl_path
49
54
else :
50
55
self .packages ["tl-spiffs" ]["optional" ] = False
56
+ tl_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tl-spiffs" )
57
+ self .packages ["tl-spiffs" ]["version" ] = tl_path
51
58
if variables .get ("upload_protocol" ):
52
59
self .packages ["tl-openocd" ]["optional" ] = False
60
+ tl_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tl-openocd" )
61
+ self .packages ["tl-openocd" ]["version" ] = tl_path
53
62
if os .path .isdir ("ulp" ):
54
63
self .packages ["tc-ulp" ]["optional" ] = False
64
+ ulp_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tc-ulp" )
65
+ self .packages ["tc-ulp" ]["version" ] = ulp_path
55
66
56
67
if "downloadfs" in targets :
57
68
filesystem = variables .get ("board_build.filesystem" , "littlefs" )
58
69
if filesystem == "littlefs" :
59
70
# Use mklittlefs v4.0.0 to unpack, older version is incompatible
60
71
self .packages ["tl-littlefs400" ]["optional" ] = False
72
+ tl_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tl-littlefs400" )
73
+ self .packages ["tl-littlefs400" ]["version" ] = tl_path
61
74
del self .packages ["tl-littlefs320" ]
62
75
63
76
# Currently only Arduino Nano ESP32 uses the dfuutil tool as uploader
64
77
if variables .get ("board" ) == "arduino_nano_esp32" :
65
78
self .packages ["tl-dfuutil" ]["optional" ] = False
79
+ tl_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tl-dfuutil" )
80
+ self .packages ["tl-dfuutil" ]["version" ] = tl_path
66
81
else :
67
82
del self .packages ["tl-dfuutil" ]
68
83
@@ -71,17 +86,25 @@ def configure_default_packages(self, variables, targets):
71
86
# and RISC-V targets.
72
87
for gdb_package in ("tl-xt-gdb" , "tl-rv-gdb" ):
73
88
self .packages [gdb_package ]["optional" ] = False
89
+ tl_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , gdb_package )
90
+ self .packages [gdb_package ]["version" ] = tl_path
74
91
75
92
# Common packages for IDF and mixed Arduino+IDF projects
76
93
if "espidf" in frameworks :
77
94
self .packages ["tc-ulp" ]["optional" ] = False
95
+ ulp_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tc-ulp" )
96
+ self .packages ["tc-ulp" ]["version" ] = ulp_path
78
97
for p in self .packages :
79
98
if p in ("tl-cmake" , "tl-ninja" ):
80
99
self .packages [p ]["optional" ] = False
100
+ tl_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , p )
101
+ self .packages [p ]["version" ] = tl_path
81
102
82
103
for available_mcu in ("esp32" , "esp32s2" , "esp32s3" ):
83
104
if available_mcu == mcu :
84
105
self .packages ["tc-xt-%s" % mcu ]["optional" ] = False
106
+ tc_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tc-xt-%s" % mcu )
107
+ self .packages ["tc-xt-%s" % mcu ]["version" ] = tc_path
85
108
else :
86
109
self .packages .pop ("tc-xt-%s" % available_mcu , None )
87
110
@@ -90,6 +113,8 @@ def configure_default_packages(self, variables, targets):
90
113
self .packages .pop ("tc-ulp" , None )
91
114
# RISC-V based toolchain for ESP32C3, ESP32C6 ESP32S2, ESP32S3 ULP
92
115
self .packages ["tc-rv32" ]["optional" ] = False
116
+ rv32_path = "file://" + join (IDF_TOOLS_PATH_DEFAULT , "tools" , "tc-rv32" )
117
+ self .packages ["tc-rv32" ]["version" ] = rv32_path
93
118
94
119
return super ().configure_default_packages (variables , targets )
95
120
0 commit comments