Skip to content

Commit 2991c48

Browse files
authored
Merge pull request adafruit#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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy