Including the rp2350 stack on my OS #3341
Edo-Franzi
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Dear all,
I would like to port the TinyUSB stack for the RP2350 to my OS.
As I already did with other CPUs, I have created a static library (.a) that contains all the required
TinyUSB .c files, as well as the necessary pico-sdk .c and .S files.
The runtime and the vector table handling are not included in the library and are provided by the OS.
As soon as tud_init(BOARD_TUD_RHPORT) is called, the CPU ends up in a BusFault exception.
Has anyone already done this kind of integration or experienced a similar issue?
Any hints or suggestions on how to fix or debug this would be very welcome.
Kind regards,
Edo
Here is the list of the modules I compile and I include in my archive.a
ifeq ($(PROVIDER), raspberry)
PATH_INCLUDES += -I$(PATH_OS)/Ports/EquatesModels/Generic/Runtime
PATH_INCLUDES += -I$(PATH_OS)/Ports/EquatesModels/SOCs/$(SOC)/Includes
PATH_INCLUDES += -I$(PATH_OS)/Ports/EquatesModels/Cores/$(CORE)/Includes
PATH_INCLUDES += -I$(PATH_TINYUSB)/OS_Interface/Includes/mcu/$(PROVIDER)
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/common/pico_base_headers/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/pico_platform/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_base/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_irq/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_resets/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_sync/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_sync_spin_lock/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_timer/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_claim/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_structs/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/pico_platform_compiler/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/pico_platform_sections/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/pico_platform_panic/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/pico_platform_common/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2350/pico_platform/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2350/hardware_structs/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2350/hardware_regs/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/bazel/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/pico_runtime_init/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/pico_runtime/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/common/hardware_claim/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/common/pico_sync/include
PATH_INCLUDES += -I$(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/common/pico_time/include
endif
SRC = $(PATH_TINYUSB)/OS_System/headerTusb.c$(PATH_TINYUSB)/OS_Interface/Descriptors/$ (PROFILE)/usb_descriptors.c$(shell find $ (PATH_TINYUSB)/TinyUSB-current/src/class -name '.c')$(shell find $ (PATH_TINYUSB)/TinyUSB-current/src/device -name '.c')$(shell find $ (PATH_TINYUSB)/TinyUSB-current/src/osal -name '.c')
SRC +=
SRC += $(PATH_TINYUSB)/OS_Interface/OSAL/tusb_os_custom.c
SRC += $(PATH_TINYUSB)/TinyUSB-current/src/tusb.c
SRC +=
SRC += $(shell find $(PATH_TINYUSB)/TinyUSB-current/src/common -name '.c')
SRC +=
SRC += $(shell find $(PATH_TINYUSB)/TinyUSB-current/src/host -name '.c')
SRC +=
SRC += $(shell find $(PATH_TINYUSB)/TinyUSB-current/src/typec -name '.c')
ifeq ($(PROVIDER), raspberry)$(shell find $ (PATH_TINYUSB)/TinyUSB-current/src/portable/raspberrypi -name '*.c')$(PATH_TINYUSB)/Library/Family/$ (FAMILY)/$(SOC)/init.c
SRC +=
SRC += $(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/common/hardware_claim/claim.c
SRC_A += $(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S
SRC += $(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_irq/irq.c
SRC += $(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/pico_platform_panic/panic.c
SRC += $(PATH_TINYUSB)/TinyUSB-current/lib/pico-sdk/src/rp2_common/hardware_sync_spin_lock/sync_spin_lock.c
SRC +=
endif
On the OS side, as nornal, I initialise the necessary periphs and call the tusb_xyz functions
void stub_TinyUSB_init(void) {
}
void stub_TinyUSB_cyclic(void) {
// Periodically called
}
static void local_USB_FS_IRQHandler(void) {
}
Beta Was this translation helpful? Give feedback.
All reactions