Skip to content

Commit af72992

Browse files
committed
Toggle built-in USB core
1 parent 5ae2f68 commit af72992

File tree

5 files changed

+87
-1
lines changed

5 files changed

+87
-1
lines changed

boards.txt

+79
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
# License along with this library; if not, write to the Free Software
1515
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1616

17+
menu.usbstack=Arduino USB Stack
18+
1719
# Arduino Zero (Prorgamming Port)
1820
# ---------------------------------------
1921
arduino_zero_edbg.name=Arduino Zero (Programming Port)
@@ -38,6 +40,7 @@ arduino_zero_edbg.build.usb_product="Arduino Zero"
3840
arduino_zero_edbg.build.usb_manufacturer="Arduino LLC"
3941
arduino_zero_edbg.build.board=SAMD_ZERO
4042
arduino_zero_edbg.build.core=arduino
43+
arduino_zero_edbg.build.flags.usbstack=-DUSBCON
4144
arduino_zero_edbg.build.extra_flags=-D__SAMD21G18A__ {build.usb_flags}
4245
arduino_zero_edbg.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
4346
arduino_zero_edbg.build.openocdscript=openocd_scripts/arduino_zero.cfg
@@ -96,6 +99,11 @@ arduino_zero_native.bootloader.tool=openocd
9699
arduino_zero_native.bootloader.tool.default=openocd
97100
arduino_zero_native.bootloader.file=zero/samd21_sam_ba.bin
98101

102+
arduino_zero_native.menu.usbstack.enabled=Enabled
103+
arduino_zero_native.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
104+
arduino_zero_native.menu.usbstack.disabled=Disabled
105+
arduino_zero_native.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
106+
99107
# Arduino MKR1000
100108
# -----------------------
101109
mkr1000.name=Arduino MKR1000
@@ -142,6 +150,11 @@ mkr1000.bootloader.tool=openocd
142150
mkr1000.bootloader.tool.default=openocd
143151
mkr1000.bootloader.file=mkr1000/samd21_sam_ba_arduino_mkr1000.bin
144152

153+
mkr1000.menu.usbstack.enabled=Enabled
154+
mkr1000.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
155+
mkr1000.menu.usbstack.disabled=Disabled
156+
mkr1000.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
157+
145158
# Arduino MKRZero
146159
# ---------------
147160
mkrzero.name=Arduino MKRZERO
@@ -180,6 +193,11 @@ mkrzero.bootloader.tool=openocd
180193
mkrzero.bootloader.tool.default=openocd
181194
mkrzero.bootloader.file=mkrzero/samd21_sam_ba_arduino_mkrzero.bin
182195

196+
mkrzero.menu.usbstack.enabled=Enabled
197+
mkrzero.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
198+
mkrzero.menu.usbstack.disabled=Disabled
199+
mkrzero.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
200+
183201
# Arduino MKR WiFi 1010
184202
# --------------------
185203
mkrwifi1010.name=Arduino MKR WiFi 1010
@@ -219,6 +237,11 @@ mkrwifi1010.bootloader.tool.default=openocd
219237
mkrwifi1010.bootloader.file=mkrwifi1010/samd21_sam_ba_arduino_mkrwifi1010.bin
220238
#mkrwifi1010.arduinoota.extraflags=-d
221239

240+
mkrwifi1010.menu.usbstack.enabled=Enabled
241+
mkrwifi1010.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
242+
mkrwifi1010.menu.usbstack.disabled=Disabled
243+
mkrwifi1010.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
244+
222245
# Arduino NANO 33 IoT
223246
# --------------------
224247
nano_33_iot.name=Arduino NANO 33 IoT
@@ -257,6 +280,11 @@ nano_33_iot.bootloader.tool=openocd
257280
nano_33_iot.bootloader.tool.default=openocd
258281
nano_33_iot.bootloader.file=nano_33_iot/samd21_sam_ba_arduino_nano_33_iot.bin
259282

283+
nano_33_iot.menu.usbstack.enabled=Enabled
284+
nano_33_iot.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
285+
nano_33_iot.menu.usbstack.disabled=Disabled
286+
nano_33_iot.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
287+
260288
# Arduino MKR FOX 1200
261289
# --------------------
262290
mkrfox1200.name=Arduino MKR FOX 1200
@@ -295,6 +323,11 @@ mkrfox1200.bootloader.tool=openocd
295323
mkrfox1200.bootloader.tool.default=openocd
296324
mkrfox1200.bootloader.file=mkrfox1200/samd21_sam_ba_arduino_mkrfox1200.bin
297325

326+
mkrfox1200.menu.usbstack.enabled=Enabled
327+
mkrfox1200.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
328+
mkrfox1200.menu.usbstack.disabled=Disabled
329+
mkrfox1200.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
330+
298331
# Arduino MKR WAN 1300
299332
# --------------------
300333
mkrwan1300.name=Arduino MKR WAN 1300
@@ -333,6 +366,11 @@ mkrwan1300.bootloader.tool=openocd
333366
mkrwan1300.bootloader.tool.default=openocd
334367
mkrwan1300.bootloader.file=mkrwan1300/samd21_sam_ba_arduino_mkrwan1300.bin
335368

369+
mkrwan1300.menu.usbstack.enabled=Enabled
370+
mkrwan1300.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
371+
mkrwan1300.menu.usbstack.disabled=Disabled
372+
mkrwan1300.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
373+
336374
# Arduino MKR WAN 1310
337375
# --------------------
338376
mkrwan1310.name=Arduino MKR WAN 1310
@@ -371,6 +409,11 @@ mkrwan1310.bootloader.tool=openocd
371409
mkrwan1310.bootloader.tool.default=openocd
372410
mkrwan1310.bootloader.file=mkrwan1300/samd21_sam_ba_arduino_mkrwan1310.bin
373411

412+
mkrwan1310.menu.usbstack.enabled=Enabled
413+
mkrwan1310.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
414+
mkrwan1310.menu.usbstack.disabled=Disabled
415+
mkrwan1310.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
416+
374417
# Arduino MKR GSM 1400
375418
# --------------------
376419
mkrgsm1400.name=Arduino MKR GSM 1400
@@ -409,6 +452,11 @@ mkrgsm1400.bootloader.tool=openocd
409452
mkrgsm1400.bootloader.tool.default=openocd
410453
mkrgsm1400.bootloader.file=mkrgsm1400/samd21_sam_ba_arduino_mkrgsm1400.bin
411454

455+
mkrgsm1400.menu.usbstack.enabled=Enabled
456+
mkrgsm1400.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
457+
mkrgsm1400.menu.usbstack.disabled=Disabled
458+
mkrgsm1400.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
459+
412460
# Arduino MKR NB 1500
413461
# --------------------
414462
mkrnb1500.name=Arduino MKR NB 1500
@@ -447,6 +495,11 @@ mkrnb1500.bootloader.tool=openocd
447495
mkrnb1500.bootloader.tool.default=openocd
448496
mkrnb1500.bootloader.file=mkrnb1500/samd21_sam_ba_arduino_mkrnb1500.bin
449497

498+
mkrnb1500.menu.usbstack.enabled=Enabled
499+
mkrnb1500.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
500+
mkrnb1500.menu.usbstack.disabled=Disabled
501+
mkrnb1500.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
502+
450503
# Arduino MKR Vidor 4000
451504
# --------------------
452505
mkrvidor4000.name=Arduino MKR Vidor 4000
@@ -485,6 +538,11 @@ mkrvidor4000.bootloader.tool=openocd
485538
mkrvidor4000.bootloader.tool.default=openocd
486539
mkrvidor4000.bootloader.file=mkrvidor4000/samd21_sam_ba_arduino_mkrvidor4000.bin
487540

541+
mkrvidor4000.menu.usbstack.enabled=Enabled
542+
mkrvidor4000.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
543+
mkrvidor4000.menu.usbstack.disabled=Disabled
544+
mkrvidor4000.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
545+
488546
# Adafruit Circuit Playground M0
489547
# ------------------------------
490548
adafruit_circuitplayground_m0.name=Adafruit Circuit Playground Express
@@ -523,6 +581,11 @@ adafruit_circuitplayground_m0.bootloader.tool=openocd
523581
adafruit_circuitplayground_m0.bootloader.tool.default=openocd
524582
adafruit_circuitplayground_m0.bootloader.file=circuitplay/circuitplay_m0_samd21g18_sam_ba.bin
525583

584+
adafruit_circuitplayground_m0.menu.usbstack.enabled=Enabled
585+
adafruit_circuitplayground_m0.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
586+
adafruit_circuitplayground_m0.menu.usbstack.disabled=Disabled
587+
adafruit_circuitplayground_m0.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
588+
526589
# Arduino M0 PRO (with) bootloader - Programming port
527590
# ---------------------------------------------------
528591
mzero_pro_bl_dbg.name=Arduino M0 Pro (Programming Port)
@@ -543,6 +606,7 @@ mzero_pro_bl_dbg.build.f_cpu=48000000L
543606
mzero_pro_bl_dbg.build.usb_product="Arduino M0 Pro"
544607
mzero_pro_bl_dbg.build.board=SAM_ZERO
545608
mzero_pro_bl_dbg.build.core=arduino
609+
mzero_pro_bl_dbg.build.flags.usbstack=-DUSBCON
546610
mzero_pro_bl_dbg.build.extra_flags=-D__SAMD21G18A__ -mthumb {build.usb_flags}
547611
mzero_pro_bl_dbg.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
548612
mzero_pro_bl_dbg.build.openocdscript=openocd_scripts/arduino_zero.cfg
@@ -610,6 +674,11 @@ mzero_pro_bl.bootloader.tool.default=openocd-withbootsize
610674
mzero_pro_bl.bootloader.file=mzero/Bootloader_D21_M0_Pro_150427.hex
611675
mzero_pro_bl.bootloader.low_fuses=0xff
612676

677+
mzero_pro_bl.menu.usbstack.enabled=Enabled
678+
mzero_pro_bl.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
679+
mzero_pro_bl.menu.usbstack.disabled=Disabled
680+
mzero_pro_bl.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
681+
613682
# Arduino M0 (with) Bootloader
614683
# ----------------------------
615684
mzero_bl.name=Arduino M0
@@ -660,6 +729,11 @@ mzero_bl.bootloader.tool.default=openocd-withbootsize
660729
mzero_bl.bootloader.low_fuses=0xff
661730
mzero_bl.bootloader.file=mzero/Bootloader_D21_M0_150515.hex
662731

732+
mzero_bl.menu.usbstack.enabled=Enabled
733+
mzero_bl.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
734+
mzero_bl.menu.usbstack.disabled=Disabled
735+
mzero_bl.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
736+
663737
# Arduino Tian (with) Bootloader
664738
# ------------------------------
665739
tian.name=Arduino Tian
@@ -703,6 +777,11 @@ tian.bootloader.low_fuses=0xff
703777
tian.bootloader.file=sofia/Sofia_Tian_151118.hex
704778
tian.drivers=SiliconLabs-CP2105/Silicon Labs VCP Driver.pkg
705779

780+
tian.menu.usbstack.enabled=Enabled
781+
tian.menu.usbstack.enabled.build.flags.usbstack=-DUSBCON
782+
tian.menu.usbstack.disabled=Disabled
783+
tian.menu.usbstack.disabled.build.flags.usbstack=-DCDC_DISABLED
784+
706785
# Arduino Tian Console port (not for upload)
707786
# ------------------------------------------
708787
tian_cons.name=Arduino Tian (MIPS Console port)

cores/arduino/Arduino.h

+2
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,13 @@ extern void analogOutputInit( void ) ;
106106
}
107107
#endif
108108

109+
#if defined(USBCON)
109110
// USB Device
110111
#include "USB/USBDesc.h"
111112
#include "USB/USBCore.h"
112113
#include "USB/USBAPI.h"
113114
#include "USB/USB_host.h"
115+
#endif
114116

115117
// ARM toolchain doesn't provide itoa etc, provide them
116118
#include "api/itoa.h"

cores/arduino/USB/samd21_host.c

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1717
*/
1818

19+
#ifdef USBCON
1920

2021
#include <stdio.h>
2122
#include <stdint.h>
@@ -516,3 +517,5 @@ uint32_t UHD_Pipe_Is_Transfer_Complete(uint32_t ul_pipe, uint32_t ul_token_type)
516517
// }
517518

518519
#endif // HOST_DEFINED
520+
521+
#endif

cores/arduino/main.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
void initVariant() __attribute__((weak));
2525
void initVariant() { }
2626

27+
#if defined(USBCON)
2728
extern USBDeviceClass USBDevice;
29+
#endif
2830

2931
// Initialize C library
3032
extern "C" void __libc_init_array(void);

platform.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ compiler.libraries.ldflags=
7777

7878
# USB Flags
7979
# ---------
80-
build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} -DUSBCON '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}'
80+
build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {build.flags.usbstack}
8181

8282
# Default usb manufacturer will be replaced at compile time using
8383
# numeric vendor ID if available or by board's specific value.

0 commit comments

Comments
 (0)