Compare commits

...

84 commits

Author SHA1 Message Date
Tyeth Gundry
cf23f456c2 Update boards.local.txt example specific file logic 2025-08-18 19:09:24 +01:00
Tyeth Gundry
13e4c5177c add(log): say if example specific boards.local.txt not found 2025-08-18 17:22:50 +01:00
Tyeth Gundry
0c51dc01c7 fix(args): better safety around sys.argv access 2025-08-18 17:19:15 +01:00
tyeth
e74ec1640f Support example boards.local.txt and board specific .platform.boards.local.txt 2025-07-24 22:51:59 +01:00
tyeth
ea8dfa1677 Use config folder, but fallback to known path for esp 2025-07-24 22:49:59 +01:00
tyeth
a51bab0b56 Refactor to install_boards_local_txt method 2025-07-24 21:00:03 +01:00
tyeth
66622baed3 Be more robust about version folders, but check for boards.txt first 2025-07-24 20:43:14 +01:00
tyeth
909fc32885 Super robust/hacky fallbacks to the correct CI folder of /home/runner/Arduino/hardware/espressif/esp32/ 2025-07-24 20:23:57 +01:00
tyeth
b48303f918 Fallback to expected CI arduino folder /home/runner/Arduino 2025-07-24 20:08:15 +01:00
tyeth
7d7d5308f6 Use config dump for data directory + generate platform path 2025-07-24 19:42:25 +01:00
tyeth
6f2978d54f Correct drill-down to platforms 2025-07-24 19:07:21 +01:00
tyeth
d0c35074c5 clean up comments 2025-07-24 19:01:54 +01:00
tyeth
7a10d6d6b2 Add copy step for boards.local.txt 2025-07-24 18:48:31 +01:00
tyeth
f95039b3ba Add --boards-local-txt argument 2025-07-24 18:33:43 +01:00
Tyeth Gundry
ea51e4a7df
Merge pull request #216 from adafruit/ci-wippersnapper-2025-07-10-noota
Update all_platforms.py to specify No OTA for 4MB boards
2025-07-24 17:27:52 +01:00
Tyeth Gundry
743e8172a1
Merge branch 'ci-wippersnapper' into ci-wippersnapper-2025-07-10-noota 2025-07-24 17:27:19 +01:00
Tyeth Gundry
6d645edf01
Update all_platforms.py - add DFRobot Beetle ESP32-C3 2025-07-14 17:40:02 +01:00
Tyeth Gundry
7daacdebce
Update all_platforms.py - add all non-default flags 2025-07-14 16:32:06 +01:00
Tyeth Gundry
321aabcfaa fix partition csv name for tinyuf2 on xiao 2025-07-12 01:31:14 +01:00
Tyeth Gundry
ef12f66aca
Final two 4MB boards set to no-OTA 2025-07-11 18:22:01 +01:00
Tyeth Gundry
568defe08e
Update all_platforms.py to specify No OTA for 4MB boards 2025-07-11 18:04:36 +01:00
Tyeth Gundry
e960ab25cc
Update devkit s3 for LoopCore=1,EventsCore=1 2025-07-08 15:56:52 +01:00
Tyeth Gundry
a6a09b3d8f
Update devkitS3 flashmode 2025-07-08 13:35:36 +01:00
Tyeth Gundry
8a380fccd7
Update S3 devkit params 2025-07-08 12:58:36 +01:00
Tyeth Gundry
de0edb92f1
Update build_platform.py - uf2 not hex - fqbn to lowercase 2025-07-04 18:20:06 +01:00
Tyeth Gundry
7763926b2c
Update FQBN for XIAO_ESP32S3 2025-07-04 16:36:54 +01:00
Tyeth Gundry
1bcaeb59a9
Add Seeed XIAO ESP32S3 2025-07-04 16:04:01 +01:00
Tyeth Gundry
99a04cdb70
Correct typo in branch name 2025-06-26 23:12:43 +01:00
Tyeth Gundry
ef6093907c
Swap 8MB to 8M for FlashSize param 2025-06-26 22:14:30 +01:00
Tyeth Gundry
12727c6f78
Merge pull request #215 from adafruit/add-esp32s3-devkitc-1-n8
Add ESP32S3 DevKitC-1 N8 target
2025-06-26 22:06:50 +01:00
Tyeth Gundry
a0fd9ccd0e Add ESP32S3 DevKitC-1 N8 target 2025-06-26 21:36:26 +01:00
Tyeth Gundry
6814c27dba
Merge pull request #214 from adafruit/sparkle-motion-stick
Add target for Sparkle Motion Stick
2025-06-03 21:02:10 +01:00
tyeth
afc30d8f8f Add definition for Sparkle Motion Stick 2025-06-03 20:42:06 +01:00
Tyeth Gundry
3f6d0137ac Revert "Update all_platforms.py to Arduino-ESP32 3.2.0 IDF 5.4"
This reverts commit a74b00a886.
2025-05-01 16:58:17 +01:00
Tyeth Gundry
a74b00a886
Update all_platforms.py to Arduino-ESP32 3.2.0 IDF 5.4 2025-05-01 16:29:51 +01:00
Tyeth Gundry
e6d9926369
Update build_platform.py - Allow error 429 on wget UF2 tools 2025-04-29 17:20:20 +01:00
brentru
c2e01cc815 Revert "add offline targets"
This reverts commit f063a4d066.
2025-04-11 13:25:14 -04:00
brentru
abc5a15cc9 Revert "standalone flag"
This reverts commit d905e35cae.
2025-04-11 13:25:03 -04:00
brentru
d905e35cae standalone flag 2025-04-11 13:18:40 -04:00
brentru
f063a4d066 add offline targets 2025-04-11 13:13:56 -04:00
Brent Rubell
ab4f966fe0
Merge pull request #210 from adafruit/update-platforms-3-1-3
Update CI-WipperSnapper to ESP32 BSP 3.1.3 Stable, IDF 5.3
2025-03-10 15:36:04 -05:00
brentru
8e975b9772 Update to 3.1.3 BSP, IDF 5.3 2025-03-10 15:29:01 -04:00
brentru
7e3a451732 rm no-deps flag 2025-03-07 13:53:00 -05:00
brentru
2b01d6a8f7 no deps 2025-02-28 16:01:45 -05:00
brentru
4159d79259 Fix flash metro rp2350 2025-02-26 16:40:32 -05:00
brentru
0355a1e35e Fix flash RP2040_TinyUSB 2025-02-26 16:14:19 -05:00
brentru
89561c871c Fix flash allocations for adalogger and metro 2025-02-26 15:57:23 -05:00
brentru
cde7df554e Merge branch 'master' into ci-wippersnapper 2025-02-26 15:01:34 -05:00
brentru
7ce92e912d 512mb fs for rp2350 tinyusb 2025-02-24 15:53:57 -05:00
brentru
c08b0a03bc pickup newest rp2040 2025-02-24 15:15:25 -05:00
Tyeth Gundry
69b0743853
Drop Funhouse down to BSP wipper-3.0.7-idf-5.1.4 2025-01-24 18:30:22 +00:00
Tyeth Gundry
10eaead7a2
Correct FQBN for custom arduino-esp32 branch from esp32 to espressif 2025-01-23 19:51:00 +00:00
Tyeth Gundry
24edd32075
Merge pull request #204 from adafruit/rebased-ci-wippersnapper-with-sparkles
Rebased-ci-wippersnapper-with-sparkles
2025-01-22 18:50:21 +00:00
Tyeth Gundry
d98f3134c3
Merge branch 'ci-wippersnapper' into rebased-ci-wippersnapper-with-sparkles 2025-01-22 18:41:39 +00:00
tyeth
cfd8cd7bb9 Swap Pico BSP to 4.4.1 (SD Fat Fork issue with 4.4.2) 2025-01-22 18:37:55 +00:00
tyeth
12ce4e0be1 Update ESP BSP to 3.1.1 2025-01-22 18:36:59 +00:00
Tyeth Gundry
e3578369ee Update all_platforms.py - remove nano-33-iot + mkrwifi1010 2025-01-22 18:34:01 +00:00
tyeth
afbac9326e Update some WS debug targets to No OTA partition 2025-01-22 18:34:01 +00:00
Tyeth Gundry
0c47922a12 Update all_platforms.py 2025-01-22 18:34:01 +00:00
tyeth
55d4d00438 Add updates from main branch + pico2w 2025-01-22 18:34:01 +00:00
brentru
ce96be8653 try 3.0.7 latest 2025-01-22 18:34:01 +00:00
brentru
da309b4079 point all to 3.0.6 2025-01-22 18:33:43 +00:00
brentru
734b5c464d c6 on 3.0.6 bsp 2025-01-22 18:33:03 +00:00
Tyeth Gundry
253c3b260a Update all_platforms.py - add Metro-S2 Debug target 2025-01-22 18:33:03 +00:00
Tyeth Gundry
ee99782488 Update all_platforms.py - add Metro-S3 Debug target 2025-01-22 18:33:03 +00:00
Tyeth Gundry
cfd59ff88c Update all_platforms.py - add wippersnapper_feather_esp32s3_reverse_tft_debug 2025-01-22 18:33:03 +00:00
brentru
bb001c2199 add funhouse_noota 2025-01-22 18:33:03 +00:00
brentru
e5baa42b78 update build_platform to point to adafruit repo and head tag 2025-01-22 18:33:03 +00:00
Tyeth Gundry
e12965137c
Merge pull request #201 from adafruit/delete_unused_boards
Delete unused boards
2025-01-14 19:20:00 +00:00
Tyeth Gundry
0a7670343f
Merge pull request #202 from adafruit/ci-wipper-noota-jan1025
Ci-wipper-noota-jan1025
2025-01-10 20:32:28 +00:00
tyeth
e087695616 Update some WS debug targets to No OTA partition 2025-01-10 20:07:28 +00:00
Tyeth Gundry
9e105676c5
Update all_platforms.py - remove nano-33-iot + mkrwifi1010 2025-01-10 17:40:45 +00:00
Tyeth Gundry
6cf30fd00c
Merge pull request #200 from adafruit/ci-wippersnapper-rp2040
Add Pico2W rp2350 for Wippersnapper
2024-11-28 16:13:24 +00:00
Tyeth Gundry
4eac0e55f5
Update all_platforms.py 2024-11-28 16:02:55 +00:00
tyeth
8809337489 Add updates from main branch + pico2w 2024-11-28 15:25:53 +00:00
Brent Rubell
ff858f5dbd
Merge pull request #198 from brentru/ci-wippersnapper
Bump WipperSnapper CI to Arduino ESP32 version 3.0.7
2024-10-24 11:37:45 -05:00
brentru
1a5114cb1e try 3.0.7 latest 2024-10-24 12:31:37 -04:00
brentru
6a687dc3d8 point all to 3.0.6 2024-10-24 11:10:00 -04:00
brentru
0061277410 c6 on 3.0.6 bsp 2024-10-22 12:44:53 -04:00
Tyeth Gundry
bb6058b764
Update all_platforms.py - add Metro-S2 Debug target 2024-10-21 13:19:57 +01:00
Tyeth Gundry
43b072702b
Update all_platforms.py - add Metro-S3 Debug target 2024-10-21 13:18:51 +01:00
Tyeth Gundry
3f74c32201
Update all_platforms.py - add wippersnapper_feather_esp32s3_reverse_tft_debug 2024-10-18 19:37:54 +01:00
brentru
16647cf860 add funhouse_noota 2024-09-23 15:43:47 -04:00
brentru
aa3eaf0be5 update build_platform to point to adafruit repo and head tag 2024-09-23 14:42:29 -04:00
2 changed files with 197 additions and 46 deletions

View file

@ -9,47 +9,59 @@ ALL_PLATFORMS={
"cpx" : ["arduino:samd:adafruit_circuitplayground_m0", "0x68ed2b88", None],
# Espressif
"esp8266" : ["esp8266:esp8266:huzzah:eesz=4M3M,xtal=80", None, None],
"esp32" : ["esp32:esp32:featheresp32:FlashFreq=80", None, None],
"itsybitsy_esp32" : ["esp32:esp32:adafruit_itsybitsy_esp32:FlashFreq=80", None, None],
"esp32" : ["espressif:esp32:featheresp32:FlashFreq=80", None, "adafruit/wipper-3.1.3-idf-5.3"],
"itsybitsy_esp32" : ["espressif:esp32:adafruit_itsybitsy_esp32:FlashFreq=80", None, "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp8266" : ["esp8266:esp8266:huzzah:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,eesz=4M2M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200", None, None],
"feather_esp32" : ["esp32:esp32:featheresp32:FlashFreq=80", None, None],
"wippersnapper_feather_esp32" : ["esp32:esp32:featheresp32:FlashFreq=80,PartitionScheme=min_spiffs", None, None],
"feather_esp32_v2" : ["esp32:esp32:adafruit_feather_esp32_v2", None, None],
"qtpy_esp32" : ["esp32:esp32:adafruit_qtpy_esp32_pico", None, None],
"sparklemotion_esp32" : ["esp32:esp32:sparklemotion", None, None],
"sparklemotionmini_esp32" : ["esp32:esp32:sparklemotionmini", None, None],
"feather_esp32" : ["espressif:esp32:featheresp32:FlashFreq=80", None, "adafruit/wipper-3.1.3-idf-5.3"],
"wippersnapper_feather_esp32" : ["espressif:esp32:featheresp32:FlashFreq=80,PartitionScheme=min_spiffs", None, "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32_v2" : ["espressif:esp32:adafruit_feather_esp32_v2", None, "adafruit/wipper-3.1.3-idf-5.3"],
"qtpy_esp32" : ["espressif:esp32:adafruit_qtpy_esp32_pico", None, "adafruit/wipper-3.1.3-idf-5.3"],
"sparklemotion_esp32" : ["espressif:esp32:sparklemotion:PartitionScheme=min_spiffs", None, "adafruit/wipper-3.1.3-idf-5.3"],
"sparklemotionmini_esp32" : ["espressif:esp32:sparklemotionmini:PartitionScheme=min_spiffs", None, "adafruit/wipper-3.1.3-idf-5.3"],
"sparklemotionstick_esp32" : ["espressif:esp32:sparklemotionstick:PartitionScheme=min_spiffs", None, "adafruit/master"],
## ESP32-C3/C6
"feather_esp32c6" : ["esp32:esp32:adafruit_feather_esp32c6:FlashMode=qio", None, None],
"wippersnapper_feather_esp32c6" : ["esp32:esp32:adafruit_feather_esp32c6:CDCOnBoot=cdc,CPUFreq=160,FlashFreq=80,FlashMode=qio,PartitionScheme=min_spiffs", None, None],
"wippersnapper_feather_esp32c6_debug" : ["esp32:esp32:adafruit_feather_esp32c6:CDCOnBoot=cdc,DebugLevel=verbose,CPUFreq=160,FlashFreq=80,FlashMode=qio,PartitionScheme=min_spiffs", None, None],
"qtpy_esp32c3" : ["esp32:esp32:adafruit_qtpy_esp32c3:FlashMode=qio", None, None],
"wippersnapper_qtpy_esp32c3" : ["esp32:esp32:adafruit_qtpy_esp32c3:FlashMode=qio,PartitionScheme=min_spiffs", None, None],
"dfrobot_beetle_esp32c3" : ["espressif:esp32:dfrobot_beetle_esp32c3:CDCOnBoot=cdc,CPUFreq=160,FlashFreq=80,FlashMode=qio,PartitionScheme=min_spiffs", None, "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32c6" : ["espressif:esp32:adafruit_feather_esp32c6:FlashMode=qio", None, "adafruit/wipper-3.1.3-idf-5.3"],
"wippersnapper_feather_esp32c6" : ["espressif:esp32:adafruit_feather_esp32c6:CDCOnBoot=cdc,CPUFreq=160,FlashFreq=80,FlashMode=qio,PartitionScheme=min_spiffs", None, "adafruit/wipper-3.1.3-idf-5.3"],
"wippersnapper_feather_esp32c6_debug" : ["espressif:esp32:adafruit_feather_esp32c6:CDCOnBoot=cdc,DebugLevel=verbose,CPUFreq=160,FlashFreq=80,FlashMode=qio,PartitionScheme=min_spiffs", None, "adafruit/wipper-3.1.3-idf-5.3"],
"qtpy_esp32c3" : ["espressif:esp32:adafruit_qtpy_esp32c3:FlashMode=qio", None, "adafruit/wipper-3.1.3-idf-5.3"],
"wippersnapper_qtpy_esp32c3" : ["espressif:esp32:adafruit_qtpy_esp32c3:FlashMode=qio,PartitionScheme=min_spiffs", None, "adafruit/wipper-3.1.3-idf-5.3"],
## ESP32-S2
"magtag" : ["esp32:esp32:adafruit_magtag29_esp32s2", "0xbfdd4eee", None],
"funhouse" : ["esp32:esp32:adafruit_funhouse_esp32s2", "0xbfdd4eee", None],
"funhouse_noota" : ["esp32:esp32:adafruit_funhouse_esp32s2:PartitionScheme=tinyuf2_noota", "0xbfdd4eee", None],
"metroesp32s2" : ["esp32:esp32:adafruit_metro_esp32s2", "0xbfdd4eee", None],
"qtpy_esp32s2" : ["esp32:esp32:adafruit_qtpy_esp32s2", "0xbfdd4eee", None],
"feather_esp32s2" : ["esp32:esp32:adafruit_feather_esp32s2", "0xbfdd4eee", None],
"feather_esp32s2_debug" : ["esp32:esp32:adafruit_feather_esp32s2:DebugLevel=verbose", "0xbfdd4eee", None],
"feather_esp32s2_tft" : ["esp32:esp32:adafruit_feather_esp32s2_tft", "0xbfdd4eee", None],
"feather_esp32s2_tft_debug" : ["esp32:esp32:adafruit_feather_esp32s2_tft:DebugLevel=verbose", "0xbfdd4eee", None],
"feather_esp32s2_reverse_tft" : ["esp32:esp32:adafruit_feather_esp32s2_reversetft", "0xbfdd4eee", None],
## ESP32-S3
"feather_esp32s3" : ["esp32:esp32:adafruit_feather_esp32s3_nopsram", "0xc47e5767", None],
"feather_esp32s3_debug" : ["esp32:esp32:adafruit_feather_esp32s3_nopsram:DebugLevel=verbose", "0xc47e5767", None],
"feather_esp32s3_4mbflash_2mbpsram" : ["esp32:esp32:adafruit_feather_esp32s3", "0xc47e5767", None],
"feather_esp32s3_4mbflash_2mbpsram_debug" : ["esp32:esp32:adafruit_feather_esp32s3:DebugLevel=verbose", "0xc47e5767", None],
"feather_esp32s3_tft" : ["esp32:esp32:adafruit_feather_esp32s3_tft", "0xc47e5767", None],
"feather_esp32s3_tft_debug" : ["esp32:esp32:adafruit_feather_esp32s3_tft:DebugLevel=verbose", "0xc47e5767", None],
"feather_esp32s3_reverse_tft" : ["esp32:esp32:adafruit_feather_esp32s3_reversetft", "0xc47e5767", None],
"feather_esp32s3_reverse_tft_debug" : ["esp32:esp32:adafruit_feather_esp32s3_reversetft:DebugLevel=verbose", "0xc47e5767", None],
"magtag" : ["espressif:esp32:adafruit_magtag29_esp32s2:PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
"funhouse" : ["espressif:esp32:adafruit_funhouse_esp32s2:PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
"funhouse_noota" : ["espressif:esp32:adafruit_funhouse_esp32s2:PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.0.7-idf-5.1.4"],
"metroesp32s2" : ["espressif:esp32:adafruit_metro_esp32s2:PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
"metroesp32s2_debug" : ["espressif:esp32:adafruit_metro_esp32s2:DebugLevel=verbose,PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
"qtpy_esp32s2" : ["espressif:esp32:adafruit_qtpy_esp32s2:PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s2" : ["espressif:esp32:adafruit_feather_esp32s2:PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s2_debug" : ["espressif:esp32:adafruit_feather_esp32s2:DebugLevel=verbose,PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s2_tft" : ["espressif:esp32:adafruit_feather_esp32s2_tft:PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s2_tft_debug" : ["espressif:esp32:adafruit_feather_esp32s2_tft:DebugLevel=verbose,PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s2_reverse_tft" : ["espressif:esp32:adafruit_feather_esp32s2_reversetft:PartitionScheme=tinyuf2_noota", "0xbfdd4eee", "adafruit/wipper-3.1.3-idf-5.3"],
## ESP32_S3
"esp32s3_devkitc_1_n8" : ["espressif:esp32:esp32s3:FlashSize=8M,PartitionScheme=noota_ffat,FlashMode=qio,PSRAM=disabled,USBMode=default,CDCOnBoot=cdc,LoopCore=1,EventsCore=1", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"esp32s3_devkitc_1_n8_debug" : ["espressif:esp32:esp32s3:FlashSize=8M,PartitionScheme=noota_ffat,FlashMode=qio,PSRAM=disabled,DebugLevel=verbose,USBMode=default,CDCOnBoot=cdc,LoopCore=1,EventsCore=1", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s3" : ["espressif:esp32:adafruit_feather_esp32s3_nopsram", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"wippersnapper_feather_esp32s3" : ["espressif:esp32:adafruit_feather_esp32s3_nopsram:PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s3_debug" : ["espressif:esp32:adafruit_feather_esp32s3_nopsram:DebugLevel=verbose,PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"wippersnapper_feather_esp32s3_4mbflash_2mbpsram" : ["espressif:esp32:adafruit_feather_esp32s3:PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s3_4mbflash_2mbpsram" : ["espressif:esp32:adafruit_feather_esp32s3:PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s3_4mbflash_2mbpsram_debug" : ["espressif:esp32:adafruit_feather_esp32s3:DebugLevel=verbose,PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s3_tft" : ["espressif:esp32:adafruit_feather_esp32s3_tft:PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"wippersnapper_feather_esp32s3_tft" : ["espressif:esp32:adafruit_feather_esp32s3_tft:PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s3_tft_debug" : ["espressif:esp32:adafruit_feather_esp32s3_tft:DebugLevel=verbose,PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s3_reverse_tft" : ["espressif:esp32:adafruit_feather_esp32s3_reversetft:PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"feather_esp32s3_reverse_tft_debug" : ["espressif:esp32:adafruit_feather_esp32s3_reversetft:DebugLevel=verbose", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"wippersnapper_feather_esp32s3_reverse_tft" : ["espressif:esp32:adafruit_feather_esp32s3_reversetft:PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"wippersnapper_feather_esp32s3_reverse_tft_debug" : ["espressif:esp32:adafruit_feather_esp32s3_reversetft:DebugLevel=verbose,PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"matrixportal_s3" : ["esp32:esp32:adafruit_matrixportal_esp32s3", "0xc47e5767", None],
"metro_esp32s3" : ["esp32:esp32:adafruit_metro_esp32s3", "0xc47e5767", None],
"metro_esp32s3" : ["espressif:esp32:adafruit_metro_esp32s3", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"metro_esp32s3_debug" : ["espressif:esp32:adafruit_metro_esp32s3:DebugLevel=verbose,PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"pycamera_s3" : ["esp32:esp32:adafruit_camera_esp32s3", "0xc47e5767", None],
"qualia_s3_rgb666" : ["esp32:esp32:adafruit_qualia_s3_rgb666", "0xc47e5767", None],
"qtpy_esp32s3" : ["esp32:esp32:adafruit_qtpy_esp32s3_nopsram", "0xc47e5767", None],
"qtpy_esp32s3_n4r2" : ["esp32:esp32:adafruit_qtpy_esp32s3_n4r2", "0xc47e5767", None],
"qtpy_esp32s3" : ["espressif:esp32:adafruit_qtpy_esp32s3_nopsram", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"qtpy_esp32s3_n4r2" : ["espressif:esp32:adafruit_qtpy_esp32s3_n4r2:PartitionScheme=tinyuf2_noota", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3"],
"xiao_esp32s3" : ["espressif:esp32:XIAO_ESP32S3:PartitionScheme=tinyuf2,PSRAM=opi,FlashMode=qio,USBMode=default,DebugLevel=warn", "0xc47e5767", "adafruit/wipper-3.1.3-idf-5.3-xiao-tinyuf2"],
# Adafruit AVR
"trinket_3v" : ["adafruit:avr:trinket3", None, None],
"trinket_5v" : ["adafruit:avr:trinket5", None, None],
@ -105,9 +117,6 @@ ALL_PLATFORMS={
"X_m0" : ["adafruit:samd:adafruit_X_m0", "0x68ed2b88", None],
"qtpy_m0" : ["adafruit:samd:adafruit_qtpy_m0", "0x68ed2b88", None],
"qtpy_m0_tinyusb" : ["adafruit:samd:adafruit_qtpy_m0:usbstack=tinyusb", "0x68ed2b88", None],
# Arduino SAMD
"mkrwifi1010" : ["arduino:samd:mkrwifi1010", "0x8054", None],
"nano_33_iot" : ["arduino:samd:nano_33_iot", "0x8057", None],
# Arduino nRF
"microbit" : ["sandeepmistry:nRF5:BBCmicrobit:softdevice=s110", None, None],
# Adafruit nRF
@ -118,17 +127,20 @@ ALL_PLATFORMS={
"ledglasses_nrf52840" : ["adafruit:nrf52:ledglasses_nrf52840:softdevice=s140v6,debug=l0", "0xada52840", None],
# RP2040 (Philhower)
"pico_rp2040" : ["rp2040:rp2040:rpipico:freq=125,flash=2097152_0", "0xe48bff56", None],
"pico_rp2040_tinyusb" : ["rp2040:rp2040:rpipico:flash=2097152_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"pico_rp2040_tinyusb" : ["rp2040:rp2040:rpipico:flash=2097152_524288,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"pico_rp2040_tinyusb_host" : ["rp2040:rp2040:rpipico:flash=2097152_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb_host", "0xe48bff56", None],
"pico_rp2350" : ["rp2040:rp2040:rpipico2:freq=125,flash=4194304_0", "0xe48bff56", None],
"pico_rp2350_tinyusb" : ["rp2040:rp2040:rpipico2:flash=4194304_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"pico_rp2350_tinyusb" : ["rp2040:rp2040:rpipico2:flash=4194304_524288,usbstack=tinyusb", "0xe48bff56", None],
"pico_rp2350_tinyusb_host" : ["rp2040:rp2040:rpipico2:flash=4194304_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb_host", "0xe48bff56", None],
"picow_rp2040" : ["rp2040:rp2040:rpipicow:flash=2097152_0,freq=125", "0xe48bff56", None],
"picow_rp2040_tinyusb" : ["rp2040:rp2040:rpipicow:flash=2097152_131072,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"picow_rp2350" : ["rp2040:rp2040:rpipico2w:freq=125,flash=4194304_0", "0xe48bff56", None],
"picow_rp2350_tinyusb" : ["rp2040:rp2040:rpipico2w:flash=4194304_131072,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"picow_rp2350_tinyusb_host" : ["rp2040:rp2040:rpipico2w:flash=4194304_131072,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb_host", "0xe48bff56", None],
"feather_rp2040" : ["rp2040:rp2040:adafruit_feather:freq=125,flash=8388608_0", "0xe48bff56", None],
"feather_rp2040_tinyusb" : ["rp2040:rp2040:adafruit_feather:flash=8388608_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"feather_rp2040_adalogger" : ["rp2040:rp2040:adafruit_feather_adalogger:freq=125,flash=8388608_0", "0xe48bff56", None],
"feather_rp2040_adalogger_tinyusb" : ["rp2040:rp2040:adafruit_feather_adalogger:flash=8388608_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"feather_rp2040_adalogger" : ["rp2040:rp2040:adafruit_feather_adalogger:freq=125,flash=8388608_524288", "0xe48bff56", None],
"feather_rp2040_adalogger_tinyusb" : ["rp2040:rp2040:adafruit_feather_adalogger:flash=8388608_524288,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"feather_rp2040_rfm" : ["rp2040:rp2040:adafruit_feather_rfm:freq=125,flash=8388608_0", "0xe48bff56", None],
"feather_rp2040_rfm_tinyusb" : ["rp2040:rp2040:adafruit_feather_rfm:flash=8388608_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"feather_rp2040_dvi" : ["rp2040:rp2040:adafruit_feather_dvi:freq=125,flash=8388608_0", "0xe48bff56", None],
@ -137,7 +149,7 @@ ALL_PLATFORMS={
"feather_rp2350" : ["rp2040:rp2040:adafruit_feather_rp2350_hstx:arch=arm,flash=8388608_0,freq=150,dbgport=Disabled,dbglvl=None,usbstack=picosdk", "0xe48bff56", None],
"feather_rp2350_tinyusb" : ["rp2040:rp2040:adafruit_feather_rp2350_hstx:arch=arm,flash=8388608_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"metro_rp2350" : ["rp2040:rp2040:adafruit_metro_rp2350:arch=arm,flash=16777216_0,freq=150,dbgport=Disabled,dbglvl=None,usbstack=picosdk", "0xe48bff56", None],
"metro_rp2350_tinyusb" : ["rp2040:rp2040:adafruit_metro_rp2350:arch=arm,flash=16777216_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"metro_rp2350_tinyusb" : ["rp2040:rp2040:adafruit_metro_rp2350:arch=arm,flash=16777216_524288,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"qt2040_trinkey" : ["rp2040:rp2040:adafruit_trinkeyrp2040qt:flash=8388608_0,freq=125","0xe48bff56", None],
"qt2040_trinkey_tinyusb" : ["rp2040:rp2040:adafruit_trinkeyrp2040qt:flash=8388608_0,freq=120,dbgport=Disabled,dbglvl=None,usbstack=tinyusb", "0xe48bff56", None],
"qt_py_rp2040": ["rp2040:rp2040:adafruit_qtpy:freq=125,flash=8388608_0", "0xe48bff56", None],

View file

@ -29,6 +29,35 @@ if "--build_timeout" in sys.argv:
sys.argv.pop(sys.argv.index("--build_timeout") + 1)
sys.argv.remove("--build_timeout")
# optional --boards-local-txt argument to copy boards.local.txt
# to the appropriate folder after installing the platform BSP.
COPY_BOARDS_LOCAL_TXT = False
boards_local_txt = None
if "--boards-local-txt" in sys.argv:
COPY_BOARDS_LOCAL_TXT = True
if sys.argv.index("--boards-local-txt") + 1 == len(sys.argv):
# check if in cwd
if os.path.exists("boards.local.txt"):
boards_local_txt = "boards.local.txt"
else:
sys.stderr.write("Error: --boards-local-txt option requires a path to boards.local.txt file or to be present in current directory\n")
sys.exit(1)
else:
# check second arg is file or another flag:
if sys.argv[sys.argv.index("--boards-local-txt") + 1].startswith("--"):
if os.path.exists("boards.local.txt"):
boards_local_txt = "boards.local.txt"
else:
sys.stderr.write("Error: --boards-local-txt option requires a path to boards.local.txt file (or to be present in current directory)\n")
sys.exit(1)
# get the boards.local.txt file from the command line (index exists checked earlier)
if not os.path.exists(sys.argv[sys.argv.index("--boards-local-txt") + 1]):
sys.stderr.write("Error: boards.local.txt file does not exist\n")
sys.exit(1)
boards_local_txt = sys.argv[sys.argv.index("--boards-local-txt") + 1]
sys.argv.pop(sys.argv.index("--boards-local-txt") + 1)
sys.argv.remove("--boards-local-txt")
# add user bin to path!
BUILD_DIR = ''
# add user bin to path!
@ -144,6 +173,8 @@ def install_platform(fqbn, full_platform_name=None):
install_platform("arduino:avr", full_platform_name)
if full_platform_name[2] is not None:
manually_install_esp32_bsp(full_platform_name[2]) # build esp32 bsp from desired source and branch
print(os.popen('arduino-cli core list | grep {}'.format(fqbn)).read(), end='')
return # bail out
for retry in range(0, 3):
print("arduino-cli core install "+fqbn+" --additional-urls "+BSP_URLS)
if os.system("arduino-cli core install "+fqbn+" --additional-urls "+BSP_URLS+" > /dev/null") == 0:
@ -249,7 +280,7 @@ def glob1(pattern):
def download_uf2_utils():
"""Downloads uf2conv tools if we don't already have them
"""
cmd = "wget -nc --no-check-certificate http://raw.githubusercontent.com/microsoft/uf2/master/utils/uf2families.json https://raw.githubusercontent.com/microsoft/uf2/master/utils/uf2conv.py"
cmd = "wget --retry-on-http-error=429,503 -nc --no-check-certificate http://raw.githubusercontent.com/microsoft/uf2/master/utils/uf2families.json https://raw.githubusercontent.com/microsoft/uf2/master/utils/uf2conv.py"
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
r = proc.wait(timeout=60)
out = proc.stdout.read()
@ -282,7 +313,7 @@ def generate_uf2(platform, fqbn, example_path):
return output_file
# Generate using a hex file for all platforms except for ESP32-S2, ESP32-S3 (exports as .bin files)
if not any (x in fqbn for x in ["esp32s2", "esp32s3"]):
if not any (x in fqbn.lower() for x in ["esp32s2", "esp32s3"]):
cli_build_hex_path = "build/*.*." + fqbn.split(':')[2] + "/*.hex"
hex_input_file = glob1(os.path.join(example_path, cli_build_hex_path))
output_file = os.path.splitext(hex_input_file)[0] + ".uf2"
@ -378,6 +409,24 @@ def test_examples_in_folder(platform, folderpath):
if os.path.exists(gen_file_name):
ColorPrint.print_info("generating")
# check if root or example-specific boards.local.txt should be copied
if COPY_BOARDS_LOCAL_TXT:
root_boards_local_txt = boards_local_txt
example_boards_local_txt = folderpath+"/boards.local.txt"
board_specific_example_boards_local_txt = folderpath+"/."+platform+".boards.local.txt"
if os.path.exists(board_specific_example_boards_local_txt):
ColorPrint.print_info("Copying boards.local.txt from "+board_specific_example_boards_local_txt)
install_boards_local_txt(":".join(fqbn.split(':')[0:2]), board_specific_example_boards_local_txt)
elif os.path.exists(example_boards_local_txt):
ColorPrint.print_info("Copying boards.local.txt from "+example_boards_local_txt)
install_boards_local_txt(":".join(fqbn.split(':')[0:2]), example_boards_local_txt)
else: # effectively does the revert if subsequent example doesn't have a specific boards.local.txt
ColorPrint.print_info("No example-specific boards.local.txt found to copy, using root version")
install_boards_local_txt(":".join(fqbn.split(':')[0:2]), root_boards_local_txt)
if BUILD_WARN:
if os.path.exists(gen_file_name):
cmd = ['arduino-cli', 'compile', '--warnings', 'all', '--fqbn', fqbn, '-e', folderpath]
@ -426,6 +475,89 @@ def test_examples_in_folder(platform, folderpath):
success = 1
def install_boards_local_txt(core_fqbn, boards_local_txt):
"""Copies boards.local.txt to the appropriate folder for the given core_fqbn.
:param str core_fqbn: The first two segments of fully qualified board
name, vendor:architecture (e.g., "adafruit:samd").
:param str boards_local_txt: The path to the boards.local.txt file.
"""
local_app_data_dir = os.environ.get('HOME', '')
data_dir = None
try:
if os.path.exists(os.path.join(local_app_data_dir, '.arduino15')):
data_dir = os.path.join(local_app_data_dir, '.arduino15')
elif os.path.exists(os.path.join(local_app_data_dir, '.arduino')):
data_dir = os.path.join(local_app_data_dir, '.arduino')
# Get arduino-cli data directory
import json
if data_dir:
config_output = subprocess.check_output(["arduino-cli", "config", "dump", "--format", "json", "--config-dir", data_dir]).decode()
else:
config_output = subprocess.check_output(["arduino-cli", "config", "dump", "--format", "json"]).decode()
config = json.loads(config_output)
ColorPrint.print_info(f"Using arduino-cli config: {config_output.strip()}")
# Extract data directory, with fallback to default
data_dir = config.get("directories", {}).get("data", "")
if not data_dir:
if os.path.exists(os.path.join(local_app_data_dir, 'Arduino')):
data_dir = os.path.join(local_app_data_dir, 'Arduino')
else:
ColorPrint.print_warn("No valid data directory found, cannot copy boards.local.txt")
return
ColorPrint.print_info(f"Using data directory: {data_dir}")
# Parse platform vendor and architecture from core_fqbn (e.g., "adafruit:samd")
parts = core_fqbn.split(':')
if len(parts) >= 2:
vendor = parts[0]
architecture = parts[1]
else:
vendor = core_fqbn
architecture = vendor
ColorPrint.print_info(f"Using vendor: {vendor}, architecture: {architecture}")
# Construct base platform path, fall back to architecture if vendor rebadged BSP.
platform_base = os.path.join(data_dir, "packages", vendor, "hardware", architecture) if \
os.path.exists(os.path.join(data_dir, "packages", vendor, "hardware", architecture)) else \
os.path.join(data_dir, "packages", architecture, "hardware", architecture) if \
os.path.exists(os.path.join(data_dir, "packages", architecture, "hardware", architecture)) else \
os.path.join(data_dir, "hardware", vendor, architecture) if \
os.path.exists(os.path.join(data_dir, "hardware", vendor, architecture)) else \
os.path.join(data_dir, "hardware", architecture, architecture)
# Find the latest version directory
if os.path.exists(platform_base):
if os.path.exists(os.path.join(platform_base, "boards.txt")):
shutil.copyfile(boards_local_txt, os.path.join(platform_base, "boards.local.txt"))
ColorPrint.print_info(f"Copied boards.local.txt to {os.path.join(platform_base, 'boards.local.txt')}")
else:
versions = [d for d in os.listdir(platform_base) if os.path.isdir(os.path.join(platform_base, d))]
ColorPrint.print_info(f"Found subdirectories for {platform_base}:\n {versions}")
# Filter out non-version directories (e.g., 'tools', 'libraries') while supporting 1.0-dev 1.0.0-offline-mode.102 etc
versions = [v for v in versions if re.match(r'^(v)?\d+\.\d+(\.\d+(-\w+)?)?(\.\d+)?$', v)]
ColorPrint.print_info(f"Filtered versions: {versions}")
if versions:
# Sort versions and take the latest (could be improved with proper version sorting)
latest_version = sorted(versions)[-1]
platform_path = os.path.join(platform_base, latest_version)
dest_path = os.path.join(platform_path, "boards.local.txt")
shutil.copyfile(boards_local_txt, dest_path)
ColorPrint.print_info(f"Copied boards.local.txt to {dest_path}")
else:
ColorPrint.print_warn(f"No version directories found in {platform_base}")
else:
ColorPrint.print_warn(f"Platform path {platform_base} does not exist")
except Exception as e:
ColorPrint.print_fail(f"Error injecting boards.local.txt for {core_fqbn}: {e}")
def main():
# Test platforms
platforms = []
@ -449,8 +581,15 @@ def main():
fqbn = ALL_PLATFORMS[platform][0]
print('#'*80)
ColorPrint.print_info("SWITCHING TO "+fqbn)
install_platform(":".join(fqbn.split(':', 2)[0:2]), ALL_PLATFORMS[platform]) # take only first two elements
core_fqbn = ":".join(fqbn.split(':', 2)[0:2]) # take only first two elements
install_platform(core_fqbn, ALL_PLATFORMS[platform])
# Inject boards.local.txt if requested
if COPY_BOARDS_LOCAL_TXT and boards_local_txt:
install_boards_local_txt(core_fqbn, boards_local_txt)
print('#'*80)
# Test examples in the platform folder
if not IS_LEARNING_SYS:
test_examples_in_folder(platform, BUILD_DIR+"/examples")
else: