summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2026-04-16 10:18:54 +0700
committerGitHub <[email protected]>2026-04-16 10:18:54 +0700
commit81641e35c67ea8197397d1d03c666e94db6fdaec (patch)
tree052b672ede4a84983b374b8a8c9534b17edf5939 /hw
parent3cfe7a0ed1c8c0ca7b1ad747cfce502a5312bf1c (diff)
parente7642cf753b67bcfee21983e2caa292c2722ba4c (diff)
Merge pull request #3598 from hathach/worktree-rp2040-freertos
Add FreeRTOS support for RP2040/RP2350
Diffstat (limited to 'hw')
-rw-r--r--hw/bsp/family_support.cmake45
-rw-r--r--hw/bsp/family_support.mk1
-rw-r--r--hw/bsp/rp2040/FreeRTOSConfig/FreeRTOSConfig.h144
-rw-r--r--hw/bsp/rp2040/family.c14
-rw-r--r--hw/bsp/rp2040/family.cmake160
5 files changed, 233 insertions, 131 deletions
diff --git a/hw/bsp/family_support.cmake b/hw/bsp/family_support.cmake
index 2274515e4..cb8ec6cf8 100644
--- a/hw/bsp/family_support.cmake
+++ b/hw/bsp/family_support.cmake
@@ -367,24 +367,37 @@ endfunction()
# Most families use these settings except rp2040 and espressif
#-------------------------------------------------------------
function(family_add_board BOARD_TARGET)
- # empty function, should be redefined in FAMILY/family.cmake
+ # empty function, should be overridden in FAMILY/family.cmake
endfunction()
# Add RTOS to example
function(family_add_rtos TARGET RTOS)
if (RTOS STREQUAL "freertos")
- if (NOT TARGET freertos_config)
- add_library(freertos_config INTERFACE)
- target_include_directories(freertos_config INTERFACE ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${FAMILY}/FreeRTOSConfig)
- # add board definition to freertos_config mostly for SystemCoreClock
- target_link_libraries(freertos_config INTERFACE board_${BOARD})
- endif()
+ # RP2040 family uses Raspberry Pi's FreeRTOS-Kernel fork with platform-specific SMP port
+ if (FAMILY STREQUAL "rp2040")
+ if (NOT TARGET FreeRTOS-Kernel)
+ set(FREERTOS_KERNEL_PATH ${TOP}/hw/mcu/raspberry_pi/FreeRTOS-Kernel)
+ set(FREERTOS_CONFIG_FILE_DIRECTORY ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${FAMILY}/FreeRTOSConfig)
+ # FreeRTOS_Kernel_import.cmake auto-selects RP2040/RP2350/RISC-V port based on PICO_PLATFORM
+ include(${FREERTOS_KERNEL_PATH}/portable/ThirdParty/GCC/RP2040/FreeRTOS_Kernel_import.cmake)
+ endif()
+ target_link_libraries(${TARGET} PUBLIC FreeRTOS-Kernel-Static)
+ else()
+ # All other families: use upstream FreeRTOS-Kernel with add_subdirectory
+ if (NOT TARGET freertos_config)
+ add_library(freertos_config INTERFACE)
+ target_include_directories(freertos_config INTERFACE
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${FAMILY}/FreeRTOSConfig)
+ target_link_libraries(freertos_config INTERFACE board_${BOARD})
+ endif()
- if (NOT TARGET freertos_kernel)
- add_subdirectory(${TOP}/lib/FreeRTOS-Kernel ${CMAKE_BINARY_DIR}/lib/freertos_kernel)
- endif ()
+ if (NOT TARGET freertos_kernel)
+ add_subdirectory(${TOP}/lib/FreeRTOS-Kernel ${CMAKE_BINARY_DIR}/lib/freertos_kernel)
+ endif ()
+
+ target_link_libraries(${TARGET} PUBLIC freertos_kernel)
+ endif()
- target_link_libraries(${TARGET} PUBLIC freertos_kernel)
target_compile_definitions(${TARGET} PUBLIC CFG_TUSB_OS=OPT_OS_FREERTOS)
elseif (RTOS STREQUAL "threadx")
if (NOT TARGET threadx)
@@ -465,7 +478,11 @@ function(family_configure_common TARGET RTOS)
target_compile_definitions(${TARGET} PUBLIC LOGGER_UART)
endif ()
- if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ if (FAMILY STREQUAL "rp2040")
+ # RP2040: apply warnings per-source-file (not per-target) since Pico SDK sources
+ # are INTERFACE and would not inherit target-level warnings correctly
+ family_add_default_example_warnings(${TARGET})
+ elseif (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
target_compile_options(${TARGET} PRIVATE ${WARN_FLAGS_${CMAKE_C_COMPILER_ID}})
target_link_options(${TARGET} PUBLIC "LINKER:-Map=$<TARGET_FILE:${TARGET}>.map")
if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0
@@ -557,11 +574,11 @@ endfunction()
#-------------------------------------------------------
# Example Target Configure (Default rule)
-# These function can be redefined in FAMILY/family.cmake
+# These function can be overridden in FAMILY/family.cmake
#--------------------------------------------------------
function(family_configure_example TARGET RTOS)
- # empty function, should be redefined in FAMILY/family.cmake
+ # empty function, should be overridden in FAMILY/family.cmake
endfunction()
# Configure device example with RTOS
diff --git a/hw/bsp/family_support.mk b/hw/bsp/family_support.mk
index 69aa08922..6b08f6e88 100644
--- a/hw/bsp/family_support.mk
+++ b/hw/bsp/family_support.mk
@@ -170,6 +170,7 @@ ifeq ($(RTOS),freertos)
# Suppress FreeRTOS source warnings
CFLAGS += -Wno-error=cast-qual
+ CFLAGS += -Wno-error=null-dereference
# FreeRTOS (lto + Os) linker issue
LDFLAGS += -Wl,--undefined=vTaskSwitchContext
diff --git a/hw/bsp/rp2040/FreeRTOSConfig/FreeRTOSConfig.h b/hw/bsp/rp2040/FreeRTOSConfig/FreeRTOSConfig.h
new file mode 100644
index 000000000..fe030e6dc
--- /dev/null
+++ b/hw/bsp/rp2040/FreeRTOSConfig/FreeRTOSConfig.h
@@ -0,0 +1,144 @@
+/*
+ * FreeRTOS V202111.00
+ * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * http://www.FreeRTOS.org
+ * http://aws.amazon.com/freertos
+ *
+ * 1 tab == 4 spaces!
+ */
+
+#ifndef FREERTOS_CONFIG_H
+#define FREERTOS_CONFIG_H
+
+/* Scheduler Related */
+#define configUSE_PREEMPTION 1
+#define configUSE_TICKLESS_IDLE 0
+#define configUSE_IDLE_HOOK 0
+#define configUSE_TICK_HOOK 0
+#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
+#define configMAX_PRIORITIES 5
+#define configMINIMAL_STACK_SIZE ( configSTACK_DEPTH_TYPE ) 128
+#define configUSE_16_BIT_TICKS 0
+#define configIDLE_SHOULD_YIELD 1
+
+/* Synchronization Related */
+#define configUSE_MUTEXES 1
+#define configUSE_RECURSIVE_MUTEXES 1
+#define configUSE_APPLICATION_TASK_TAG 0
+#define configUSE_COUNTING_SEMAPHORES 1
+#define configQUEUE_REGISTRY_SIZE 4
+#define configUSE_QUEUE_SETS 0
+#define configUSE_TIME_SLICING 0
+#define configUSE_NEWLIB_REENTRANT 0
+#define configENABLE_BACKWARD_COMPATIBILITY 1
+#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 5
+
+/* System */
+#define configSTACK_DEPTH_TYPE uint32_t
+#define configMESSAGE_BUFFER_LENGTH_TYPE size_t
+
+/* Memory allocation related definitions. */
+#define configSUPPORT_STATIC_ALLOCATION 1
+#define configSUPPORT_DYNAMIC_ALLOCATION 0
+#define configTOTAL_HEAP_SIZE ( configSUPPORT_DYNAMIC_ALLOCATION * 4 * 1024 )
+#define configAPPLICATION_ALLOCATED_HEAP 0
+
+/* Hook function related definitions. */
+#define configCHECK_FOR_STACK_OVERFLOW 2
+#define configUSE_MALLOC_FAILED_HOOK 0
+#define configUSE_DAEMON_TASK_STARTUP_HOOK 0
+#define configCHECK_HANDLER_INSTALLATION 0
+
+/* Run time and task stats gathering related definitions. */
+#define configGENERATE_RUN_TIME_STATS 0
+#define configRECORD_STACK_HIGH_ADDRESS 1
+#define configUSE_TRACE_FACILITY 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
+
+/* Co-routine definitions. */
+#define configUSE_CO_ROUTINES 0
+#define configMAX_CO_ROUTINE_PRIORITIES 2
+
+/* Software timer related definitions. */
+#define configUSE_TIMERS 1
+#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 2 )
+#define configTIMER_QUEUE_LENGTH 32
+#define configTIMER_TASK_STACK_DEPTH configMINIMAL_STACK_SIZE
+
+/* SMP port configuration (set by the RP2xxx SMP port of FreeRTOS) */
+#if FREE_RTOS_KERNEL_SMP
+#ifndef configNUMBER_OF_CORES
+#define configNUMBER_OF_CORES 1
+#endif
+#define configNUM_CORES configNUMBER_OF_CORES
+#define configTICK_CORE 0
+#define configRUN_MULTIPLE_PRIORITIES 1
+#if configNUMBER_OF_CORES > 1
+#define configUSE_CORE_AFFINITY 1
+#endif
+#define configUSE_PASSIVE_IDLE_HOOK 0
+#endif
+
+/* RP2040/RP2350 specific */
+#define configSUPPORT_PICO_SYNC_INTEROP 1
+#define configSUPPORT_PICO_TIME_INTEROP 1
+#define configUSE_DYNAMIC_EXCEPTION_HANDLERS 0
+
+/* Macros used in #if without #ifdef guards in port headers,
+ * must be explicitly defined to avoid -Wundef warnings. */
+#ifndef PICO_DIVIDER_DISABLE_INTERRUPTS
+#define PICO_DIVIDER_DISABLE_INTERRUPTS 0
+#endif
+#define portARMV8M_MINOR_VERSION 0
+
+#if defined(PICO_RP2350) && PICO_RP2350
+/* Cortex-M33 port configuration (RP2350). */
+#define configENABLE_MPU 0
+#define configENABLE_FPU 1
+#define configENABLE_MVE 0
+#define configENABLE_TRUSTZONE 0
+#define configRUN_FREERTOS_SECURE_ONLY 1
+#define configMAX_SYSCALL_INTERRUPT_PRIORITY 16
+#endif
+
+#include <assert.h>
+#define configASSERT(x) assert(x)
+
+/* Set the following definitions to 1 to include the API function, or zero
+to exclude the API function. */
+#define INCLUDE_vTaskPrioritySet 0
+#define INCLUDE_uxTaskPriorityGet 0
+#define INCLUDE_vTaskDelete 0
+#define INCLUDE_vTaskSuspend 1 // required for portMAX_DELAY
+#define INCLUDE_xResumeFromISR 0
+#define INCLUDE_vTaskDelayUntil 1
+#define INCLUDE_vTaskDelay 1
+#define INCLUDE_xTaskGetSchedulerState 0
+#define INCLUDE_xTaskGetCurrentTaskHandle 1
+#define INCLUDE_uxTaskGetStackHighWaterMark 0
+#define INCLUDE_xTaskGetIdleTaskHandle 0
+#define INCLUDE_xTimerGetTimerDaemonTaskHandle 0
+#define INCLUDE_pcTaskGetTaskName 0
+#define INCLUDE_eTaskGetState 0
+#define INCLUDE_xEventGroupSetBitFromISR 1
+#define INCLUDE_xTimerPendFunctionCall 1
+
+#endif /* FREERTOS_CONFIG_H */
diff --git a/hw/bsp/rp2040/family.c b/hw/bsp/rp2040/family.c
index b5a1375a2..a4642face 100644
--- a/hw/bsp/rp2040/family.c
+++ b/hw/bsp/rp2040/family.c
@@ -298,6 +298,20 @@ void board_init_after_tusb(void) {
// nothing to do
}
+//--------------------------------------------------------------------+
+// FreeRTOS hooks
+//--------------------------------------------------------------------+
+#if CFG_TUSB_OS == OPT_OS_FREERTOS
+#include "FreeRTOS.h"
+#include "task.h"
+
+void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName) {
+ (void) xTask;
+ (void) pcTaskName;
+ panic("FreeRTOS stack overflow: %s", pcTaskName);
+}
+#endif
+
void board_reset_to_bootloader(void) {
// not implemented
}
diff --git a/hw/bsp/rp2040/family.cmake b/hw/bsp/rp2040/family.cmake
index 2e2cd436a..6e88b9fa1 100644
--- a/hw/bsp/rp2040/family.cmake
+++ b/hw/bsp/rp2040/family.cmake
@@ -194,91 +194,71 @@ endif()
# Functions
#------------------------------------
function(family_add_default_example_warnings TARGET)
+ if (DEFINED PICO_TINYUSB_NO_EXAMPLE_WARNINGS)
+ return()
+ endif ()
+
# Apply warnings to all TinyUSB interface library sources as well as examples sources
# we cannot set compile options for target since it will not propagate to INTERFACE sources then picosdk files
+ # Remove -Werror from example sources so per-file warning suppressions can work.
+ # -Werror is kept on TinyUSB sources to catch real issues.
+ set(example_warn_flags ${WARN_FLAGS_${CMAKE_C_COMPILER_ID}})
+ list(REMOVE_ITEM example_warn_flags -Werror)
+
+ get_target_property(EXAMPLE_SOURCES ${TARGET} SOURCES)
+ set_source_files_properties(${EXAMPLE_SOURCES} PROPERTIES COMPILE_OPTIONS "${example_warn_flags}")
+
foreach(TINYUSB_TARGET IN ITEMS tinyusb_common_base tinyusb_device_base tinyusb_host_base tinyusb_host_max3421 tinyusb_bsp)
get_target_property(TINYUSB_SOURCES ${TINYUSB_TARGET} INTERFACE_SOURCES)
set_source_files_properties(${TINYUSB_SOURCES} PROPERTIES COMPILE_OPTIONS "${WARN_FLAGS_${CMAKE_C_COMPILER_ID}}")
- endforeach()
-
- # Also apply to example sources, but filter out any source files from lib/ (e.g. fatfs)
- get_target_property(EXAMPLE_SOURCES ${TARGET} SOURCES)
- set(FILTERED_SOURCES "")
- foreach(SOURCE_FILE IN LISTS EXAMPLE_SOURCES)
- string(FIND "${SOURCE_FILE}" "${TOP}/lib" FOUND_POS)
- if(FOUND_POS EQUAL -1)
- list(APPEND FILTERED_SOURCES ${SOURCE_FILE})
- endif()
- endforeach()
- set_source_files_properties(${FILTERED_SOURCES} PROPERTIES COMPILE_OPTIONS "${WARN_FLAGS_${CMAKE_C_COMPILER_ID}}")
+ endforeach()
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0 AND NO_WARN_RWX_SEGMENTS_SUPPORTED)
target_link_options(${TARGET} PRIVATE "LINKER:--no-warn-rwx-segments")
endif()
+ elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ target_compile_options(${TARGET} PRIVATE -Wno-unreachable-code)
+ endif ()
+endfunction()
- if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)
- target_compile_options(${TARGET} PRIVATE -Wconversion)
- endif()
-
- if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0)
- target_compile_options(${TARGET} PRIVATE -Wcast-function-type -Wstrict-overflow)
- endif()
-
- if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
- target_compile_options(${TARGET} PRIVATE -Wno-strict-aliasing)
- endif()
- endif()
+function(family_add_board BOARD_TARGET)
+ add_library(${BOARD_TARGET} INTERFACE)
endfunction()
-# TODO merge with family_configure_common from family_support.cmake
-function(family_configure_target TARGET RTOS)
- if (RTOS STREQUAL noos OR RTOS STREQUAL "")
- set(RTOS_SUFFIX "")
- else()
- set(RTOS_SUFFIX _${RTOS})
- endif()
- # export RTOS_SUFFIX to parent scope
- set(RTOS_SUFFIX ${RTOS_SUFFIX} PARENT_SCOPE)
+function(family_configure_example TARGET RTOS)
+ # Set OS per-target: FreeRTOS or Pico SDK
+ if (NOT DEFINED RTOS)
+ set(RTOS noos)
+ endif ()
- # compile define from command line
- if(DEFINED CFLAGS_CLI)
- separate_arguments(CFLAGS_CLI)
- target_compile_options(${TARGET} PUBLIC ${CFLAGS_CLI})
+ # Set OS for non-RTOS targets (RTOS targets get it from family_add_rtos)
+ if (RTOS STREQUAL noos)
+ target_compile_definitions(${TARGET} PUBLIC CFG_TUSB_OS=${TINYUSB_OPT_OS})
+ else ()
+ # remove CFG_TUSB_OS=OPT_OS_PICO from tinyusb_common_base to avoid redefinition
+ # NOTE: cannot remove it from interface declaration as pico-sdk use that
+ get_target_property(_defs tinyusb_common_base INTERFACE_COMPILE_DEFINITIONS)
+ list(REMOVE_ITEM _defs "CFG_TUSB_OS=${TINYUSB_OPT_OS}")
+ set_property(TARGET tinyusb_common_base PROPERTY INTERFACE_COMPILE_DEFINITIONS ${_defs})
endif()
+ family_configure_common(${TARGET} ${RTOS})
pico_add_extra_outputs(${TARGET})
pico_enable_stdio_uart(${TARGET} 1)
- target_link_options(${TARGET} PUBLIC "LINKER:-Map=$<TARGET_FILE:${TARGET}>.map")
- target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_board${RTOS_SUFFIX} tinyusb_additions)
+ target_link_options(${TARGET} PUBLIC "LINKER:-Map=$<TARGET_FILE:${TARGET}>.map")
+ target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_board tinyusb_additions)
- family_flash_openocd(${TARGET})
+ family_flash_openocd(${TARGET})
family_flash_jlink(${TARGET})
-
- # Generate linkermap target and post build. LINKERMAP_OPTION can be set with -D to change default options
- family_add_bloaty(${TARGET})
- family_add_linkermap(${TARGET})
- family_add_membrowse(${TARGET})
-endfunction()
-
-
-function(rp2040_family_configure_example_warnings TARGET)
- if (NOT PICO_TINYUSB_NO_EXAMPLE_WARNINGS)
- family_add_default_example_warnings(${TARGET})
- endif()
- if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
- target_compile_options(${TARGET} PRIVATE -Wno-unreachable-code)
- endif()
- suppress_tinyusb_warnings()
endfunction()
function(family_configure_device_example TARGET RTOS)
- family_configure_target(${TARGET} ${RTOS})
- target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_device${RTOS_SUFFIX})
- rp2040_family_configure_example_warnings(${TARGET})
+ family_configure_example(${TARGET} ${RTOS})
+ target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_device)
endfunction()
@@ -298,9 +278,8 @@ function(is_compiler_supported_by_pico_pio_usb OUTVAR)
endfunction()
function(family_configure_host_example TARGET RTOS)
- family_configure_target(${TARGET} ${RTOS})
- target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_host${RTOS_SUFFIX})
- rp2040_family_configure_example_warnings(${TARGET})
+ family_configure_example(${TARGET} ${RTOS})
+ target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_host)
# For rp2040 enable pico-pio-usb
if (TARGET tinyusb_pico_pio_usb)
@@ -319,10 +298,9 @@ endfunction()
function(family_configure_dual_usb_example TARGET RTOS)
- family_configure_target(${TARGET} ${RTOS})
+ family_configure_example(${TARGET} ${RTOS})
# require tinyusb_pico_pio_usb
- target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_device tinyusb_host tinyusb_pico_pio_usb )
- rp2040_family_configure_example_warnings(${TARGET})
+ target_link_libraries(${TARGET} PUBLIC pico_stdlib tinyusb_device tinyusb_host tinyusb_pico_pio_usb)
endfunction()
@@ -333,7 +311,6 @@ function(check_and_add_pico_pio_usb_support)
#------------------------------------
# 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()
@@ -389,54 +366,3 @@ function(family_initialize_project PROJECT DIR)
# 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)
- # some of these are pretty silly warnings only occurring in some older GCC versions 9 or prior
- if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
- if (CMAKE_C_COMPILER_VERSION VERSION_LESS 10.0)
- set(CONVERSION_WARNING_FILES
- ${PICO_TINYUSB_PATH}/src/tusb.c
- ${PICO_TINYUSB_PATH}/src/common/tusb_fifo.c
- ${PICO_TINYUSB_PATH}/src/device/usbd.c
- ${PICO_TINYUSB_PATH}/src/device/usbd_control.c
- ${PICO_TINYUSB_PATH}/src/host/usbh.c
- ${PICO_TINYUSB_PATH}/src/class/cdc/cdc_device.c
- ${PICO_TINYUSB_PATH}/src/class/cdc/cdc_host.c
- ${PICO_TINYUSB_PATH}/src/class/hid/hid_device.c
- ${PICO_TINYUSB_PATH}/src/class/hid/hid_host.c
- ${PICO_TINYUSB_PATH}/src/class/audio/audio_device.c
- ${PICO_TINYUSB_PATH}/src/class/dfu/dfu_device.c
- ${PICO_TINYUSB_PATH}/src/class/dfu/dfu_rt_device.c
- ${PICO_TINYUSB_PATH}/src/class/midi/midi_device.c
- ${PICO_TINYUSB_PATH}/src/class/usbtmc/usbtmc_device.c
- ${PICO_TINYUSB_PATH}/src/portable/raspberrypi/rp2040/hcd_rp2040.c
- )
- foreach(SOURCE_FILE IN LISTS CONVERSION_WARNING_FILES)
- set_source_files_properties(${SOURCE_FILE} PROPERTIES COMPILE_FLAGS "-Wno-conversion")
- endforeach()
- endif()
-
- if (TARGET tinyusb_pico_pio_usb)
- set_source_files_properties(
- ${PICO_TINYUSB_PATH}/hw/mcu/raspberry_pi/Pico-PIO-USB/src/pio_usb_device.c
- ${PICO_TINYUSB_PATH}/hw/mcu/raspberry_pi/Pico-PIO-USB/src/pio_usb.c
- ${PICO_TINYUSB_PATH}/hw/mcu/raspberry_pi/Pico-PIO-USB/src/pio_usb_host.c
- ${PICO_TINYUSB_PATH}/src/portable/raspberrypi/pio_usb/hcd_pio_usb.c
- PROPERTIES
- COMPILE_FLAGS "-Wno-conversion -Wno-cast-qual -Wno-attributes")
- endif()
- elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
- set_source_files_properties(
- ${PICO_TINYUSB_PATH}/src/class/cdc/cdc_device.c
- COMPILE_FLAGS "-Wno-unreachable-code")
- set_source_files_properties(
- ${PICO_TINYUSB_PATH}/src/class/cdc/cdc_host.c
- COMPILE_FLAGS "-Wno-unreachable-code-fallthrough")
- set_source_files_properties(
- ${PICO_TINYUSB_PATH}/lib/fatfs/source/ff.c
- PROPERTIES
- COMPILE_FLAGS "-Wno-cast-qual")
- endif()
-endfunction()