Skip to content

Commit 2991c48

Browse files
authored
Merge pull request #9514 from tannewt/rp2350_usb_host
Enable PIO USB Host on RP2350
2 parents 0184152 + 9838def commit 2991c48

File tree

10 files changed

+230
-163
lines changed

10 files changed

+230
-163
lines changed

ports/raspberrypi/Makefile

Lines changed: 177 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ INC += \
124124
-isystem sdk/src/rp2_common/pico_atomic/include/ \
125125
-isystem sdk/src/rp2_common/pico_bootrom/include/ \
126126
-isystem sdk/src/rp2_common/pico_double/include/ \
127+
-isystem sdk/src/rp2_common/pico_mem_ops/include/ \
127128
-isystem sdk/src/rp2_common/pico_multicore/include/ \
128129
-isystem sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/include/ \
129130
-isystem sdk/src/rp2_common/pico_stdio/include/ \
@@ -217,6 +218,165 @@ endif
217218

218219
LIBS += -lc
219220

221+
PICO_WRAP_FLOAT_AEABI_FLAGS := \
222+
-Wl,--wrap=__aeabi_fadd \
223+
-Wl,--wrap=__aeabi_fdiv \
224+
-Wl,--wrap=__aeabi_fmul \
225+
-Wl,--wrap=__aeabi_frsub \
226+
-Wl,--wrap=__aeabi_fsub \
227+
-Wl,--wrap=__aeabi_cfcmpeq \
228+
-Wl,--wrap=__aeabi_cfrcmple \
229+
-Wl,--wrap=__aeabi_cfcmple \
230+
-Wl,--wrap=__aeabi_fcmpeq \
231+
-Wl,--wrap=__aeabi_fcmplt \
232+
-Wl,--wrap=__aeabi_fcmple \
233+
-Wl,--wrap=__aeabi_fcmpge \
234+
-Wl,--wrap=__aeabi_fcmpgt \
235+
-Wl,--wrap=__aeabi_fcmpun \
236+
-Wl,--wrap=__aeabi_i2f \
237+
-Wl,--wrap=__aeabi_l2f \
238+
-Wl,--wrap=__aeabi_ui2f \
239+
-Wl,--wrap=__aeabi_ul2f \
240+
-Wl,--wrap=__aeabi_f2iz \
241+
-Wl,--wrap=__aeabi_f2lz \
242+
-Wl,--wrap=__aeabi_f2uiz \
243+
-Wl,--wrap=__aeabi_f2ulz \
244+
-Wl,--wrap=__aeabi_f2d \
245+
-Wl,--wrap=sqrtf
246+
247+
PICO_WRAP_FLOAT_SCI_FLAGS := \
248+
-Wl,--wrap=cosf \
249+
-Wl,--wrap=sinf \
250+
-Wl,--wrap=tanf \
251+
-Wl,--wrap=atan2f \
252+
-Wl,--wrap=expf \
253+
-Wl,--wrap=logf \
254+
-Wl,--wrap=ldexpf \
255+
-Wl,--wrap=copysignf \
256+
-Wl,--wrap=truncf \
257+
-Wl,--wrap=floorf \
258+
-Wl,--wrap=ceilf \
259+
-Wl,--wrap=roundf \
260+
-Wl,--wrap=sincosf \
261+
-Wl,--wrap=asinf \
262+
-Wl,--wrap=acosf \
263+
-Wl,--wrap=atanf \
264+
-Wl,--wrap=sinhf \
265+
-Wl,--wrap=coshf \
266+
-Wl,--wrap=tanhf \
267+
-Wl,--wrap=asinhf \
268+
-Wl,--wrap=acoshf \
269+
-Wl,--wrap=atanhf \
270+
-Wl,--wrap=exp2f \
271+
-Wl,--wrap=log2f \
272+
-Wl,--wrap=exp10f \
273+
-Wl,--wrap=log10f \
274+
-Wl,--wrap=powf \
275+
-Wl,--wrap=powintf \
276+
-Wl,--wrap=hypotf \
277+
-Wl,--wrap=cbrtf \
278+
-Wl,--wrap=fmodf \
279+
-Wl,--wrap=dremf \
280+
-Wl,--wrap=remainderf \
281+
-Wl,--wrap=remquof \
282+
-Wl,--wrap=expm1f \
283+
-Wl,--wrap=log1pf \
284+
-Wl,--wrap=fmaf
285+
286+
PICO_WRAP_DOUBLE_FLAGS := \
287+
-Wl,--wrap=__aeabi_dadd \
288+
-Wl,--wrap=__aeabi_ddiv \
289+
-Wl,--wrap=__aeabi_dmul \
290+
-Wl,--wrap=__aeabi_drsub \
291+
-Wl,--wrap=__aeabi_dsub \
292+
-Wl,--wrap=__aeabi_cdcmpeq \
293+
-Wl,--wrap=__aeabi_cdrcmple \
294+
-Wl,--wrap=__aeabi_cdcmple \
295+
-Wl,--wrap=__aeabi_dcmpeq \
296+
-Wl,--wrap=__aeabi_dcmplt \
297+
-Wl,--wrap=__aeabi_dcmple \
298+
-Wl,--wrap=__aeabi_dcmpge \
299+
-Wl,--wrap=__aeabi_dcmpgt \
300+
-Wl,--wrap=__aeabi_dcmpun \
301+
-Wl,--wrap=__aeabi_i2d \
302+
-Wl,--wrap=__aeabi_l2d \
303+
-Wl,--wrap=__aeabi_ui2d \
304+
-Wl,--wrap=__aeabi_ul2d \
305+
-Wl,--wrap=__aeabi_d2iz \
306+
-Wl,--wrap=__aeabi_d2lz \
307+
-Wl,--wrap=__aeabi_d2uiz \
308+
-Wl,--wrap=__aeabi_d2ulz \
309+
-Wl,--wrap=__aeabi_d2f \
310+
-Wl,--wrap=sqrt \
311+
-Wl,--wrap=cos \
312+
-Wl,--wrap=sin \
313+
-Wl,--wrap=tan \
314+
-Wl,--wrap=atan2 \
315+
-Wl,--wrap=exp \
316+
-Wl,--wrap=log \
317+
-Wl,--wrap=ldexp \
318+
-Wl,--wrap=copysign \
319+
-Wl,--wrap=trunc \
320+
-Wl,--wrap=floor \
321+
-Wl,--wrap=ceil \
322+
-Wl,--wrap=round \
323+
-Wl,--wrap=sincos \
324+
-Wl,--wrap=asin \
325+
-Wl,--wrap=acos \
326+
-Wl,--wrap=atan \
327+
-Wl,--wrap=sinh \
328+
-Wl,--wrap=cosh \
329+
-Wl,--wrap=tanh \
330+
-Wl,--wrap=asinh \
331+
-Wl,--wrap=acosh \
332+
-Wl,--wrap=atanh \
333+
-Wl,--wrap=exp2 \
334+
-Wl,--wrap=log2 \
335+
-Wl,--wrap=exp10 \
336+
-Wl,--wrap=log10 \
337+
-Wl,--wrap=pow \
338+
-Wl,--wrap=powint \
339+
-Wl,--wrap=hypot \
340+
-Wl,--wrap=cbrt \
341+
-Wl,--wrap=fmod \
342+
-Wl,--wrap=drem \
343+
-Wl,--wrap=remainder \
344+
-Wl,--wrap=remquo \
345+
-Wl,--wrap=expm1 \
346+
-Wl,--wrap=log1p \
347+
-Wl,--wrap=fma
348+
349+
PICO_WRAP_MEM_OPS_FLAGS := \
350+
-Wl,--wrap=memcpy \
351+
-Wl,--wrap=memset \
352+
-Wl,--wrap=__aeabi_memcpy \
353+
-Wl,--wrap=__aeabi_memset \
354+
-Wl,--wrap=__aeabi_memcpy4 \
355+
-Wl,--wrap=__aeabi_memset4 \
356+
-Wl,--wrap=__aeabi_memcpy8 \
357+
-Wl,--wrap=__aeabi_memset8
358+
359+
# Wrap a bunch of math stuff to use the Pico SDK divider
360+
OTHER_PICO_FLAGS := \
361+
-Wl,--wrap=__aeabi_ldiv0 \
362+
-Wl,--wrap=__aeabi_idiv0 \
363+
-Wl,--wrap=__aeabi_lmul \
364+
-Wl,--wrap=__clzsi2 \
365+
-Wl,--wrap=__clzdi2 \
366+
-Wl,--wrap=__ctzsi2 \
367+
-Wl,--wrap=__ctzdi2 \
368+
-Wl,--wrap=__popcountsi2 \
369+
-Wl,--wrap=__popcountdi2 \
370+
-Wl,--wrap=__clz \
371+
-Wl,--wrap=__clzl \
372+
-Wl,--wrap=__clzll \
373+
-Wl,--wrap=__aeabi_idiv \
374+
-Wl,--wrap=__aeabi_idivmod \
375+
-Wl,--wrap=__aeabi_ldivmod \
376+
-Wl,--wrap=__aeabi_uidiv \
377+
-Wl,--wrap=__aeabi_uidivmod \
378+
-Wl,--wrap=__aeabi_uldivmod
379+
220380
ifeq ($(CHIP_VARIANT),RP2040)
221381
CFLAGS += \
222382
-march=armv6-m \
@@ -233,7 +393,7 @@ SRC_SDK_CHIP_VARIANT := \
233393
src/rp2_common/hardware_rtc/rtc.c \
234394
src/rp2_common/pico_double/double_init_rom_rp2040.c \
235395
src/rp2_common/pico_float/float_init_rom_rp2040.c \
236-
src/rp2_common/pico_float/float_math.c \
396+
src/rp2_common/pico_mem_ops/mem_ops.c \
237397

238398
SRC_S_UPPER_CHIP_VARIANT := \
239399
sdk/src/rp2_common/hardware_divider/divider.S \
@@ -243,155 +403,12 @@ SRC_S_UPPER_CHIP_VARIANT := \
243403
sdk/src/rp2_common/pico_float/float_aeabi_rp2040.S \
244404
sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S \
245405

246-
# Wrap a bunch of math stuff to use the Pico SDK divider
247-
PICO_LDFLAGS += -Wl,--wrap=__aeabi_ldiv0 \
248-
-Wl,--wrap=__aeabi_idiv0 \
249-
-Wl,--wrap=__aeabi_lmul \
250-
-Wl,--wrap=__clzsi2 \
251-
-Wl,--wrap=__clzdi2 \
252-
-Wl,--wrap=__ctzsi2 \
253-
-Wl,--wrap=__ctzdi2 \
254-
-Wl,--wrap=__popcountsi2 \
255-
-Wl,--wrap=__popcountdi2 \
256-
-Wl,--wrap=__clz \
257-
-Wl,--wrap=__clzl \
258-
-Wl,--wrap=__clzll \
259-
-Wl,--wrap=__aeabi_idiv \
260-
-Wl,--wrap=__aeabi_idivmod \
261-
-Wl,--wrap=__aeabi_ldivmod \
262-
-Wl,--wrap=__aeabi_uidiv \
263-
-Wl,--wrap=__aeabi_uidivmod \
264-
-Wl,--wrap=__aeabi_uldivmod \
265-
-Wl,--wrap=__aeabi_dadd \
266-
-Wl,--wrap=__aeabi_ddiv \
267-
-Wl,--wrap=__aeabi_dmul \
268-
-Wl,--wrap=__aeabi_drsub \
269-
-Wl,--wrap=__aeabi_dsub \
270-
-Wl,--wrap=__aeabi_cdcmpeq \
271-
-Wl,--wrap=__aeabi_cdrcmple \
272-
-Wl,--wrap=__aeabi_cdcmple \
273-
-Wl,--wrap=__aeabi_dcmpeq \
274-
-Wl,--wrap=__aeabi_dcmplt \
275-
-Wl,--wrap=__aeabi_dcmple \
276-
-Wl,--wrap=__aeabi_dcmpge \
277-
-Wl,--wrap=__aeabi_dcmpgt \
278-
-Wl,--wrap=__aeabi_dcmpun \
279-
-Wl,--wrap=__aeabi_i2d \
280-
-Wl,--wrap=__aeabi_l2d \
281-
-Wl,--wrap=__aeabi_ui2d \
282-
-Wl,--wrap=__aeabi_ul2d \
283-
-Wl,--wrap=__aeabi_d2iz \
284-
-Wl,--wrap=__aeabi_d2lz \
285-
-Wl,--wrap=__aeabi_d2uiz \
286-
-Wl,--wrap=__aeabi_d2ulz \
287-
-Wl,--wrap=__aeabi_d2f \
288-
-Wl,--wrap=sqrt \
289-
-Wl,--wrap=cos \
290-
-Wl,--wrap=sin \
291-
-Wl,--wrap=tan \
292-
-Wl,--wrap=atan2 \
293-
-Wl,--wrap=exp \
294-
-Wl,--wrap=log \
295-
-Wl,--wrap=ldexp \
296-
-Wl,--wrap=copysign \
297-
-Wl,--wrap=trunc \
298-
-Wl,--wrap=floor \
299-
-Wl,--wrap=ceil \
300-
-Wl,--wrap=round \
301-
-Wl,--wrap=sincos \
302-
-Wl,--wrap=asin \
303-
-Wl,--wrap=acos \
304-
-Wl,--wrap=atan \
305-
-Wl,--wrap=sinh \
306-
-Wl,--wrap=cosh \
307-
-Wl,--wrap=tanh \
308-
-Wl,--wrap=asinh \
309-
-Wl,--wrap=acosh \
310-
-Wl,--wrap=atanh \
311-
-Wl,--wrap=exp2 \
312-
-Wl,--wrap=log2 \
313-
-Wl,--wrap=exp10 \
314-
-Wl,--wrap=log10 \
315-
-Wl,--wrap=pow \
316-
-Wl,--wrap=powint \
317-
-Wl,--wrap=hypot \
318-
-Wl,--wrap=cbrt \
319-
-Wl,--wrap=fmod \
320-
-Wl,--wrap=drem \
321-
-Wl,--wrap=remainder \
322-
-Wl,--wrap=remquo \
323-
-Wl,--wrap=expm1 \
324-
-Wl,--wrap=log1p \
325-
-Wl,--wrap=fma \
326-
-Wl,--wrap=__aeabi_fadd \
327-
-Wl,--wrap=__aeabi_fdiv \
328-
-Wl,--wrap=__aeabi_fmul \
329-
-Wl,--wrap=__aeabi_frsub \
330-
-Wl,--wrap=__aeabi_fsub \
331-
-Wl,--wrap=__aeabi_cfcmpeq \
332-
-Wl,--wrap=__aeabi_cfrcmple \
333-
-Wl,--wrap=__aeabi_cfcmple \
334-
-Wl,--wrap=__aeabi_fcmpeq \
335-
-Wl,--wrap=__aeabi_fcmplt \
336-
-Wl,--wrap=__aeabi_fcmple \
337-
-Wl,--wrap=__aeabi_fcmpge \
338-
-Wl,--wrap=__aeabi_fcmpgt \
339-
-Wl,--wrap=__aeabi_fcmpun \
340-
-Wl,--wrap=__aeabi_i2f \
341-
-Wl,--wrap=__aeabi_l2f \
342-
-Wl,--wrap=__aeabi_ui2f \
343-
-Wl,--wrap=__aeabi_ul2f \
344-
-Wl,--wrap=__aeabi_f2iz \
345-
-Wl,--wrap=__aeabi_f2lz \
346-
-Wl,--wrap=__aeabi_f2uiz \
347-
-Wl,--wrap=__aeabi_f2ulz \
348-
-Wl,--wrap=__aeabi_f2d \
349-
-Wl,--wrap=sqrtf \
350-
-Wl,--wrap=cosf \
351-
-Wl,--wrap=sinf \
352-
-Wl,--wrap=tanf \
353-
-Wl,--wrap=atan2f \
354-
-Wl,--wrap=expf \
355-
-Wl,--wrap=logf \
356-
-Wl,--wrap=ldexpf \
357-
-Wl,--wrap=copysignf \
358-
-Wl,--wrap=truncf \
359-
-Wl,--wrap=floorf \
360-
-Wl,--wrap=ceilf \
361-
-Wl,--wrap=roundf \
362-
-Wl,--wrap=sincosf \
363-
-Wl,--wrap=asinf \
364-
-Wl,--wrap=acosf \
365-
-Wl,--wrap=atanf \
366-
-Wl,--wrap=sinhf \
367-
-Wl,--wrap=coshf \
368-
-Wl,--wrap=tanhf \
369-
-Wl,--wrap=asinhf \
370-
-Wl,--wrap=acoshf \
371-
-Wl,--wrap=atanhf \
372-
-Wl,--wrap=exp2f \
373-
-Wl,--wrap=log2f \
374-
-Wl,--wrap=exp10f \
375-
-Wl,--wrap=log10f \
376-
-Wl,--wrap=powf \
377-
-Wl,--wrap=powintf \
378-
-Wl,--wrap=hypotf \
379-
-Wl,--wrap=cbrtf \
380-
-Wl,--wrap=fmodf \
381-
-Wl,--wrap=dremf \
382-
-Wl,--wrap=remainderf \
383-
-Wl,--wrap=remquof \
384-
-Wl,--wrap=expm1f \
385-
-Wl,--wrap=log1pf \
386-
-Wl,--wrap=fmaf \
387-
-Wl,--wrap=memcpy \
388-
-Wl,--wrap=memset \
389-
-Wl,--wrap=__aeabi_memcpy \
390-
-Wl,--wrap=__aeabi_memset \
391-
-Wl,--wrap=__aeabi_memcpy4 \
392-
-Wl,--wrap=__aeabi_memset4 \
393-
-Wl,--wrap=__aeabi_memcpy8 \
394-
-Wl,--wrap=__aeabi_memset8
406+
PICO_LDFLAGS += \
407+
$(PICO_WRAP_FLOAT_AEABI_FLAGS) \
408+
$(PICO_WRAP_FLOAT_SCI_FLAGS) \
409+
$(PICO_WRAP_DOUBLE_FLAGS) \
410+
$(PICO_WRAP_MEM_OPS_FLAGS) \
411+
$(OTHER_PICO_FLAGS)
395412

396413
UF2_ID = 0xE48BFF56
397414

@@ -418,6 +435,15 @@ CFLAGS += -DPICO_RP2350=1
418435
SRC_SDK_CHIP_VARIANT := \
419436
src/rp2_common/hardware_powman/powman.c \
420437

438+
SRC_S_UPPER_CHIP_VARIANT := \
439+
sdk/src/rp2_common/pico_double/double_conv_m33.S \
440+
sdk/src/rp2_common/pico_double/double_fma_dcp.S \
441+
sdk/src/rp2_common/pico_double/double_sci_m33.S \
442+
sdk/src/rp2_common/pico_float/float_sci_m33_vfp.S \
443+
sdk/src/rp2_common/pico_float/float_conv_m33.S \
444+
445+
PICO_LDFLAGS += $(PICO_WRAP_FLOAT_SCI_FLAGS) $(PICO_WRAP_DOUBLE_FLAGS)
446+
421447
ifeq ($(CHIP_PACKAGE),A)
422448
CFLAGS += -DPICO_RP2350A=1
423449
CFLAGS += -DPICO_RP2350B=0
@@ -464,6 +490,7 @@ SRC_SDK := \
464490
src/rp2_common/pico_bootsel_via_double_reset/pico_bootsel_via_double_reset.c \
465491
src/rp2_common/pico_clib_interface/newlib_interface.c \
466492
src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c \
493+
src/rp2_common/pico_float/float_math.c \
467494
src/rp2_common/pico_multicore/multicore.c \
468495
src/rp2_common/pico_platform_panic/panic.c \
469496
src/rp2_common/pico_printf/printf.c \

ports/raspberrypi/boards/adafruit_feather_rp2350/mpconfigboard.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ EXTERNAL_FLASH_DEVICES = "GD25Q64C,W25Q64JVxQ"
1111

1212
CIRCUITPY_ALARM = 0
1313
CIRCUITPY_RGBMATRIX = 0
14-
CIRCUITPY_USB_HOST = 0
1514

1615
CIRCUITPY_FLOPPYIO = 0
1716
CIRCUITPY_PICODVI = 1

ports/raspberrypi/boards/adafruit_metro_rp2350/mpconfigboard.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,3 @@ EXTERNAL_FLASH_DEVICES = "W25Q128JVxQ"
1111

1212
CIRCUITPY_ALARM = 0
1313
CIRCUITPY_RGBMATRIX = 0
14-
CIRCUITPY_USB_HOST = 0

ports/raspberrypi/boards/cytron_iriv_io_controller/mpconfigboard.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ"
1212
CIRCUITPY__EVE = 1
1313
CIRCUITPY_ALARM = 0
1414
CIRCUITPY_RGBMATRIX = 0
15-
CIRCUITPY_USB_HOST = 0
1615

1716
# Include these Python libraries in firmware.
1817
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SimpleIO

ports/raspberrypi/boards/cytron_motion_2350_pro/mpconfigboard.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ"
1212
CIRCUITPY__EVE = 1
1313
CIRCUITPY_ALARM = 0
1414
CIRCUITPY_RGBMATRIX = 0
15-
CIRCUITPY_USB_HOST = 0
1615

1716
# Include these Python libraries in firmware.
1817
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel

0 commit comments

Comments
 (0)