|
|
@@ -23,7 +23,7 @@ if (NOT TARGET _rp2040_family_inclusion_marker)
|
|
|
set(PICO_TINYUSB_PATH ${TOP})
|
|
|
endif()
|
|
|
|
|
|
- #------------------------------------
|
|
|
+ #------------------------------------
|
|
|
# Base config for both device and host; wrapped by SDK's tinyusb_common
|
|
|
#------------------------------------
|
|
|
add_library(tinyusb_common_base INTERFACE)
|
|
|
@@ -50,7 +50,7 @@ if (NOT TARGET _rp2040_family_inclusion_marker)
|
|
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
message("Compiling TinyUSB with CFG_TUSB_DEBUG=1")
|
|
|
set(TINYUSB_DEBUG_LEVEL 1)
|
|
|
- endif ()
|
|
|
+ endif()
|
|
|
|
|
|
target_compile_definitions(tinyusb_common_base INTERFACE
|
|
|
CFG_TUSB_MCU=OPT_MCU_RP2040
|
|
|
@@ -58,44 +58,13 @@ if (NOT TARGET _rp2040_family_inclusion_marker)
|
|
|
CFG_TUSB_DEBUG=${TINYUSB_DEBUG_LEVEL}
|
|
|
)
|
|
|
|
|
|
- #------------------------------------
|
|
|
- # PIO USB for both host and device
|
|
|
- #------------------------------------
|
|
|
- add_library(pico_pio_usb INTERFACE)
|
|
|
-
|
|
|
- if (NOT DEFINED PICO_PIO_USB_PATH)
|
|
|
- set(PICO_PIO_USB_PATH "${TOP}/hw/mcu/raspberry_pi/Pico-PIO-USB")
|
|
|
- endif()
|
|
|
-
|
|
|
- target_sources(pico_pio_usb INTERFACE
|
|
|
- ${PICO_PIO_USB_PATH}/src/pio_usb.c
|
|
|
- ${PICO_PIO_USB_PATH}/src/pio_usb_host.c
|
|
|
- ${PICO_PIO_USB_PATH}/src/pio_usb_device.c
|
|
|
- ${PICO_PIO_USB_PATH}/src/usb_crc.c
|
|
|
- )
|
|
|
-
|
|
|
- target_include_directories(pico_pio_usb INTERFACE
|
|
|
- ${PICO_PIO_USB_PATH}/src
|
|
|
- )
|
|
|
-
|
|
|
- target_link_libraries(pico_pio_usb INTERFACE
|
|
|
- hardware_dma
|
|
|
- hardware_pio
|
|
|
- pico_multicore
|
|
|
- )
|
|
|
-
|
|
|
- target_compile_definitions(pico_pio_usb INTERFACE
|
|
|
- PIO_USB_USE_TINYUSB
|
|
|
- )
|
|
|
-
|
|
|
- #------------------------------------
|
|
|
+ #------------------------------------
|
|
|
# Base config for device mode; wrapped by SDK's tinyusb_device
|
|
|
#------------------------------------
|
|
|
add_library(tinyusb_device_base INTERFACE)
|
|
|
target_sources(tinyusb_device_base INTERFACE
|
|
|
${TOP}/src/portable/raspberrypi/rp2040/dcd_rp2040.c
|
|
|
${TOP}/src/portable/raspberrypi/rp2040/rp2040_usb.c
|
|
|
- ${TOP}/src/portable/raspberrypi/pio_usb/dcd_pio_usb.c
|
|
|
${TOP}/src/device/usbd.c
|
|
|
${TOP}/src/device/usbd_control.c
|
|
|
${TOP}/src/class/audio/audio_device.c
|
|
|
@@ -119,7 +88,6 @@ if (NOT TARGET _rp2040_family_inclusion_marker)
|
|
|
target_sources(tinyusb_host_base INTERFACE
|
|
|
${TOP}/src/portable/raspberrypi/rp2040/hcd_rp2040.c
|
|
|
${TOP}/src/portable/raspberrypi/rp2040/rp2040_usb.c
|
|
|
- ${TOP}/src/portable/raspberrypi/pio_usb/hcd_pio_usb.c
|
|
|
${TOP}/src/host/usbh.c
|
|
|
${TOP}/src/host/hub.c
|
|
|
${TOP}/src/class/cdc/cdc_host.c
|
|
|
@@ -140,8 +108,8 @@ if (NOT TARGET _rp2040_family_inclusion_marker)
|
|
|
target_sources(tinyusb_bsp INTERFACE
|
|
|
${TOP}/hw/bsp/rp2040/family.c
|
|
|
)
|
|
|
-# target_include_directories(tinyusb_bsp INTERFACE
|
|
|
-# ${TOP}/hw/bsp/rp2040)
|
|
|
+ # target_include_directories(tinyusb_bsp INTERFACE
|
|
|
+ # ${TOP}/hw/bsp/rp2040)
|
|
|
|
|
|
# tinyusb_additions will hold our extra settings for examples
|
|
|
add_library(tinyusb_additions INTERFACE)
|
|
|
@@ -151,22 +119,22 @@ if (NOT TARGET _rp2040_family_inclusion_marker)
|
|
|
)
|
|
|
|
|
|
if(DEFINED LOG)
|
|
|
- target_compile_definitions(tinyusb_additions INTERFACE CFG_TUSB_DEBUG=${LOG} )
|
|
|
+ target_compile_definitions(tinyusb_additions INTERFACE CFG_TUSB_DEBUG=${LOG})
|
|
|
endif()
|
|
|
|
|
|
if(LOGGER STREQUAL "rtt")
|
|
|
- target_compile_definitions(tinyusb_additions INTERFACE
|
|
|
- LOGGER_RTT
|
|
|
- SEGGER_RTT_MODE_DEFAULT=SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL
|
|
|
- )
|
|
|
-
|
|
|
- target_sources(tinyusb_additions INTERFACE
|
|
|
- ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c
|
|
|
- )
|
|
|
-
|
|
|
- target_include_directories(tinyusb_additions INTERFACE
|
|
|
- ${TOP}/lib/SEGGER_RTT/RTT
|
|
|
- )
|
|
|
+ target_compile_definitions(tinyusb_additions INTERFACE
|
|
|
+ LOGGER_RTT
|
|
|
+ SEGGER_RTT_MODE_DEFAULT=SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL
|
|
|
+ )
|
|
|
+
|
|
|
+ target_sources(tinyusb_additions INTERFACE
|
|
|
+ ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c
|
|
|
+ )
|
|
|
+
|
|
|
+ target_include_directories(tinyusb_additions INTERFACE
|
|
|
+ ${TOP}/lib/SEGGER_RTT/RTT
|
|
|
+ )
|
|
|
endif()
|
|
|
|
|
|
#------------------------------------
|
|
|
@@ -189,41 +157,81 @@ if (NOT TARGET _rp2040_family_inclusion_marker)
|
|
|
target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_host)
|
|
|
endfunction()
|
|
|
|
|
|
- function(family_configure_pico_pio_usb_example TARGET)
|
|
|
+ function(family_add_pico_pio_usb TARGET)
|
|
|
+ target_link_libraries(${TARGET} PUBLIC tinyusb_pico_pio_usb)
|
|
|
+ endfunction()
|
|
|
+
|
|
|
+ function(family_configure_dual_usb_example TARGET)
|
|
|
family_configure_target(${TARGET})
|
|
|
- target_link_libraries(${TARGET} PUBLIC pico_stdlib pico_pio_usb)
|
|
|
- pico_generate_pio_header(tinyusb_common_base ${PICO_PIO_USB_PATH}/src/usb_tx.pio)
|
|
|
- pico_generate_pio_header(tinyusb_common_base ${PICO_PIO_USB_PATH}/src/usb_rx.pio)
|
|
|
+ # require tinyusb_pico_pio_usb
|
|
|
+ target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_device tinyusb_host tinyusb_pico_pio_usb )
|
|
|
endfunction()
|
|
|
|
|
|
+ function(check_and_add_pico_pio_usb_support)
|
|
|
+ # check for pico_generate_pio_header (as depending on environment we may be called before SDK is
|
|
|
+ # initialized in which case it isn't available yet), and only do the initialization once
|
|
|
+ if (COMMAND pico_generate_pio_header AND NOT TARGET tinyusb_pico_pio_usb)
|
|
|
+ #------------------------------------
|
|
|
+ # PIO USB for both host and device
|
|
|
+ #------------------------------------
|
|
|
+
|
|
|
+ if (NOT DEFINED PICO_PIO_USB_PATH)
|
|
|
+ set(PICO_PIO_USB_PATH "${TOP}/hw/mcu/raspberry_pi/Pico-PIO-USB")
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if (EXISTS ${PICO_PIO_USB_PATH}/src/pio_usb.c)
|
|
|
+ add_library(tinyusb_pico_pio_usb INTERFACE)
|
|
|
+ target_sources(tinyusb_device_base INTERFACE
|
|
|
+ ${TOP}/src/portable/raspberrypi/pio_usb/dcd_pio_usb.c
|
|
|
+ )
|
|
|
+ target_sources(tinyusb_host_base INTERFACE
|
|
|
+ ${TOP}/src/portable/raspberrypi/pio_usb/hcd_pio_usb.c
|
|
|
+ )
|
|
|
+
|
|
|
+ target_sources(tinyusb_pico_pio_usb INTERFACE
|
|
|
+ ${PICO_PIO_USB_PATH}/src/pio_usb.c
|
|
|
+ ${PICO_PIO_USB_PATH}/src/pio_usb_host.c
|
|
|
+ ${PICO_PIO_USB_PATH}/src/pio_usb_device.c
|
|
|
+ ${PICO_PIO_USB_PATH}/src/usb_crc.c
|
|
|
+ )
|
|
|
+
|
|
|
+ target_include_directories(tinyusb_pico_pio_usb INTERFACE
|
|
|
+ ${PICO_PIO_USB_PATH}/src
|
|
|
+ )
|
|
|
+
|
|
|
+ target_link_libraries(tinyusb_pico_pio_usb INTERFACE
|
|
|
+ hardware_dma
|
|
|
+ hardware_pio
|
|
|
+ pico_multicore
|
|
|
+ )
|
|
|
+
|
|
|
+ target_compile_definitions(tinyusb_pico_pio_usb INTERFACE
|
|
|
+ PIO_USB_USE_TINYUSB
|
|
|
+ )
|
|
|
+
|
|
|
+ pico_generate_pio_header(tinyusb_pico_pio_usb ${PICO_PIO_USB_PATH}/src/usb_tx.pio)
|
|
|
+ pico_generate_pio_header(tinyusb_pico_pio_usb ${PICO_PIO_USB_PATH}/src/usb_rx.pio)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ endfunction()
|
|
|
+
|
|
|
+ # Try to add Pico-PIO_USB support now for the case where this file is included directly
|
|
|
+ # after Pico SDK initialization, but without using the family_ functions (as is the case
|
|
|
+ # when included by the SDK itself)
|
|
|
+ check_and_add_pico_pio_usb_support()
|
|
|
+
|
|
|
function(family_initialize_project PROJECT DIR)
|
|
|
# call the original version of this function from family_common.cmake
|
|
|
_family_initialize_project(${PROJECT} ${DIR})
|
|
|
enable_language(C CXX ASM)
|
|
|
pico_sdk_init()
|
|
|
+
|
|
|
+ # now re-check for adding Pico-PIO_USB support now SDK is definitely available
|
|
|
+ check_and_add_pico_pio_usb_support()
|
|
|
endfunction()
|
|
|
|
|
|
# This method must be called from the project scope to suppress known warnings in TinyUSB source files
|
|
|
function(suppress_tinyusb_warnings)
|
|
|
- set_source_files_properties(
|
|
|
- ${PICO_TINYUSB_PATH}/src/tusb.c
|
|
|
- PROPERTIES
|
|
|
- COMPILE_FLAGS "-Wno-conversion")
|
|
|
- set_source_files_properties(
|
|
|
- ${PICO_TINYUSB_PATH}/src/common/tusb_fifo.c
|
|
|
- PROPERTIES
|
|
|
- COMPILE_FLAGS "-Wno-conversion -Wno-cast-qual")
|
|
|
- set_source_files_properties(
|
|
|
- ${PICO_TINYUSB_PATH}/src/device/usbd.c
|
|
|
- PROPERTIES
|
|
|
- COMPILE_FLAGS "-Wno-conversion -Wno-cast-qual -Wno-null-dereference")
|
|
|
- set_source_files_properties(
|
|
|
- ${PICO_TINYUSB_PATH}/src/device/usbd_control.c
|
|
|
- PROPERTIES
|
|
|
- COMPILE_FLAGS "-Wno-conversion")
|
|
|
- set_source_files_properties(
|
|
|
- ${PICO_TINYUSB_PATH}/src/class/cdc/cdc_device.c
|
|
|
- PROPERTIES
|
|
|
- COMPILE_FLAGS "-Wno-conversion")
|
|
|
+ # there are currently no warnings to suppress, however this function must still exist
|
|
|
endfunction()
|
|
|
endif()
|